UNPKG

2.97 MBJavaScriptView Raw
1angular.module("search").constant("SEARCH_DATA", {"src":["C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy"],"data":[{"comment":"/**\r\n * @file Audio formats and audio APIs support detection. Contains the {@link CB_AudioDetector} static class.\r\n * @author Joan Alba Maldonado <workindalian@gmail.com>\r\n */","meta":{"filename":"CB_AudioDetector.js","lineno":1,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{}},"name":"CrossBase/audiovisual/audio/CB_AudioDetector.js","kind":"file","description":"<p>Audio formats and audio APIs support detection. Contains the {@link CB_AudioDetector} static class.</p>","preserveName":true,"author":["Joan Alba Maldonado <workindalian@gmail.com>"],"longname":"CrossBase/audiovisual/audio/CB_AudioDetector.js","scope":"global"},{"comment":"/**\r\n * Static class to detect audio API and formats supported. Possible audio APIs are \"WAAPI\" ([HTML5 Web Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API}), \"SM2\" ([SoundManager 2]{@link http://schillmania.com/projects/soundmanager2/}), \"ACMP\" ([Apache Cordova Media Plugin]{@link https://github.com/apache/cordova-plugin-media}) or \"AAPI\" ([HTML5 Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/audio}). It will return itself if it is tried to be instantiated.\r\n * @namespace\r\n */","meta":{"range":[731,789],"filename":"CB_AudioDetector.js","lineno":11,"columnno":4,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100000003","name":"CB_AudioDetector","type":"FunctionExpression"}},"description":"<p>Static class to detect audio API and formats supported. Possible audio APIs are &quot;WAAPI&quot; ([HTML5 Web Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API}), &quot;SM2&quot; ([SoundManager 2]{@link http://schillmania.com/projects/soundmanager2/}), &quot;ACMP&quot; ([Apache Cordova Media Plugin]{@link https://github.com/apache/cordova-plugin-media}) or &quot;AAPI&quot; ([HTML5 Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/audio}). It will return itself if it is tried to be instantiated.</p>","kind":"namespace","name":"CB_AudioDetector","longname":"CB_AudioDetector","scope":"global","params":[]},{"comment":"/**\r\n\t * Returns an array of strings with the audio formats that are supported (from an array if it is given) by the current client and ordered by support level. Uses the {@link CB_AudioDetector.isAudioFormatSupported} function internally.\r\n\t * @function\r\n\t * @param {array} [audioFormats=CB_Configuration.CrossBase.CB_AudioFileCache_PREFERRED_AUDIO_FORMATS] - An array of strings with the audio format or audio formats (they can include just the format as 'audio/ogg' or also the codec as for example 'audio/ogg; codecs=\"vorbis\"') that we want to check.\r\n\t * @param {array} [supportLevels=['probably', 'maybe']] - An array with the support level or support levels allowed. Two possible levels: \"probably\" and \"maybe\". The \"probably\" audio formats are more likely to be supported than the \"maybe\" ones.\r\n\t * @param {boolean} [dataURI=false] - Specifies whether we want to check the support for data URI audios or just for normal audio files.\r\n\t * @returns {array} Returns an array of strings with the audio formats that are supported (from an array if it is given) and ordered by support level.\r\n\t */","meta":{"range":[2362,5097],"filename":"CB_AudioDetector.js","lineno":39,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100000045","name":"CB_AudioDetector.getSupportedAudioFormats","type":"FunctionExpression","paramnames":["audioFormats","supportLevels","dataURI"]},"vars":{"audioFormats":"CB_AudioDetector.getSupportedAudioFormats~audioFormats","supportLevels":"CB_AudioDetector.getSupportedAudioFormats~supportLevels","supportedAudioFormats":"CB_AudioDetector.getSupportedAudioFormats~supportedAudioFormats","audioFormatsLength":"CB_AudioDetector.getSupportedAudioFormats~audioFormatsLength","supportLevelsLength":"CB_AudioDetector.getSupportedAudioFormats~supportLevelsLength","y":"CB_AudioDetector.getSupportedAudioFormats~y","x":"CB_AudioDetector.getSupportedAudioFormats~x","supportedAudioFormats[undefined]":"CB_AudioDetector.getSupportedAudioFormats~supportedAudioFormats.undefined]","CB_AudioDetector._getSupportedAudioFormatsReturnCache[undefined]":"CB_AudioDetector._getSupportedAudioFormatsReturnCache[undefined]","CB_AudioDetector._getSupportedAudioFormatsReturnCache[undefined][undefined]":"CB_AudioDetector._getSupportedAudioFormatsReturnCache[undefined][undefined]","CB_AudioDetector._getSupportedAudioFormatsReturnCache[undefined][undefined][undefined]":"CB_AudioDetector._getSupportedAudioFormatsReturnCache[undefined][undefined][undefined]"}},"description":"<p>Returns an array of strings with the audio formats that are supported (from an array if it is given) by the current client and ordered by support level. Uses the {@link CB_AudioDetector.isAudioFormatSupported} function internally.</p>","kind":"function","params":[{"type":{"names":["array"]},"optional":true,"defaultvalue":"CB_Configuration.CrossBase.CB_AudioFileCache_PREFERRED_AUDIO_FORMATS","description":"<p>An array of strings with the audio format or audio formats (they can include just the format as 'audio/ogg' or also the codec as for example 'audio/ogg; codecs=&quot;vorbis&quot;') that we want to check.</p>","name":"audioFormats"},{"type":{"names":["array"]},"optional":true,"defaultvalue":"['probably', 'maybe']","description":"<p>An array with the support level or support levels allowed. Two possible levels: &quot;probably&quot; and &quot;maybe&quot;. The &quot;probably&quot; audio formats are more likely to be supported than the &quot;maybe&quot; ones.</p>","name":"supportLevels"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>Specifies whether we want to check the support for data URI audios or just for normal audio files.</p>","name":"dataURI"}],"returns":[{"type":{"names":["array"]},"description":"<p>Returns an array of strings with the audio formats that are supported (from an array if it is given) and ordered by support level.</p>"}],"name":"getSupportedAudioFormats","longname":"CB_AudioDetector.getSupportedAudioFormats","memberof":"CB_AudioDetector","scope":"static"},{"comment":"/**\r\n\t * Returns the support level of a given audio format by the current client.\r\n\t * @function\r\n\t * @param {string} audioFormat - The audio format (it can include just the format as 'audio/ogg' or also the codec as for example 'audio/ogg; codecs=\"vorbis\"') that we want to check.\r\n\t * @param {boolean} [dataURI=false] - Specifies whether we want to check the support for data URI audios or just for normal audio files.\r\n\t * @returns {string} Returns the support level of the given audio format (it will return \"probably\", \"maybe\" or an empty string which means not supported). The \"probably\" audio formats are more likely to be supported than the \"maybe\" ones.\r\n\t * @todo Think about using MediaSource.isTypeSupported().\r\n\t * @todo Some web clients does not support data URIs for Audio element so we should take this into account.\r\n\t * @todo Take into account that data URIs may not be supported when WAAPI is being emulated.\r\n\t */","meta":{"range":[6149,8176],"filename":"CB_AudioDetector.js","lineno":107,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100000307","name":"CB_AudioDetector.isAudioFormatSupported","type":"FunctionExpression","paramnames":["audioFormat","dataURI"]},"vars":{"audioFormat":"CB_AudioDetector.isAudioFormatSupported~audioFormat","isSupported":"CB_AudioDetector.isAudioFormatSupported~isSupported","CB_AudioDetector._audioObject":"CB_AudioDetector._audioObject","CB_AudioDetector._isAudioFormatSupportedReturnCache[undefined]":"CB_AudioDetector._isAudioFormatSupportedReturnCache[undefined]","CB_AudioDetector._isAudioFormatSupportedReturnCache[undefined][undefined]":"CB_AudioDetector._isAudioFormatSupportedReturnCache[undefined][undefined]"}},"description":"<p>Returns the support level of a given audio format by the current client.</p>","kind":"function","params":[{"type":{"names":["string"]},"description":"<p>The audio format (it can include just the format as 'audio/ogg' or also the codec as for example 'audio/ogg; codecs=&quot;vorbis&quot;') that we want to check.</p>","name":"audioFormat"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>Specifies whether we want to check the support for data URI audios or just for normal audio files.</p>","name":"dataURI"}],"returns":[{"type":{"names":["string"]},"description":"<p>Returns the support level of the given audio format (it will return &quot;probably&quot;, &quot;maybe&quot; or an empty string which means not supported). The &quot;probably&quot; audio formats are more likely to be supported than the &quot;maybe&quot; ones.</p>"}],"todo":["Think about using MediaSource.isTypeSupported().","Some web clients does not support data URIs for Audio element so we should take this into account.","Take into account that data URIs may not be supported when WAAPI is being emulated."],"name":"isAudioFormatSupported","longname":"CB_AudioDetector.isAudioFormatSupported","memberof":"CB_AudioDetector","scope":"static"},{"comment":"/**\r\n\t * Returns whether a given audio API exists or not (without keeping into account whether it is supported or not). All existing ones are defined in {@link CB_Configuration.CrossBase.CB_AudioFileCache_PREFERRED_AUDIO_APIS}.\r\n\t * @function\r\n\t * @param {string} audioAPI - The audio API that we want to check. All existing ones are defined in {@link CB_Configuration.CrossBase.CB_AudioFileCache_PREFERRED_AUDIO_APIS}. For example: \"WAAPI\" ([HTML5 Web Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API}), \"SM2\" ([SoundManager 2]{@link http://schillmania.com/projects/soundmanager2/}), \"ACMP\" ([Apache Cordova Media Plugin]{@link https://github.com/apache/cordova-plugin-media}) or \"AAPI\" ([HTML5 Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/audio}).\r\n\t * @param {boolean} [sanitize=true] - If set to true, the \"audioAPI\" given will be trimmed and converted to upper case.\r\n\t * @returns {boolean} Returns whether the given audio API exists or not (without keeping into account whether it is supported or not).\r\n\t */","meta":{"range":[9267,9592],"filename":"CB_AudioDetector.js","lineno":163,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100000490","name":"CB_AudioDetector.APIExists","type":"FunctionExpression","paramnames":["audioAPI","sanitize"]},"vars":{"sanitize":"CB_AudioDetector.APIExists~sanitize","audioAPI":"CB_AudioDetector.APIExists~audioAPI"}},"description":"<p>Returns whether a given audio API exists or not (without keeping into account whether it is supported or not). All existing ones are defined in {@link CB_Configuration.CrossBase.CB_AudioFileCache_PREFERRED_AUDIO_APIS}.</p>","kind":"function","params":[{"type":{"names":["string"]},"description":"<p>The audio API that we want to check. All existing ones are defined in {@link CB_Configuration.CrossBase.CB_AudioFileCache_PREFERRED_AUDIO_APIS}. For example: &quot;WAAPI&quot; ([HTML5 Web Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API}), &quot;SM2&quot; ([SoundManager 2]{@link http://schillmania.com/projects/soundmanager2/}), &quot;ACMP&quot; ([Apache Cordova Media Plugin]{@link https://github.com/apache/cordova-plugin-media}) or &quot;AAPI&quot; ([HTML5 Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/audio}).</p>","name":"audioAPI"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":true,"description":"<p>If set to true, the &quot;audioAPI&quot; given will be trimmed and converted to upper case.</p>","name":"sanitize"}],"returns":[{"type":{"names":["boolean"]},"description":"<p>Returns whether the given audio API exists or not (without keeping into account whether it is supported or not).</p>"}],"name":"APIExists","longname":"CB_AudioDetector.APIExists","memberof":"CB_AudioDetector","scope":"static"},{"comment":"/**\r\n\t * Calculates and returns the preferred audio API (from an array if it is given) for the current client, if any.\r\n\t * @function\r\n\t * @param {array} [audioAPIs=CB_Configuration.CrossBase.CB_AudioFileCache_PREFERRED_AUDIO_APIS] - An array of strings with the audio APIs that we want to check, in order of preference. All existing ones are defined in {@link CB_Configuration.CrossBase.CB_AudioFileCache_PREFERRED_AUDIO_APIS}. For example: \"WAAPI\" ([HTML5 Web Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API}), \"SM2\" ([SoundManager 2]{@link http://schillmania.com/projects/soundmanager2/}), \"ACMP\" ([Apache Cordova Media Plugin]{@link https://github.com/apache/cordova-plugin-media}) or \"AAPI\" ([HTML5 Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/audio}).\r\n\t * @param {boolean} [allowEmulation=!!CB_Configuration[CB_BASE_NAME].CB_AudioDetector_allowEmulation_DEFAULT] - If set to true, it will also detect as supported emulated audio APIs (as \"WAAPI\" using [waapisim.js]{@link https://github.com/g200kg/WAAPISim} instead of supported natively).\r\n\t * @param {boolean} [returnOnEmpty=undefined] - If set to true and no audio API is supported, it will return the value of this parameter instead of null.\r\n\t * @returns {string|*} Returns a string with the preferred audio API (from an array if it is given) for the current client, if any. If no audio API is supported, it will return the value set in the \"returnOnEmpty\" parameter.\r\n\t */","meta":{"range":[11159,12587],"filename":"CB_AudioDetector.js","lineno":180,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100000543","name":"CB_AudioDetector.getPreferredAPI","type":"FunctionExpression","paramnames":["audioAPIs","allowEmulation","returnOnEmpty"]},"vars":{"audioAPIs":"CB_AudioDetector.getPreferredAPI~audioAPIs","allowEmulation":"CB_AudioDetector.getPreferredAPI~allowEmulation","CB_AudioDetector._getPreferredAPIReturnCache[undefined]":"CB_AudioDetector._getPreferredAPIReturnCache[undefined]","preferredAPI":"CB_AudioDetector.getPreferredAPI~preferredAPI","CB_AudioDetector._getPreferredAPIReturnCache[undefined][undefined]":"CB_AudioDetector._getPreferredAPIReturnCache[undefined][undefined]"}},"description":"<p>Calculates and returns the preferred audio API (from an array if it is given) for the current client, if any.</p>","kind":"function","params":[{"type":{"names":["array"]},"optional":true,"defaultvalue":"CB_Configuration.CrossBase.CB_AudioFileCache_PREFERRED_AUDIO_APIS","description":"<p>An array of strings with the audio APIs that we want to check, in order of preference. All existing ones are defined in {@link CB_Configuration.CrossBase.CB_AudioFileCache_PREFERRED_AUDIO_APIS}. For example: &quot;WAAPI&quot; ([HTML5 Web Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API}), &quot;SM2&quot; ([SoundManager 2]{@link http://schillmania.com/projects/soundmanager2/}), &quot;ACMP&quot; ([Apache Cordova Media Plugin]{@link https://github.com/apache/cordova-plugin-media}) or &quot;AAPI&quot; ([HTML5 Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/audio}).</p>","name":"audioAPIs"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":"!!CB_Configuration[CB_BASE_NAME].CB_AudioDetector_allowEmulation_DEFAULT","description":"<p>If set to true, it will also detect as supported emulated audio APIs (as &quot;WAAPI&quot; using [waapisim.js]{@link https://github.com/g200kg/WAAPISim} instead of supported natively).</p>","name":"allowEmulation"},{"type":{"names":["boolean"]},"optional":true,"description":"<p>If set to true and no audio API is supported, it will return the value of this parameter instead of null.</p>","name":"returnOnEmpty"}],"returns":[{"type":{"names":["string","*"]},"description":"<p>Returns a string with the preferred audio API (from an array if it is given) for the current client, if any. If no audio API is supported, it will return the value set in the &quot;returnOnEmpty&quot; parameter.</p>"}],"name":"getPreferredAPI","longname":"CB_AudioDetector.getPreferredAPI","memberof":"CB_AudioDetector","scope":"static"},{"comment":"/**\r\n\t * Calculates and returns an array with the audio APIs supported (from an array if it is given) for the current client, if any.\r\n\t * @function\r\n\t * @param {array} [audioAPIs=CB_Configuration.CrossBase.CB_AudioFileCache_PREFERRED_AUDIO_APIS] - An array of strings with the audio APIs that we want to check. All existing ones are defined in {@link CB_Configuration.CrossBase.CB_AudioFileCache_PREFERRED_AUDIO_APIS}. For example: \"WAAPI\" ([HTML5 Web Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API}), \"SM2\" ([SoundManager 2]{@link http://schillmania.com/projects/soundmanager2/}), \"ACMP\" ([Apache Cordova Media Plugin]{@link https://github.com/apache/cordova-plugin-media}) or \"AAPI\" ([HTML5 Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/audio}).\r\n\t * @param {boolean} [allowEmulation=!!CB_Configuration[CB_BASE_NAME].CB_AudioDetector_allowEmulation_DEFAULT] - If set to true, it will also detect as supported emulated audio APIs (as \"WAAPI\" using [waapisim.js]{@link https://github.com/g200kg/WAAPISim} instead of supported natively).\r\n\t * @returns {array} Returns an array with the audio APIs supported (from an array if it is given) for the current client, if any. If no audio API is supported, an empty array will be returned.\r\n\t */","meta":{"range":[13957,15633],"filename":"CB_AudioDetector.js","lineno":224,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100000695","name":"CB_AudioDetector.getSupportedAPIs","type":"FunctionExpression","paramnames":["audioAPIs","allowEmulation"]},"vars":{"audioAPIs":"CB_AudioDetector.getSupportedAPIs~audioAPIs","allowEmulation":"CB_AudioDetector.getSupportedAPIs~allowEmulation","CB_AudioDetector._getSupportedAPIsReturnCache[undefined]":"CB_AudioDetector._getSupportedAPIsReturnCache[undefined]","supportedAudioAPIs":"CB_AudioDetector.getSupportedAPIs~supportedAudioAPIs","audioAPIsLength":"CB_AudioDetector.getSupportedAPIs~audioAPIsLength","x":"CB_AudioDetector.getSupportedAPIs~x","supportedAudioAPIs[undefined]":"CB_AudioDetector.getSupportedAPIs~supportedAudioAPIs.undefined]","CB_AudioDetector._getSupportedAPIsReturnCache[undefined][undefined]":"CB_AudioDetector._getSupportedAPIsReturnCache[undefined][undefined]"}},"description":"<p>Calculates and returns an array with the audio APIs supported (from an array if it is given) for the current client, if any.</p>","kind":"function","params":[{"type":{"names":["array"]},"optional":true,"defaultvalue":"CB_Configuration.CrossBase.CB_AudioFileCache_PREFERRED_AUDIO_APIS","description":"<p>An array of strings with the audio APIs that we want to check. All existing ones are defined in {@link CB_Configuration.CrossBase.CB_AudioFileCache_PREFERRED_AUDIO_APIS}. For example: &quot;WAAPI&quot; ([HTML5 Web Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API}), &quot;SM2&quot; ([SoundManager 2]{@link http://schillmania.com/projects/soundmanager2/}), &quot;ACMP&quot; ([Apache Cordova Media Plugin]{@link https://github.com/apache/cordova-plugin-media}) or &quot;AAPI&quot; ([HTML5 Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/audio}).</p>","name":"audioAPIs"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":"!!CB_Configuration[CB_BASE_NAME].CB_AudioDetector_allowEmulation_DEFAULT","description":"<p>If set to true, it will also detect as supported emulated audio APIs (as &quot;WAAPI&quot; using [waapisim.js]{@link https://github.com/g200kg/WAAPISim} instead of supported natively).</p>","name":"allowEmulation"}],"returns":[{"type":{"names":["array"]},"description":"<p>Returns an array with the audio APIs supported (from an array if it is given) for the current client, if any. If no audio API is supported, an empty array will be returned.</p>"}],"name":"getSupportedAPIs","longname":"CB_AudioDetector.getSupportedAPIs","memberof":"CB_AudioDetector","scope":"static"},{"comment":"/**\r\n\t * Tells whether a given audio API is supported or not by the current client.\r\n\t * @function\r\n\t * @param {string} audioAPI - The audio API that we want to check. All existing ones are defined in {@link CB_Configuration.CrossBase.CB_AudioFileCache_PREFERRED_AUDIO_APIS}. For example: \"WAAPI\" ([HTML5 Web Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API}), \"SM2\" ([SoundManager 2]{@link http://schillmania.com/projects/soundmanager2/}), \"ACMP\" ([Apache Cordova Media Plugin]{@link https://github.com/apache/cordova-plugin-media}) or \"AAPI\" ([HTML5 Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/audio}).\r\n\t * @param {boolean} [allowEmulation=!!CB_Configuration[CB_BASE_NAME].CB_AudioDetector_allowEmulation_DEFAULT] - If set to true, it will detect as supported also emulated audio APIs (as \"WAAPI\" using [waapisim.js]{@link https://github.com/g200kg/WAAPISim} instead of supported natively).\r\n\t * @returns {boolean} Returns whether the given audio API is supported or not.\r\n\t * @todo Have into account allowEmulation and detect whether emulation is being used if so (for example, detect whether [waapisim.js]{@link https://github.com/g200kg/WAAPISim} is being used).\r\n\t */","meta":{"range":[16938,18985],"filename":"CB_AudioDetector.js","lineno":275,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100000873","name":"CB_AudioDetector.isAPISupported","type":"FunctionExpression","paramnames":["audioAPI","allowEmulation"]},"vars":{"audioAPI":"CB_AudioDetector.isAPISupported~audioAPI","allowEmulation":"CB_AudioDetector.isAPISupported~allowEmulation","CB_AudioDetector._isAPISupportedReturnCache[undefined]":"CB_AudioDetector._isAPISupportedReturnCache[undefined]","isSupported":"CB_AudioDetector.isAPISupported~isSupported","CB_AudioDetector._isAPISupportedReturnCache[undefined][undefined]":"CB_AudioDetector._isAPISupportedReturnCache[undefined][undefined]"}},"description":"<p>Tells whether a given audio API is supported or not by the current client.</p>","kind":"function","params":[{"type":{"names":["string"]},"description":"<p>The audio API that we want to check. All existing ones are defined in {@link CB_Configuration.CrossBase.CB_AudioFileCache_PREFERRED_AUDIO_APIS}. For example: &quot;WAAPI&quot; ([HTML5 Web Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API}), &quot;SM2&quot; ([SoundManager 2]{@link http://schillmania.com/projects/soundmanager2/}), &quot;ACMP&quot; ([Apache Cordova Media Plugin]{@link https://github.com/apache/cordova-plugin-media}) or &quot;AAPI&quot; ([HTML5 Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/audio}).</p>","name":"audioAPI"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":"!!CB_Configuration[CB_BASE_NAME].CB_AudioDetector_allowEmulation_DEFAULT","description":"<p>If set to true, it will detect as supported also emulated audio APIs (as &quot;WAAPI&quot; using [waapisim.js]{@link https://github.com/g200kg/WAAPISim} instead of supported natively).</p>","name":"allowEmulation"}],"returns":[{"type":{"names":["boolean"]},"description":"<p>Returns whether the given audio API is supported or not.</p>"}],"todo":["Have into account allowEmulation and detect whether emulation is being used if so (for example, detect whether [waapisim.js]{@link https://github.com/g200kg/WAAPISim} is being used)."],"name":"isAPISupported","longname":"CB_AudioDetector.isAPISupported","memberof":"CB_AudioDetector","scope":"static"},{"comment":"/**\r\n\t * Tells whether \"WAAPI\" ([HTML5 Web Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API}) is using emulation (through [WAAPISim]{@link https://github.com/g200kg/WAAPISim}) or not.\r\n\t * @function\r\n\t * @returns {boolean} Returns whether \"WAAPI\" ([HTML5 Web Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API}) is using emulation (through [WAAPISim]{@link https://github.com/g200kg/WAAPISim}) or not.\r\n\t */","meta":{"range":[19465,19580],"filename":"CB_AudioDetector.js","lineno":329,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100001064","name":"CB_AudioDetector.isWAAPIUsingEmulation","type":"FunctionExpression","paramnames":[]}},"description":"<p>Tells whether &quot;WAAPI&quot; ([HTML5 Web Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API}) is using emulation (through [WAAPISim]{@link https://github.com/g200kg/WAAPISim}) or not.</p>","kind":"function","returns":[{"type":{"names":["boolean"]},"description":"<p>Returns whether &quot;WAAPI&quot; ([HTML5 Web Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API}) is using emulation (through [WAAPISim]{@link https://github.com/g200kg/WAAPISim}) or not.</p>"}],"name":"isWAAPIUsingEmulation","longname":"CB_AudioDetector.isWAAPIUsingEmulation","memberof":"CB_AudioDetector","scope":"static"},{"comment":"/**\r\n\t * Tells whether [SoundManager 2]{@link http://schillmania.com/projects/soundmanager2/} is using [Adobe Flash (formerly Macromedia Flash)]{@link https://en.wikipedia.org/wiki/Adobe_Flash_Player} to emulate sound or not.\r\n\t * @function\r\n\t * @returns {boolean} Returns whether [SoundManager 2]{@link http://schillmania.com/projects/soundmanager2/} is using [Adobe Flash (formerly Macromedia Flash)]{@link https://en.wikipedia.org/wiki/Adobe_Flash_Player} to emulate sound or not.\r\n\t */","meta":{"range":[20083,20321],"filename":"CB_AudioDetector.js","lineno":340,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100001077","name":"CB_AudioDetector.isSM2UsingFlash","type":"FunctionExpression","paramnames":[]}},"description":"<p>Tells whether [SoundManager 2]{@link http://schillmania.com/projects/soundmanager2/} is using [Adobe Flash (formerly Macromedia Flash)]{@link https://en.wikipedia.org/wiki/Adobe_Flash_Player} to emulate sound or not.</p>","kind":"function","returns":[{"type":{"names":["boolean"]},"description":"<p>Returns whether [SoundManager 2]{@link http://schillmania.com/projects/soundmanager2/} is using [Adobe Flash (formerly Macromedia Flash)]{@link https://en.wikipedia.org/wiki/Adobe_Flash_Player} to emulate sound or not.</p>"}],"name":"isSM2UsingFlash","longname":"CB_AudioDetector.isSM2UsingFlash","memberof":"CB_AudioDetector","scope":"static"},{"comment":"/**\r\n * @file Audio files management, including abstraction for different audio APIs. Possible audio APIs are \"WAAPI\" ([HTML5 Web Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API}), \"SM2\" ([SoundManager 2]{@link http://schillmania.com/projects/soundmanager2/}), \"ACMP\" ([Apache Cordova Media Plugin]{@link https://github.com/apache/cordova-plugin-media}) or \"AAPI\" ([HTML5 Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/audio}). Contains the {@link CB_AudioFile} class.\r\n * @author Joan Alba Maldonado <workindalian@gmail.com>\r\n */","meta":{"filename":"CB_AudioFile.js","lineno":1,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{}},"name":"CrossBase/audiovisual/audio/CB_AudioFile.js","kind":"file","description":"<p>Audio files management, including abstraction for different audio APIs. Possible audio APIs are &quot;WAAPI&quot; ([HTML5 Web Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API}), &quot;SM2&quot; ([SoundManager 2]{@link http://schillmania.com/projects/soundmanager2/}), &quot;ACMP&quot; ([Apache Cordova Media Plugin]{@link https://github.com/apache/cordova-plugin-media}) or &quot;AAPI&quot; ([HTML5 Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/audio}). Contains the {@link CB_AudioFile} class.</p>","preserveName":true,"author":["Joan Alba Maldonado <workindalian@gmail.com>"],"longname":"CrossBase/audiovisual/audio/CB_AudioFile.js","scope":"global"},{"comment":"/**\r\n * The constructor is recommended to be called through a user-driven event (as onClick, onTouch, etc.) if the \"autoPlay\" option is set to true, as some clients may need this at least the first time in order to be able to play the audio.\r\n * @class\r\n * @classdesc Class to manage an audio file. Internally, it uses one audio API object which belongs to the audio API being used (when the audio API is changed, it keeps the old audio API objects just in case they are needed in the future when the audio API is changed again). Possible internal audio API objects are {@link CB_AudioFile_API.WAAPI} object for \"WAAPI\" ([HTML5 Web Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API}), {@link CB_AudioFile_API.SM2} object for \"SM2\" ([SoundManager 2]{@link http://schillmania.com/projects/soundmanager2/}), {@link CB_AudioFile_API.ACMP} object for \"ACMP\" ([Apache Cordova Media Plugin]{@link https://github.com/apache/cordova-plugin-media}) or {@link CB_AudioFile_API.AAPI} object for \"AAPI\" ([HTML5 Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/audio}).\r\n * @param {string} filePath - The path of the audio file or a data URI. NOTE: Only some clients with some audio APIs will support data URIs.\r\n * @param {string} [audioId='CB_AudioFile_' + CB_AudioFile._idUnique++] - Desired identifier for the audio object (can be a different element depending on the audio API used). If not provided, an automatic unique ID will be calculated. Note that it is not case sensitive and it should be unique for each object.\r\n * @param {CB_AudioFile.OPTIONS} [options={@link CB_AudioFile#DEFAULT_OPTIONS}] - Object with the desired options.\r\n * @param {string} [audioAPI=CB_AudioDetector.getPreferredAPI(undefined, false, null) || CB_AudioDetector.getPreferredAPI(undefined, true, null)] - The desired audio API to be used. If not provided, it will try to calculate the best one for the current client by calling the {@link CB_AudioDetector.getPreferredAPI} function internally. Audio API support will depend on the current client being used. All possible ones are defined in {@link CB_Configuration.CrossBase.CB_AudioFileCache_PREFERRED_AUDIO_APIS}. For example: \"WAAPI\" ([HTML5 Web Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API}), \"SM2\" ([SoundManager 2]{@link http://schillmania.com/projects/soundmanager2/}), \"ACMP\" ([Apache Cordova Media Plugin]{@link https://github.com/apache/cordova-plugin-media}) or \"AAPI\" ([HTML5 Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/audio}).\r\n * @param {function} [callbackOk] - Function with no parameters to be called when the audio has been loaded successfully, being \"this\" the {@link CB_AudioFile} object itself.\r\n * @param {function} [callbackError] - Function to be called if the audio has not been loaded successfully. The first and unique parameter will be a string describing the error found (if it could be determined), being \"this\" the {@link CB_AudioFile} object itself.\r\n * @returns {CB_AudioFile} Returns a new {@link CB_AudioFile} object.\r\n * @todo Do not allow to create one object with an \"id\" which has already been used (unless the value is undefined, null...). Note that the \"id\" is not case sensitive and it should be unique for each object.\r\n * @todo Send the {@link CB_AudioFile} object itself as a parameter when calling both \"callbackOk\" and \"callbackError\".\r\n * @todo Think about allowing to define 'useXHR' and 'useCache' options (used by {@link CB_AudioFile_API.WAAPI} objects).\r\n * @todo Method getCopy and static method filterProperties (similar to the ones from {@link CB_GraphicSprites} and {@link CB_GraphicSpritesScene}).\r\n */","meta":{"range":[4320,14150],"filename":"CB_AudioFile.js","lineno":23,"columnno":4,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100001114","name":"CB_AudioFile","type":"FunctionExpression"},"vars":{"CB_AudioFile.prototype.DEFAULT_VOLUME":"CB_AudioFile#DEFAULT_VOLUME","CB_AudioFile.prototype.DEFAULT_OPTIONS":"CB_AudioFile#DEFAULT_OPTIONS","this.loop":"CB_AudioFile#loop","this.volume":"CB_AudioFile#volume","this.id":"CB_AudioFile#id","this.filePath":"CB_AudioFile#filePath","this.audioAPI":"CB_AudioFile#audioAPI","this._onStopFunction":"CB_AudioFile#_onStopFunction","that":"CB_AudioFile~that","CB_AudioFile._audioFileObject_prototype":"CB_AudioFile._audioFileObject_prototype","":null,"CB_AudioFile._audioFileObject_prototype.volume":"CB_AudioFile._audioFileObject_prototype.volume","CB_AudioFile._audioFileObject_prototype.volumeBeforeMute":"CB_AudioFile._audioFileObject_prototype.volumeBeforeMute","this.audioFileObjects":"CB_AudioFile#audioFileObjects","this.audioFileObject":"CB_AudioFile#audioFileObject","this.audioFileObjectLast":"CB_AudioFile#audioFileObjectLast","this._loadingAudioFileObject":"CB_AudioFile#_loadingAudioFileObject","this._avoidDelayedPlayLast":"CB_AudioFile#_avoidDelayedPlayLast","this._allowedRecursiveDelayLast":"CB_AudioFile#_allowedRecursiveDelayLast","this._onLoadErrorLast":"CB_AudioFile#_onLoadErrorLast"}},"description":"<p>The constructor is recommended to be called through a user-driven event (as onClick, onTouch, etc.) if the &quot;autoPlay&quot; option is set to true, as some clients may need this at least the first time in order to be able to play the audio.</p>","kind":"class","classdesc":"<p>Class to manage an audio file. Internally, it uses one audio API object which belongs to the audio API being used (when the audio API is changed, it keeps the old audio API objects just in case they are needed in the future when the audio API is changed again). Possible internal audio API objects are {@link CB_AudioFile_API.WAAPI} object for &quot;WAAPI&quot; ([HTML5 Web Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API}), {@link CB_AudioFile_API.SM2} object for &quot;SM2&quot; ([SoundManager 2]{@link http://schillmania.com/projects/soundmanager2/}), {@link CB_AudioFile_API.ACMP} object for &quot;ACMP&quot; ([Apache Cordova Media Plugin]{@link https://github.com/apache/cordova-plugin-media}) or {@link CB_AudioFile_API.AAPI} object for &quot;AAPI&quot; ([HTML5 Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/audio}).</p>","params":[{"type":{"names":["string"]},"description":"<p>The path of the audio file or a data URI. NOTE: Only some clients with some audio APIs will support data URIs.</p>","name":"filePath"},{"type":{"names":["string"]},"optional":true,"defaultvalue":"'CB_AudioFile_' + CB_AudioFile._idUnique++","description":"<p>Desired identifier for the audio object (can be a different element depending on the audio API used). If not provided, an automatic unique ID will be calculated. Note that it is not case sensitive and it should be unique for each object.</p>","name":"audioId"},{"type":{"names":["CB_AudioFile.OPTIONS"]},"optional":true,"defaultvalue":"{@link CB_AudioFile#DEFAULT_OPTIONS}","description":"<p>Object with the desired options.</p>","name":"options"},{"type":{"names":["string"]},"optional":true,"defaultvalue":"CB_AudioDetector.getPreferredAPI(undefined, false, null) || CB_AudioDetector.getPreferredAPI(undefined, true, null)","description":"<p>The desired audio API to be used. If not provided, it will try to calculate the best one for the current client by calling the {@link CB_AudioDetector.getPreferredAPI} function internally. Audio API support will depend on the current client being used. All possible ones are defined in {@link CB_Configuration.CrossBase.CB_AudioFileCache_PREFERRED_AUDIO_APIS}. For example: &quot;WAAPI&quot; ([HTML5 Web Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API}), &quot;SM2&quot; ([SoundManager 2]{@link http://schillmania.com/projects/soundmanager2/}), &quot;ACMP&quot; ([Apache Cordova Media Plugin]{@link https://github.com/apache/cordova-plugin-media}) or &quot;AAPI&quot; ([HTML5 Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/audio}).</p>","name":"audioAPI"},{"type":{"names":["function"]},"optional":true,"description":"<p>Function with no parameters to be called when the audio has been loaded successfully, being &quot;this&quot; the {@link CB_AudioFile} object itself.</p>","name":"callbackOk"},{"type":{"names":["function"]},"optional":true,"description":"<p>Function to be called if the audio has not been loaded successfully. The first and unique parameter will be a string describing the error found (if it could be determined), being &quot;this&quot; the {@link CB_AudioFile} object itself.</p>","name":"callbackError"}],"returns":[{"type":{"names":["CB_AudioFile"]},"description":"<p>Returns a new {@link CB_AudioFile} object.</p>"}],"todo":["Do not allow to create one object with an \"id\" which has already been used (unless the value is undefined, null...). Note that the \"id\" is not case sensitive and it should be unique for each object.","Send the {@link CB_AudioFile} object itself as a parameter when calling both \"callbackOk\" and \"callbackError\".","Think about allowing to define 'useXHR' and 'useCache' options (used by {@link CB_AudioFile_API.WAAPI} objects).","Method getCopy and static method filterProperties (similar to the ones from {@link CB_GraphicSprites} and {@link CB_GraphicSpritesScene})."],"name":"CB_AudioFile","longname":"CB_AudioFile","scope":"global"},{"comment":"/**\r\n\t * Keeps the default volume. If the {@link CB_Configuration.CrossBase.CB_AudioFile_AudioFileCache_USE_SPEAKER_VOLUME_AS_DEFAULT} property is true, this will keep the result of calling the {@link CB_Speaker.getVolume} function. Otherwise, it will use the value of the {@link CB_Configuration.CrossBase.CB_Speaker_DEFAULT_VOLUME} variable.\r\n\t *\t@constant\r\n\t * @type {number}\r\n\t * @default CB_Configuration.CrossBase.CB_AudioFile_AudioFileCache_USE_SPEAKER_VOLUME_AS_DEFAULT ? CB_Speaker.getVolume() : CB_Configuration.CrossBase.CB_Speaker_DEFAULT_VOLUME\r\n\t */","meta":{"range":[5270,5482],"filename":"CB_AudioFile.js","lineno":35,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100001144","name":"CB_AudioFile.prototype.DEFAULT_VOLUME","type":"ConditionalExpression","value":"","paramnames":[]}},"description":"<p>Keeps the default volume. If the {@link CB_Configuration.CrossBase.CB_AudioFile_AudioFileCache_USE_SPEAKER_VOLUME_AS_DEFAULT} property is true, this will keep the result of calling the {@link CB_Speaker.getVolume} function. Otherwise, it will use the value of the {@link CB_Configuration.CrossBase.CB_Speaker_DEFAULT_VOLUME} variable.</p>","kind":"constant","type":{"names":["number"]},"defaultvalue":"CB_Configuration.CrossBase.CB_AudioFile_AudioFileCache_USE_SPEAKER_VOLUME_AS_DEFAULT ? CB_Speaker.getVolume() : CB_Configuration.CrossBase.CB_Speaker_DEFAULT_VOLUME","name":"DEFAULT_VOLUME","longname":"CB_AudioFile#DEFAULT_VOLUME","memberof":"CB_AudioFile","scope":"instance"},{"comment":"/**\r\n\t * Keeps the default options when an object is created. Format: { autoLoad: boolean, autoPlay: boolean, loop: boolean, volume: number }.\r\n\t *\t@constant\r\n\t * @type {CB_AudioFile.OPTIONS}\r\n\t * @default { autoLoad: true, autoPlay: false, loop: false, volume: [CB_AudioFile.prototype.DEFAULT_VOLUME]{@link CB_AudioFile#DEFAULT_VOLUME} }\r\n\t */","meta":{"range":[5838,5974],"filename":"CB_AudioFile.js","lineno":43,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100001166","name":"CB_AudioFile.prototype.DEFAULT_OPTIONS","type":"ObjectExpression","value":"{\"autoLoad\":true,\"autoPlay\":false,\"loop\":false,\"volume\":\"\"}","paramnames":[]}},"description":"<p>Keeps the default options when an object is created. Format: { autoLoad: boolean, autoPlay: boolean, loop: boolean, volume: number }.</p>","kind":"constant","type":{"names":["CB_AudioFile.OPTIONS"]},"defaultvalue":"{ autoLoad: true, autoPlay: false, loop: false, volume: [CB_AudioFile.prototype.DEFAULT_VOLUME]{@link CB_AudioFile#DEFAULT_VOLUME} }","name":"DEFAULT_OPTIONS","longname":"CB_AudioFile#DEFAULT_OPTIONS","memberof":"CB_AudioFile","scope":"instance"},{"comment":"/**\r\n * Object with the options for an audio file. The format is the following one: { autoLoad: boolean, autoPlay: boolean, loop: boolean, volume: number }.\r\n * @memberof CB_AudioFile\r\n * @typedef {Object} CB_AudioFile.OPTIONS\r\n * @property {boolean} [autoLoad={@link CB_AudioFile#DEFAULT_OPTIONS}.autoLoad] - Value which will be used as the \"autoLoad\" parameter when calling the {@link CB_AudioFile#setAudioAPI} method internally (when the constructor is called).\r\n * @property {boolean} [autoPlay={@link CB_AudioFile#DEFAULT_OPTIONS}.autoPlay] - Value which will be used as the \"autoPlay\" parameter when calling the {@link CB_AudioFile#setAudioAPI} method internally (when the constructor is called).\r\n * @property {boolean} [loop={@link CB_AudioFile#DEFAULT_OPTIONS}.loop] - Value that will be used for the {@link CB_AudioFile#loop} property.\r\n * @property {number} [volume={@link CB_AudioFile#DEFAULT_OPTIONS}.volume] - The desired volume (from 0 to the maximum value, where the maximum value will be the returning value of calling the {@link CB_Speaker.getVolume} function if the {@link CB_Configuration.CrossBase.CB_AudioFile_AudioFileCache_USE_SPEAKER_VOLUME_AS_MAXIMUM} property is set to true or it will be 100 otherwise) that will be used for the {@link CB_AudioFile#volume} property.\r\n */","meta":{"filename":"CB_AudioFile.js","lineno":185,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{}},"description":"<p>Object with the options for an audio file. The format is the following one: { autoLoad: boolean, autoPlay: boolean, loop: boolean, volume: number }.</p>","memberof":"CB_AudioFile","kind":"typedef","name":"OPTIONS","type":{"names":["Object"]},"properties":[{"type":{"names":["boolean"]},"optional":true,"defaultvalue":"{@link CB_AudioFile#DEFAULT_OPTIONS}.autoLoad","description":"<p>Value which will be used as the &quot;autoLoad&quot; parameter when calling the {@link CB_AudioFile#setAudioAPI} method internally (when the constructor is called).</p>","name":"autoLoad"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":"{@link CB_AudioFile#DEFAULT_OPTIONS}.autoPlay","description":"<p>Value which will be used as the &quot;autoPlay&quot; parameter when calling the {@link CB_AudioFile#setAudioAPI} method internally (when the constructor is called).</p>","name":"autoPlay"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":"{@link CB_AudioFile#DEFAULT_OPTIONS}.loop","description":"<p>Value that will be used for the {@link CB_AudioFile#loop} property.</p>","name":"loop"},{"type":{"names":["number"]},"optional":true,"defaultvalue":"{@link CB_AudioFile#DEFAULT_OPTIONS}.volume","description":"<p>The desired volume (from 0 to the maximum value, where the maximum value will be the returning value of calling the {@link CB_Speaker.getVolume} function if the {@link CB_Configuration.CrossBase.CB_AudioFile_AudioFileCache_USE_SPEAKER_VOLUME_AS_MAXIMUM} property is set to true or it will be 100 otherwise) that will be used for the {@link CB_AudioFile#volume} property.</p>","name":"volume"}],"longname":"CB_AudioFile.OPTIONS","scope":"static"},{"comment":"/**\r\n * Status value for an audio file which is unloaded. Can be used to compare the value returned by the {@link CB_AudioFile#getStatus} method. Recommended for internal usage only.\r\n *\t@constant\r\n * @type {integer}\r\n * @default 0\r\n */","meta":{"range":[15807,15832],"filename":"CB_AudioFile.js","lineno":205,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100001494","name":"CB_AudioFile.UNLOADED","type":"Literal","value":0,"paramnames":[]}},"description":"<p>Status value for an audio file which is unloaded. Can be used to compare the value returned by the {@link CB_AudioFile#getStatus} method. Recommended for internal usage only.</p>","kind":"constant","type":{"names":["integer"]},"defaultvalue":"0","name":"UNLOADED","longname":"CB_AudioFile.UNLOADED","memberof":"CB_AudioFile","scope":"static"},{"comment":"/**\r\n * Status value for an audio file which is loading. Can be used to compare the value returned by the {@link CB_AudioFile#getStatus} method. Recommended for internal usage only.\r\n *\t@constant\r\n * @type {integer}\r\n * @default\r\n */","meta":{"range":[16074,16098],"filename":"CB_AudioFile.js","lineno":213,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100001500","name":"CB_AudioFile.LOADING","type":"Literal","value":1,"paramnames":[]}},"description":"<p>Status value for an audio file which is loading. Can be used to compare the value returned by the {@link CB_AudioFile#getStatus} method. Recommended for internal usage only.</p>","kind":"constant","type":{"names":["integer"]},"defaultvalue":1,"name":"LOADING","longname":"CB_AudioFile.LOADING","memberof":"CB_AudioFile","scope":"static"},{"comment":"/**\r\n * Status value for an audio file which has been not checked yet. Can be used to compare the value returned by the {@link CB_AudioFile#getStatus} method. Recommended for internal usage only.\r\n *\t@constant\r\n * @type {integer}\r\n * @default\r\n */","meta":{"range":[16354,16380],"filename":"CB_AudioFile.js","lineno":221,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100001506","name":"CB_AudioFile.UNCHECKED","type":"Literal","value":2,"paramnames":[]}},"description":"<p>Status value for an audio file which has been not checked yet. Can be used to compare the value returned by the {@link CB_AudioFile#getStatus} method. Recommended for internal usage only.</p>","kind":"constant","type":{"names":["integer"]},"defaultvalue":2,"name":"UNCHECKED","longname":"CB_AudioFile.UNCHECKED","memberof":"CB_AudioFile","scope":"static"},{"comment":"/**\r\n * Status value for an audio file which is being checked currently. Can be used to compare the value returned by the {@link CB_AudioFile#getStatus} method. Recommended for internal usage only.\r\n *\t@constant\r\n * @type {integer}\r\n * @default\r\n */","meta":{"range":[16638,16663],"filename":"CB_AudioFile.js","lineno":229,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100001512","name":"CB_AudioFile.CHECKING","type":"Literal","value":3,"paramnames":[]}},"description":"<p>Status value for an audio file which is being checked currently. Can be used to compare the value returned by the {@link CB_AudioFile#getStatus} method. Recommended for internal usage only.</p>","kind":"constant","type":{"names":["integer"]},"defaultvalue":3,"name":"CHECKING","longname":"CB_AudioFile.CHECKING","memberof":"CB_AudioFile","scope":"static"},{"comment":"/**\r\n * Status value for an audio file which has been loaded. Can be used to compare the value returned by the {@link CB_AudioFile#getStatus} method. Recommended for internal usage only.\r\n *\t@constant\r\n * @type {integer}\r\n * @default\r\n */","meta":{"range":[16910,16933],"filename":"CB_AudioFile.js","lineno":237,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100001518","name":"CB_AudioFile.LOADED","type":"Literal","value":4,"paramnames":[]}},"description":"<p>Status value for an audio file which has been loaded. Can be used to compare the value returned by the {@link CB_AudioFile#getStatus} method. Recommended for internal usage only.</p>","kind":"constant","type":{"names":["integer"]},"defaultvalue":4,"name":"LOADED","longname":"CB_AudioFile.LOADED","memberof":"CB_AudioFile","scope":"static"},{"comment":"/**\r\n * Status value for an audio file which failed to be loaded or failed for any other reason. Can be used to compare the value returned by the {@link CB_AudioFile#getStatus} method. Recommended for internal usage only.\r\n *\t@constant\r\n * @type {integer}\r\n * @default\r\n */","meta":{"range":[17215,17238],"filename":"CB_AudioFile.js","lineno":245,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100001524","name":"CB_AudioFile.FAILED","type":"Literal","value":5,"paramnames":[]}},"description":"<p>Status value for an audio file which failed to be loaded or failed for any other reason. Can be used to compare the value returned by the {@link CB_AudioFile#getStatus} method. Recommended for internal usage only.</p>","kind":"constant","type":{"names":["integer"]},"defaultvalue":5,"name":"FAILED","longname":"CB_AudioFile.FAILED","memberof":"CB_AudioFile","scope":"static"},{"comment":"/**\r\n * Status value for an audio file which has been aborted. This will happen when the audio file has been destroyed with the {@link CB_AudioFile#destructor} method. Can be used to compare the value returned by the {@link CB_AudioFile#getStatus} method. Recommended for internal usage only.\r\n *\t@constant\r\n * @type {integer}\r\n * @default\r\n */","meta":{"range":[17591,17615],"filename":"CB_AudioFile.js","lineno":253,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100001530","name":"CB_AudioFile.ABORTED","type":"Literal","value":6,"paramnames":[]}},"description":"<p>Status value for an audio file which has been aborted. This will happen when the audio file has been destroyed with the {@link CB_AudioFile#destructor} method. Can be used to compare the value returned by the {@link CB_AudioFile#getStatus} method. Recommended for internal usage only.</p>","kind":"constant","type":{"names":["integer"]},"defaultvalue":6,"name":"ABORTED","longname":"CB_AudioFile.ABORTED","memberof":"CB_AudioFile","scope":"static"},{"comment":"/**\r\n * Destroys the audio file object and frees memory. Sets its current status to ABORTED ({@link CB_AudioFile.ABORTED} value).\r\n * @function\r\n * @param {boolean} [stopSound=false] - If set to true, it will also call the \"stop\" method of the internal audio file object for the current API (stored in the {@link CB_AudioFile#audioFileObject} property). This method has the same parameters as the {@link CB_AudioFile#stop} method.\r\n * @param {boolean} [keepStoppedUnaltered=false] - Used internally as the \"keepStoppedUnaltered\" parameter to call the \"stop\" method of the internal audio file object for the current API (stored in the {@link CB_AudioFile#audioFileObject} property). This method has the same parameters as the {@link CB_AudioFile#stop} method. If the \"stopSound\" parameter is not set to true, this parameter will be ignored as the \"stop\" method will not be called.\r\n * @param {boolean} [avoidOnStop=false] - Used internally as the \"avoidOnStop\" parameter to call the \"stop\" method of the internal audio file object for the current API (stored in the {@link CB_AudioFile#audioFileObject} property). This method has the same parameters as the {@link CB_AudioFile#stop} method. If the \"stopSound\" parameter is not set to true, this parameter will be ignored as the \"stop\" method will not be called.\r\n * @param {boolean} [forceOnStop=false] - Used internally as the \"forceOnStop\" parameter to call the \"stop\" method of the internal audio file object for the current API (stored in the {@link CB_AudioFile#audioFileObject} property). This method has the same parameters as the {@link CB_AudioFile#stop} method. If the \"stopSound\" parameter is not set to true, this parameter will be ignored as the \"stop\" method will not be called.\r\n */","meta":{"range":[20845,21168],"filename":"CB_AudioFile.js","lineno":299,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100001732","name":"CB_AudioFile.prototype.destructor","type":"FunctionExpression","paramnames":["stopSound","keepStoppedUnaltered","avoidOnStop","forceOnStop"]},"vars":{"this.audioFileObject":"CB_AudioFile#audioFileObject","this.audioFileObject.status":"CB_AudioFile#audioFileObject.status"}},"description":"<p>Destroys the audio file object and frees memory. Sets its current status to ABORTED ({@link CB_AudioFile.ABORTED} value).</p>","kind":"function","params":[{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If set to true, it will also call the &quot;stop&quot; method of the internal audio file object for the current API (stored in the {@link CB_AudioFile#audioFileObject} property). This method has the same parameters as the {@link CB_AudioFile#stop} method.</p>","name":"stopSound"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>Used internally as the &quot;keepStoppedUnaltered&quot; parameter to call the &quot;stop&quot; method of the internal audio file object for the current API (stored in the {@link CB_AudioFile#audioFileObject} property). This method has the same parameters as the {@link CB_AudioFile#stop} method. If the &quot;stopSound&quot; parameter is not set to true, this parameter will be ignored as the &quot;stop&quot; method will not be called.</p>","name":"keepStoppedUnaltered"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>Used internally as the &quot;avoidOnStop&quot; parameter to call the &quot;stop&quot; method of the internal audio file object for the current API (stored in the {@link CB_AudioFile#audioFileObject} property). This method has the same parameters as the {@link CB_AudioFile#stop} method. If the &quot;stopSound&quot; parameter is not set to true, this parameter will be ignored as the &quot;stop&quot; method will not be called.</p>","name":"avoidOnStop"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>Used internally as the &quot;forceOnStop&quot; parameter to call the &quot;stop&quot; method of the internal audio file object for the current API (stored in the {@link CB_AudioFile#audioFileObject} property). This method has the same parameters as the {@link CB_AudioFile#stop} method. If the &quot;stopSound&quot; parameter is not set to true, this parameter will be ignored as the &quot;stop&quot; method will not be called.</p>","name":"forceOnStop"}],"name":"destructor","longname":"CB_AudioFile#destructor","memberof":"CB_AudioFile","scope":"instance"},{"comment":"/**\r\n * Sets the desired audio API. This method will also be called automatically by the constructor. If the \"autoLoad\" parameter is set to true, it will call the {@link CB_AudioFile#load} method internally, changing the audio API on-the-fly, and the audio will try to continue playing if it was playing at the moment of calling this method. Check the {@link CB_AudioFile#load} method documentation for more information. If the \"autoLoad\" parameter is set to true, it is recommended to be called through a user-driven event (as onClick, onTouch, etc.), as some clients may need this at least the first time in order to be able to play the audio. The audio API used will be stored in the {@link CB_AudioFile#audioAPI} property.\r\n * @function\r\n * @param {string} [audioAPI=CB_AudioDetector.getPreferredAPI(undefined, false, null) || CB_AudioDetector.getPreferredAPI(undefined, true, null)] - The desired audio API to be used. If not provided, it will try to calculate the best one for the current client by calling the {@link CB_AudioDetector.getPreferredAPI} function internally. Audio API support will depend on the current client being used. All possible ones are defined in {@link CB_Configuration.CrossBase.CB_AudioFileCache_PREFERRED_AUDIO_APIS}. For example: \"WAAPI\" ([HTML5 Web Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API}), \"SM2\" ([SoundManager 2]{@link http://schillmania.com/projects/soundmanager2/}), \"ACMP\" ([Apache Cordova Media Plugin]{@link https://github.com/apache/cordova-plugin-media}) or \"AAPI\" ([HTML5 Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/audio}). Used internally as the \"audioAPI\" parameter when calling the {@link CB_AudioFile#load} method internally (only when the \"autoLoad\" parameter is set to true).\r\n * @param {string} [autoLoad=true] - If set to false, it will not call the {@link CB_AudioFile#load} method internally and will only set the {@link CB_AudioFile#audioAPI} property (not recommended).\r\n * @param {string} [autoPlay=false] - Used internally as the \"autoPlay\" parameter when calling the {@link CB_AudioFile#load} method internally (only when the \"autoLoad\" parameter is set to true).\r\n * @param {function} [callbackOk] - Function with no parameters to be called when the audio has been loaded successfully, being \"this\" the {@link CB_AudioFile} object itself. Used internally as the \"callbackOk\" parameter when calling the {@link CB_AudioFile#load} method internally (only when the \"autoLoad\" parameter is set to true).\r\n * @param {function} [callbackError] - Function to be called if the audio has not been loaded successfully. The first and unique parameter will be a string describing the error found (if it could be determined), being \"this\" the {@link CB_AudioFile} object itself. Used internally as the \"callbackError\" parameter when calling the {@link CB_AudioFile#load} method internally (only when the \"autoLoad\" parameter is set to true).\r\n * @param {string} [ignoreOldValues=false] - Used internally as the \"ignoreOldValues\" parameter when calling the {@link CB_AudioFile#load} method internally (only when the \"autoLoad\" parameter is set to true).\r\n * @param {string} [filePath={@link CB_AudioFile#filePath}] - Used internally as the \"filePath\" parameter when calling the {@link CB_AudioFile#load} method internally (only when the \"autoLoad\" parameter is set to true).\r\n * @param {string} [forceReload=false] - Used internally as the \"forceReload\" parameter when calling the {@link CB_AudioFile#load} method internally (only when the \"autoLoad\" parameter is set to true).\r\n * @returns {string} Returns the desired audio API that has been tried to set, in upper case (successfully or not).\r\n * @todo Think about using the \"forceReload\" just after the \"callbackError\" to match the parameter order of the \"load\" method of all the audio API objects.\r\n */","meta":{"range":[25063,26729],"filename":"CB_AudioFile.js","lineno":321,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100001774","name":"CB_AudioFile.prototype.setAudioAPI","type":"FunctionExpression","paramnames":["audioAPI","autoLoad","autoPlay","callbackOk","callbackError","ignoreOldValues","filePath","forceReload"]},"vars":{"audioAPI":"CB_AudioFile#setAudioAPI~audioAPI","autoLoad":"CB_AudioFile#setAudioAPI~autoLoad","this.audioAPI":"CB_AudioFile#audioAPI"}},"description":"<p>Sets the desired audio API. This method will also be called automatically by the constructor. If the &quot;autoLoad&quot; parameter is set to true, it will call the {@link CB_AudioFile#load} method internally, changing the audio API on-the-fly, and the audio will try to continue playing if it was playing at the moment of calling this method. Check the {@link CB_AudioFile#load} method documentation for more information. If the &quot;autoLoad&quot; parameter is set to true, it is recommended to be called through a user-driven event (as onClick, onTouch, etc.), as some clients may need this at least the first time in order to be able to play the audio. The audio API used will be stored in the {@link CB_AudioFile#audioAPI} property.</p>","kind":"function","params":[{"type":{"names":["string"]},"optional":true,"defaultvalue":"CB_AudioDetector.getPreferredAPI(undefined, false, null) || CB_AudioDetector.getPreferredAPI(undefined, true, null)","description":"<p>The desired audio API to be used. If not provided, it will try to calculate the best one for the current client by calling the {@link CB_AudioDetector.getPreferredAPI} function internally. Audio API support will depend on the current client being used. All possible ones are defined in {@link CB_Configuration.CrossBase.CB_AudioFileCache_PREFERRED_AUDIO_APIS}. For example: &quot;WAAPI&quot; ([HTML5 Web Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API}), &quot;SM2&quot; ([SoundManager 2]{@link http://schillmania.com/projects/soundmanager2/}), &quot;ACMP&quot; ([Apache Cordova Media Plugin]{@link https://github.com/apache/cordova-plugin-media}) or &quot;AAPI&quot; ([HTML5 Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/audio}). Used internally as the &quot;audioAPI&quot; parameter when calling the {@link CB_AudioFile#load} method internally (only when the &quot;autoLoad&quot; parameter is set to true).</p>","name":"audioAPI"},{"type":{"names":["string"]},"optional":true,"defaultvalue":true,"description":"<p>If set to false, it will not call the {@link CB_AudioFile#load} method internally and will only set the {@link CB_AudioFile#audioAPI} property (not recommended).</p>","name":"autoLoad"},{"type":{"names":["string"]},"optional":true,"defaultvalue":false,"description":"<p>Used internally as the &quot;autoPlay&quot; parameter when calling the {@link CB_AudioFile#load} method internally (only when the &quot;autoLoad&quot; parameter is set to true).</p>","name":"autoPlay"},{"type":{"names":["function"]},"optional":true,"description":"<p>Function with no parameters to be called when the audio has been loaded successfully, being &quot;this&quot; the {@link CB_AudioFile} object itself. Used internally as the &quot;callbackOk&quot; parameter when calling the {@link CB_AudioFile#load} method internally (only when the &quot;autoLoad&quot; parameter is set to true).</p>","name":"callbackOk"},{"type":{"names":["function"]},"optional":true,"description":"<p>Function to be called if the audio has not been loaded successfully. The first and unique parameter will be a string describing the error found (if it could be determined), being &quot;this&quot; the {@link CB_AudioFile} object itself. Used internally as the &quot;callbackError&quot; parameter when calling the {@link CB_AudioFile#load} method internally (only when the &quot;autoLoad&quot; parameter is set to true).</p>","name":"callbackError"},{"type":{"names":["string"]},"optional":true,"defaultvalue":false,"description":"<p>Used internally as the &quot;ignoreOldValues&quot; parameter when calling the {@link CB_AudioFile#load} method internally (only when the &quot;autoLoad&quot; parameter is set to true).</p>","name":"ignoreOldValues"},{"type":{"names":["string"]},"optional":true,"defaultvalue":"{@link CB_AudioFile#filePath}","description":"<p>Used internally as the &quot;filePath&quot; parameter when calling the {@link CB_AudioFile#load} method internally (only when the &quot;autoLoad&quot; parameter is set to true).</p>","name":"filePath"},{"type":{"names":["string"]},"optional":true,"defaultvalue":false,"description":"<p>Used internally as the &quot;forceReload&quot; parameter when calling the {@link CB_AudioFile#load} method internally (only when the &quot;autoLoad&quot; parameter is set to true).</p>","name":"forceReload"}],"returns":[{"type":{"names":["string"]},"description":"<p>Returns the desired audio API that has been tried to set, in upper case (successfully or not).</p>"}],"todo":["Think about using the \"forceReload\" just after the \"callbackError\" to match the parameter order of the \"load\" method of all the audio API objects."],"name":"setAudioAPI","longname":"CB_AudioFile#setAudioAPI","memberof":"CB_AudioFile","scope":"instance"},{"comment":"/**\r\n * Loads the desired audio file with the desired options. Recommended to be called through a user-driven event (as onClick, onTouch, etc.), as some clients may need this at least the first time in order to be able to play the audio. This method will be called automatically if the \"autoLoad\" option was set to true when calling the {@link CB_AudioFile#setAudioAPI} method. The audio API used will be stored in the {@link CB_AudioFile#audioAPI} property.\r\n * When this method is called, if the \"status\" property of the audio API object already has the \"LOADED\" status (defined in the {@link CB_AudioFile.LOADED} constant) and the \"forceReload\" parameter is not set to true, it will exit calling the given \"callbackOk\" function (if any) immediately. Otherwise, regardless the status, the status will be set to \"LOADING\" (defined in the {@link CB_AudioFile.LOADING} constant). After it, it will reach the \"UNCHECKED\" (defined in the {@link CB_AudioFile.UNCHECKED} constant). If the \"autoPlay\" parameter is not set to true, this will be the final status (and it will be necessary to call the \"checkPlaying\" method of the audio API object after it). After it and only if the \"autoPlay\" is set to true, as the \"checkPlaying\" method of the audio API object will be called internally, it will have the \"CHECKING\" status (defined in the {@link CB_AudioFile.CHECKING} constant) and finally the \"LOADED\" status (defined in the {@link CB_AudioFile.LOADED} constant) if all goes well.\r\n * Although it is not recommended to do so, if this method is called when the audio API object has the \"UNCHECKED\" status (defined in the {@link CB_AudioFile.UNCHECKED} constant), it will call the \"checkPlaying\" method of the audio API object internally.\r\n * Internally, it can use the {@link CB_AudioFile#audioFileObjects} property as a cache.\r\n * @function\r\n * @param {string} [filePath={@link CB_AudioFile#filePath}] - The path of the audio file or a data URI. NOTE: Only some clients with some audio APIs will support data URIs.\r\n * @param {string} [audioAPI={@link CB_AudioFile#audioAPI}] - The desired audio API to be used. If not provided, it will try to use the previously-set one (in the {@link CB_AudioFile#audioAPI} property). All possible ones are defined in {@link CB_Configuration.CrossBase.CB_AudioFileCache_PREFERRED_AUDIO_APIS}. For example: \"WAAPI\" ([HTML5 Web Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API}), \"SM2\" ([SoundManager 2]{@link http://schillmania.com/projects/soundmanager2/}), \"ACMP\" ([Apache Cordova Media Plugin]{@link https://github.com/apache/cordova-plugin-media}) or \"AAPI\" ([HTML5 Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/audio}).\r\n * @param {string} [autoPlay=false] - If set to true, it will start playing the audio automatically (by calling the {@link CB_AudioFile#play} method internally) unless the \"ignoreOldValues\" parameter is set to false and the previous audio was playing or paused. If set to true and the \"status\" property of the audio API object reaches to the \"UNCHECKED\" status (defined in the {@link CB_AudioFile.UNCHECKED} constant), it will also call internally the \"checkPlaying\" method of the audio API object before anything. Possible internal audio API objects are {@link CB_AudioFile_API.WAAPI} object for \"WAAPI\" ([HTML5 Web Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API}), {@link CB_AudioFile_API.SM2} object for \"SM2\" ([SoundManager 2]{@link http://schillmania.com/projects/soundmanager2/}), {@link CB_AudioFile_API.ACMP} object for \"ACMP\" ([Apache Cordova Media Plugin]{@link https://github.com/apache/cordova-plugin-media}) or {@link CB_AudioFile_API.AAPI} object for \"AAPI\" ([HTML5 Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/audio}).\r\n * @param {function} [callbackOk] - Function with no parameters to be called when the audio has been loaded successfully, being \"this\" the {@link CB_AudioFile} object itself.\r\n * @param {function} [callbackError] - Function to be called if the audio has not been loaded successfully. The first and unique parameter will be a string describing the error found (if it could be determined), being \"this\" the {@link CB_AudioFile} object itself.\r\n * @param {string} [ignoreOldValues=false] - If set to true, it will ignore the old values of the previous used audio API object. This means that it will neither continue playing if it was playing (changing the audio API on-the-fly) nor keep the paused status if it was paused nor copy its \"loop\" property to the new audio API object. Possible internal audio API objects are {@link CB_AudioFile_API.WAAPI} object for \"WAAPI\" ([HTML5 Web Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API}), {@link CB_AudioFile_API.SM2} object for \"SM2\" ([SoundManager 2]{@link http://schillmania.com/projects/soundmanager2/}), {@link CB_AudioFile_API.ACMP} object for \"ACMP\" ([Apache Cordova Media Plugin]{@link https://github.com/apache/cordova-plugin-media}) or {@link CB_AudioFile_API.AAPI} object for \"AAPI\" ([HTML5 Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/audio}).\r\n * @param {string} [forceReload=false] - Used internally as the \"forceReload\" parameter when calling the \"load\" method of the used audio API object. Possible internal audio API objects are {@link CB_AudioFile_API.WAAPI} object for \"WAAPI\" ([HTML5 Web Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API}), {@link CB_AudioFile_API.SM2} object for \"SM2\" ([SoundManager 2]{@link http://schillmania.com/projects/soundmanager2/}), {@link CB_AudioFile_API.ACMP} object for \"ACMP\" ([Apache Cordova Media Plugin]{@link https://github.com/apache/cordova-plugin-media}) or {@link CB_AudioFile_API.AAPI} object for \"AAPI\" ([HTML5 Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/audio}).\r\n * @returns {CB_AudioFile_API.WAAPI|CB_AudioFile_API.SM2|CB_AudioFile_API.ACMP|CB_AudioFile_API.AAPI|null} Returns the used audio API object or null otherwise. Possible internal audio API objects are {@link CB_AudioFile_API.WAAPI} object for \"WAAPI\" ([HTML5 Web Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API}), {@link CB_AudioFile_API.SM2} object for \"SM2\" ([SoundManager 2]{@link http://schillmania.com/projects/soundmanager2/}), {@link CB_AudioFile_API.ACMP} object for \"ACMP\" ([Apache Cordova Media Plugin]{@link https://github.com/apache/cordova-plugin-media}) or {@link CB_AudioFile_API.AAPI} object for \"AAPI\" ([HTML5 Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/audio}).\r\n * @todo Think about using the \"forceReload\" just after the \"callbackError\" to match the parameter order of the \"load\" method of all the audio API objects.\r\n */","meta":{"range":[33556,41921],"filename":"CB_AudioFile.js","lineno":375,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100001933","name":"CB_AudioFile.prototype.load","type":"FunctionExpression","paramnames":["filePath","audioAPI","autoPlay","callbackOk","callbackError","ignoreOldValues","forceReload"]},"vars":{"audioAPI":"CB_AudioFile#load~audioAPI","filePath":"CB_AudioFile#load~filePath","that":"CB_AudioFile#load~that","callbackErrorFunction":"CB_AudioFile#load~callbackErrorFunction","":null,"this._loadingAudioFileObject":"CB_AudioFile#_loadingAudioFileObject","callbackOkFunction":"CB_AudioFile#load~callbackOkFunction","audioFileObject":"CB_AudioFile#load~audioFileObject","audioFileObject.id":"CB_AudioFile#load~audioFileObject.id","audioFileObject.loop":"CB_AudioFile#load~audioFileObject.loop","this.DEFAULT_VOLUME":"CB_AudioFile#DEFAULT_VOLUME","this.audioFileObjects[undefined]":"CB_AudioFile#audioFileObjects[undefined]","this.audioFileObjectLast":"CB_AudioFile#audioFileObjectLast"}},"description":"<p>Loads the desired audio file with the desired options. Recommended to be called through a user-driven event (as onClick, onTouch, etc.), as some clients may need this at least the first time in order to be able to play the audio. This method will be called automatically if the &quot;autoLoad&quot; option was set to true when calling the {@link CB_AudioFile#setAudioAPI} method. The audio API used will be stored in the {@link CB_AudioFile#audioAPI} property.<br>When this method is called, if the &quot;status&quot; property of the audio API object already has the &quot;LOADED&quot; status (defined in the {@link CB_AudioFile.LOADED} constant) and the &quot;forceReload&quot; parameter is not set to true, it will exit calling the given &quot;callbackOk&quot; function (if any) immediately. Otherwise, regardless the status, the status will be set to &quot;LOADING&quot; (defined in the {@link CB_AudioFile.LOADING} constant). After it, it will reach the &quot;UNCHECKED&quot; (defined in the {@link CB_AudioFile.UNCHECKED} constant). If the &quot;autoPlay&quot; parameter is not set to true, this will be the final status (and it will be necessary to call the &quot;checkPlaying&quot; method of the audio API object after it). After it and only if the &quot;autoPlay&quot; is set to true, as the &quot;checkPlaying&quot; method of the audio API object will be called internally, it will have the &quot;CHECKING&quot; status (defined in the {@link CB_AudioFile.CHECKING} constant) and finally the &quot;LOADED&quot; status (defined in the {@link CB_AudioFile.LOADED} constant) if all goes well.<br>Although it is not recommended to do so, if this method is called when the audio API object has the &quot;UNCHECKED&quot; status (defined in the {@link CB_AudioFile.UNCHECKED} constant), it will call the &quot;checkPlaying&quot; method of the audio API object internally.<br>Internally, it can use the {@link CB_AudioFile#audioFileObjects} property as a cache.</p>","kind":"function","params":[{"type":{"names":["string"]},"optional":true,"defaultvalue":"{@link CB_AudioFile#filePath}","description":"<p>The path of the audio file or a data URI. NOTE: Only some clients with some audio APIs will support data URIs.</p>","name":"filePath"},{"type":{"names":["string"]},"optional":true,"defaultvalue":"{@link CB_AudioFile#audioAPI}","description":"<p>The desired audio API to be used. If not provided, it will try to use the previously-set one (in the {@link CB_AudioFile#audioAPI} property). All possible ones are defined in {@link CB_Configuration.CrossBase.CB_AudioFileCache_PREFERRED_AUDIO_APIS}. For example: &quot;WAAPI&quot; ([HTML5 Web Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API}), &quot;SM2&quot; ([SoundManager 2]{@link http://schillmania.com/projects/soundmanager2/}), &quot;ACMP&quot; ([Apache Cordova Media Plugin]{@link https://github.com/apache/cordova-plugin-media}) or &quot;AAPI&quot; ([HTML5 Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/audio}).</p>","name":"audioAPI"},{"type":{"names":["string"]},"optional":true,"defaultvalue":false,"description":"<p>If set to true, it will start playing the audio automatically (by calling the {@link CB_AudioFile#play} method internally) unless the &quot;ignoreOldValues&quot; parameter is set to false and the previous audio was playing or paused. If set to true and the &quot;status&quot; property of the audio API object reaches to the &quot;UNCHECKED&quot; status (defined in the {@link CB_AudioFile.UNCHECKED} constant), it will also call internally the &quot;checkPlaying&quot; method of the audio API object before anything. Possible internal audio API objects are {@link CB_AudioFile_API.WAAPI} object for &quot;WAAPI&quot; ([HTML5 Web Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API}), {@link CB_AudioFile_API.SM2} object for &quot;SM2&quot; ([SoundManager 2]{@link http://schillmania.com/projects/soundmanager2/}), {@link CB_AudioFile_API.ACMP} object for &quot;ACMP&quot; ([Apache Cordova Media Plugin]{@link https://github.com/apache/cordova-plugin-media}) or {@link CB_AudioFile_API.AAPI} object for &quot;AAPI&quot; ([HTML5 Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/audio}).</p>","name":"autoPlay"},{"type":{"names":["function"]},"optional":true,"description":"<p>Function with no parameters to be called when the audio has been loaded successfully, being &quot;this&quot; the {@link CB_AudioFile} object itself.</p>","name":"callbackOk"},{"type":{"names":["function"]},"optional":true,"description":"<p>Function to be called if the audio has not been loaded successfully. The first and unique parameter will be a string describing the error found (if it could be determined), being &quot;this&quot; the {@link CB_AudioFile} object itself.</p>","name":"callbackError"},{"type":{"names":["string"]},"optional":true,"defaultvalue":false,"description":"<p>If set to true, it will ignore the old values of the previous used audio API object. This means that it will neither continue playing if it was playing (changing the audio API on-the-fly) nor keep the paused status if it was paused nor copy its &quot;loop&quot; property to the new audio API object. Possible internal audio API objects are {@link CB_AudioFile_API.WAAPI} object for &quot;WAAPI&quot; ([HTML5 Web Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API}), {@link CB_AudioFile_API.SM2} object for &quot;SM2&quot; ([SoundManager 2]{@link http://schillmania.com/projects/soundmanager2/}), {@link CB_AudioFile_API.ACMP} object for &quot;ACMP&quot; ([Apache Cordova Media Plugin]{@link https://github.com/apache/cordova-plugin-media}) or {@link CB_AudioFile_API.AAPI} object for &quot;AAPI&quot; ([HTML5 Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/audio}).</p>","name":"ignoreOldValues"},{"type":{"names":["string"]},"optional":true,"defaultvalue":false,"description":"<p>Used internally as the &quot;forceReload&quot; parameter when calling the &quot;load&quot; method of the used audio API object. Possible internal audio API objects are {@link CB_AudioFile_API.WAAPI} object for &quot;WAAPI&quot; ([HTML5 Web Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API}), {@link CB_AudioFile_API.SM2} object for &quot;SM2&quot; ([SoundManager 2]{@link http://schillmania.com/projects/soundmanager2/}), {@link CB_AudioFile_API.ACMP} object for &quot;ACMP&quot; ([Apache Cordova Media Plugin]{@link https://github.com/apache/cordova-plugin-media}) or {@link CB_AudioFile_API.AAPI} object for &quot;AAPI&quot; ([HTML5 Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/audio}).</p>","name":"forceReload"}],"returns":[{"type":{"names":["CB_AudioFile_API.WAAPI","CB_AudioFile_API.SM2","CB_AudioFile_API.ACMP","CB_AudioFile_API.AAPI","null"]},"description":"<p>Returns the used audio API object or null otherwise. Possible internal audio API objects are {@link CB_AudioFile_API.WAAPI} object for &quot;WAAPI&quot; ([HTML5 Web Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API}), {@link CB_AudioFile_API.SM2} object for &quot;SM2&quot; ([SoundManager 2]{@link http://schillmania.com/projects/soundmanager2/}), {@link CB_AudioFile_API.ACMP} object for &quot;ACMP&quot; ([Apache Cordova Media Plugin]{@link https://github.com/apache/cordova-plugin-media}) or {@link CB_AudioFile_API.AAPI} object for &quot;AAPI&quot; ([HTML5 Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/audio}).</p>"}],"todo":["Think about using the \"forceReload\" just after the \"callbackError\" to match the parameter order of the \"load\" method of all the audio API objects."],"name":"load","longname":"CB_AudioFile#load","memberof":"CB_AudioFile","scope":"instance"},{"comment":"/**\r\n * Checks whether the audio can be played or not. Recommended to be called through a user-driven event (as onClick, onTouch, etc.), as some clients may need this at least the first time in order to be able to play the audio. Also recommended to use before calling the {@link CB_AudioFile#play} method the first time. Internally, uses the \"checkPlaying\" method of the used audio API object. The checking action will only be performed if the value of the \"status\" property of the used audio API object belongs to the {@link CB_AudioFile.UNCHECKED} or to the {@link CB_AudioFile.CHECKING} value. After checking, if the audio can be played, the \"status\" property of the used audio API object will get the value of {@link CB_AudioFile.LOADED}. Otherwise, if it cannot be played, the \"status\" property of the used audio API object will get the value of {CB_AudioFile.FAILED}. Possible internal audio API objects are {@link CB_AudioFile_API.WAAPI} object for \"WAAPI\" ([HTML5 Web Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API}), {@link CB_AudioFile_API.SM2} object for \"SM2\" ([SoundManager 2]{@link http://schillmania.com/projects/soundmanager2/}), {@link CB_AudioFile_API.ACMP} object for \"ACMP\" ([Apache Cordova Media Plugin]{@link https://github.com/apache/cordova-plugin-media}) or {@link CB_AudioFile_API.AAPI} object for \"AAPI\" ([HTML5 Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/audio}).\r\n * @function\r\n * @param {function} [callbackOk] - Function with no parameters to be called when the audio has been checked successfully, being \"this\" the {@link CB_AudioFile} object itself.\r\n * @param {function} [callbackError] - Function to be called if the audio has not been checked successfully. The first and unique parameter will be a string describing the error found (if it could be determined), being \"this\" the {@link CB_AudioFile} object itself.\r\n * @param {boolean} [ignoreStatus=false] - If set to false and the audio status is neither \"UNCHECKED\" nor \"CHECKING\", it will fail calling the \"callbackError\" function (if any). If set to true, it will try to perform the checking action regardless the status of the audio.\r\n * @param {boolean} [ignoreQueue=false] - If set to false and there is already the maximum number of audio files being checked (defined internally, depending on the audio API), the function will exit and it will call itself automatically again and again until the checking process can be performed (when its queue turn has been reached). This is done for performance purposes. Some audio APIs will ignore this parameter as they do not use checking queues.\r\n * @param {boolean} [useCache=false] - If set to true (not recommended) and the same audio file was checked previously, it will not perform the checking process again and it will do the same as the previous call. Some audio APIs will ignore this parameter as they do not use cache.\r\n * @returns {boolean} Returns false if the checking could not be performed and failed. If it returns true, it can mean either the checking has been processed successfully or it will fail in the future, so it is recommended to ignore the returning value and use the callback functions instead.\r\n */","meta":{"range":[45166,45617],"filename":"CB_AudioFile.js","lineno":575,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100002540","name":"CB_AudioFile.prototype.checkPlaying","type":"FunctionExpression","paramnames":["callbackOk","callbackError","ignoreStatus","ignoreQueue","useCache"]},"vars":{"that":"CB_AudioFile#checkPlaying~that","":null}},"description":"<p>Checks whether the audio can be played or not. Recommended to be called through a user-driven event (as onClick, onTouch, etc.), as some clients may need this at least the first time in order to be able to play the audio. Also recommended to use before calling the {@link CB_AudioFile#play} method the first time. Internally, uses the &quot;checkPlaying&quot; method of the used audio API object. The checking action will only be performed if the value of the &quot;status&quot; property of the used audio API object belongs to the {@link CB_AudioFile.UNCHECKED} or to the {@link CB_AudioFile.CHECKING} value. After checking, if the audio can be played, the &quot;status&quot; property of the used audio API object will get the value of {@link CB_AudioFile.LOADED}. Otherwise, if it cannot be played, the &quot;status&quot; property of the used audio API object will get the value of {CB_AudioFile.FAILED}. Possible internal audio API objects are {@link CB_AudioFile_API.WAAPI} object for &quot;WAAPI&quot; ([HTML5 Web Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API}), {@link CB_AudioFile_API.SM2} object for &quot;SM2&quot; ([SoundManager 2]{@link http://schillmania.com/projects/soundmanager2/}), {@link CB_AudioFile_API.ACMP} object for &quot;ACMP&quot; ([Apache Cordova Media Plugin]{@link https://github.com/apache/cordova-plugin-media}) or {@link CB_AudioFile_API.AAPI} object for &quot;AAPI&quot; ([HTML5 Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/audio}).</p>","kind":"function","params":[{"type":{"names":["function"]},"optional":true,"description":"<p>Function with no parameters to be called when the audio has been checked successfully, being &quot;this&quot; the {@link CB_AudioFile} object itself.</p>","name":"callbackOk"},{"type":{"names":["function"]},"optional":true,"description":"<p>Function to be called if the audio has not been checked successfully. The first and unique parameter will be a string describing the error found (if it could be determined), being &quot;this&quot; the {@link CB_AudioFile} object itself.</p>","name":"callbackError"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If set to false and the audio status is neither &quot;UNCHECKED&quot; nor &quot;CHECKING&quot;, it will fail calling the &quot;callbackError&quot; function (if any). If set to true, it will try to perform the checking action regardless the status of the audio.</p>","name":"ignoreStatus"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If set to false and there is already the maximum number of audio files being checked (defined internally, depending on the audio API), the function will exit and it will call itself automatically again and again until the checking process can be performed (when its queue turn has been reached). This is done for performance purposes. Some audio APIs will ignore this parameter as they do not use checking queues.</p>","name":"ignoreQueue"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If set to true (not recommended) and the same audio file was checked previously, it will not perform the checking process again and it will do the same as the previous call. Some audio APIs will ignore this parameter as they do not use cache.</p>","name":"useCache"}],"returns":[{"type":{"names":["boolean"]},"description":"<p>Returns false if the checking could not be performed and failed. If it returns true, it can mean either the checking has been processed successfully or it will fail in the future, so it is recommended to ignore the returning value and use the callback functions instead.</p>"}],"name":"checkPlaying","longname":"CB_AudioFile#checkPlaying","memberof":"CB_AudioFile","scope":"instance"},{"comment":"/**\r\n * Tells the duration of the audio (in milliseconds). Note that some clients might not calculate the duration correctly and, in this case, a zero (0) value would be returned. Internally, uses the \"getDuration\" method of the used audio API object. Possible internal audio API objects are {@link CB_AudioFile_API.WAAPI} object for \"WAAPI\" ([HTML5 Web Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API}), {@link CB_AudioFile_API.SM2} object for \"SM2\" ([SoundManager 2]{@link http://schillmania.com/projects/soundmanager2/}), {@link CB_AudioFile_API.ACMP} object for \"ACMP\" ([Apache Cordova Media Plugin]{@link https://github.com/apache/cordova-plugin-media}) or {@link CB_AudioFile_API.AAPI} object for \"AAPI\" ([HTML5 Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/audio}).\r\n * @function\r\n * @returns {number} Returns the duration of the audio (in milliseconds). Note that some clients might not calculate the duration correctly and, in this case, a zero (0) value would be returned.\r\n */","meta":{"range":[46675,46773],"filename":"CB_AudioFile.js","lineno":594,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100002598","name":"CB_AudioFile.prototype.getDuration","type":"FunctionExpression","paramnames":[]}},"description":"<p>Tells the duration of the audio (in milliseconds). Note that some clients might not calculate the duration correctly and, in this case, a zero (0) value would be returned. Internally, uses the &quot;getDuration&quot; method of the used audio API object. Possible internal audio API objects are {@link CB_AudioFile_API.WAAPI} object for &quot;WAAPI&quot; ([HTML5 Web Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API}), {@link CB_AudioFile_API.SM2} object for &quot;SM2&quot; ([SoundManager 2]{@link http://schillmania.com/projects/soundmanager2/}), {@link CB_AudioFile_API.ACMP} object for &quot;ACMP&quot; ([Apache Cordova Media Plugin]{@link https://github.com/apache/cordova-plugin-media}) or {@link CB_AudioFile_API.AAPI} object for &quot;AAPI&quot; ([HTML5 Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/audio}).</p>","kind":"function","returns":[{"type":{"names":["number"]},"description":"<p>Returns the duration of the audio (in milliseconds). Note that some clients might not calculate the duration correctly and, in this case, a zero (0) value would be returned.</p>"}],"name":"getDuration","longname":"CB_AudioFile#getDuration","memberof":"CB_AudioFile","scope":"instance"},{"comment":"/**\r\n * Plays the audio. Internally, uses the \"play\" method of the used audio API object. Possible internal audio API objects are {@link CB_AudioFile_API.WAAPI} object for \"WAAPI\" ([HTML5 Web Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API}), {@link CB_AudioFile_API.SM2} object for \"SM2\" ([SoundManager 2]{@link http://schillmania.com/projects/soundmanager2/}), {@link CB_AudioFile_API.ACMP} object for \"ACMP\" ([Apache Cordova Media Plugin]{@link https://github.com/apache/cordova-plugin-media}) or {@link CB_AudioFile_API.AAPI} object for \"AAPI\" ([HTML5 Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/audio}).\r\n * @function\r\n * @param {number} [startAt=0 | {@link CB_AudioFile_API.WAAPI#lastStartAt} | {@link CB_AudioFile_API.SM2#lastStartAt} | {@link CB_AudioFile_API.ACMP#lastStartAt} | {@link CB_AudioFile_API.AAPI#lastStartAt} | stopAt] - Time in milliseconds where we want the audio to start at. If not provided or it is not a valid number, it will use zero (0) as default which belongs to the beginning of the audio. If the value provided is greater than the \"stopAt\" provided, it will use the value set in the \"lastStartAt\" property of the used audio API object (which belongs to the \"startAt\" value the last time that the \"play\" method was called). If, even using the \"lastStartAt\" value is still greather than the \"stopAt\" provided, it will use the same value as the \"stopAt\" which means it will not play and will stop immediately. Used internally as the \"startAt\" parameter to call the \"play\" method of the audio API object.\r\n * @param {number} [stopAt={@link CB_AudioFile_API.WAAPI#getDuration}() | {@link CB_AudioFile_API.SM2#getDuration}() | {@link CB_AudioFile_API.ACMP#getDuration}() | {@link CB_AudioFile_API.AAPI#getDuration}()] - Time in milliseconds where we want the audio to stop at. If not provided or it is not a valid number, it will use the returning value of the \"getDuration\" method of the used audio API object (which should belong to the total duration of the audio, if it was calculated correctly). Used internally as the \"stopAt\" parameter to call the \"play\" method of the audio API object.\r\n * @param {boolean} [loop={@link CB_AudioFile#loop}] - Sets whether we want to play the audio looping (starting again and again) or just play it once. Note that at the end of each loop the \"onStop\" function defined (through the {@link CB_AudioFile#onStop} method) will not be called. Used internally as the \"loop\" parameter to call the \"play\" method of the audio API object.\r\n * @param {boolean} [avoidDelayedPlay=false] - If set to false (recommended) and the audio failed previously or was aborted (destroyed), it will try to load it correctly again automatically and play it after that if possible (this can take some time so the audio could start playing after a delay). Otherwise, if set to true and the audio failed or was aborted (destroyed), the audio will not play at all and the \"stop\" method of the used audio API object will be called immediately. Used internally as the \"avoidDelayedPlay\" parameter to call the \"play\" method of the audio API object.\r\n * @param {boolean} [allowedRecursiveDelay={@link CB_Configuration.CrossBase.CB_AudioFile_AudioFileCache_ALLOWED_RECURSIVE_DELAY_DEFAULT}] - The maximum amount of time (in milliseconds) of delay that we accept before start playing the audio. If the amount of time is overcome, the audio will not play at all and the \"stop\" method of the used audio API object will be called immediately. Used only when the \"avoidDelayedPlay\" parameter is set to false and the audio needs to be loaded because it failed previously or was aborted (destroyed). Used internally as the \"allowedRecursiveDelay\" parameter to call the \"play\" method of the audio API object.\r\n * @param {function} [onPlayStart] - Function to be called when the audio starts playing successfully. The function will be called with the following parameters (in order): \"startAt\", \"stopAt\", \"startAtNextLoop\", \"loop\", \"avoidDelayedPlay\", \"allowedRecursiveDelay\" and \"startPlayingTime\", being \"this\" the {@link CB_AudioFile} object. If the audio is looping, this will be called only once when the audio starts playing the first time and it will not be called next loops. Used internally as the \"onPlayStart\" parameter to call the \"play\" method of the audio API object.\r\n * @param {function} [onLoadError] - Function to be called if the audio cannot be played successfully. The first and unique parameter will be a string describing the error found (if it could be determined), being \"this\" the {@link CB_AudioFile} object. Used internally as the \"onLoadError\" parameter to call the \"play\" method of the audio API object.\r\n * @param {boolean} [isResume=false] - If set to true (not recommended) and it is a looping audio, the next loop will use the value of the \"lastStartAt\" property of the audio API object as the \"startAt\" parameter when it calls the \"play\" method again automatically (internally). Recommended for internal usage only. Used internally as the \"isResume\" parameter to call the \"play\" method of the audio API object.\r\n * @returns {boolean|integer} Returns the returning value of the \"play\" method of the audio API object. It returns false if the duration is 0 (\"startAt\" and \"stopAt\" are the same number), returns \"-1\" if the audio cannot be played and an error is detected or returns true otherwise. Note that even when it returns true there can be a non-detectable error and maybe the audio is not played. Possible internal audio API objects are {@link CB_AudioFile_API.WAAPI} object for \"WAAPI\" ([HTML5 Web Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API}), {@link CB_AudioFile_API.SM2} object for \"SM2\" ([SoundManager 2]{@link http://schillmania.com/projects/soundmanager2/}), {@link CB_AudioFile_API.ACMP} object for \"ACMP\" ([Apache Cordova Media Plugin]{@link https://github.com/apache/cordova-plugin-media}) or {@link CB_AudioFile_API.AAPI} object for \"AAPI\" ([HTML5 Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/audio}).\r\n */","meta":{"range":[52902,54056],"filename":"CB_AudioFile.js","lineno":613,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100002614","name":"CB_AudioFile.prototype.play","type":"FunctionExpression","paramnames":["startAt","stopAt","loop","avoidDelayedPlay","allowedRecursiveDelay","onPlayStart","onLoadError","isResume"]},"vars":{"loop":"CB_AudioFile#play~loop","this.loop":"CB_AudioFile#loop","this._avoidDelayedPlayLast":"CB_AudioFile#_avoidDelayedPlayLast","this._allowedRecursiveDelayLast":"CB_AudioFile#_allowedRecursiveDelayLast","this._onLoadErrorLast":"CB_AudioFile#_onLoadErrorLast","that":"CB_AudioFile#play~that","":null}},"description":"<p>Plays the audio. Internally, uses the &quot;play&quot; method of the used audio API object. Possible internal audio API objects are {@link CB_AudioFile_API.WAAPI} object for &quot;WAAPI&quot; ([HTML5 Web Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API}), {@link CB_AudioFile_API.SM2} object for &quot;SM2&quot; ([SoundManager 2]{@link http://schillmania.com/projects/soundmanager2/}), {@link CB_AudioFile_API.ACMP} object for &quot;ACMP&quot; ([Apache Cordova Media Plugin]{@link https://github.com/apache/cordova-plugin-media}) or {@link CB_AudioFile_API.AAPI} object for &quot;AAPI&quot; ([HTML5 Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/audio}).</p>","kind":"function","params":[{"type":{"names":["number"]},"optional":true,"defaultvalue":"0 | {@link CB_AudioFile_API.WAAPI#lastStartAt} | {@link CB_AudioFile_API.SM2#lastStartAt} | {@link CB_AudioFile_API.ACMP#lastStartAt} | {@link CB_AudioFile_API.AAPI#lastStartAt} | stopAt","description":"<p>Time in milliseconds where we want the audio to start at. If not provided or it is not a valid number, it will use zero (0) as default which belongs to the beginning of the audio. If the value provided is greater than the &quot;stopAt&quot; provided, it will use the value set in the &quot;lastStartAt&quot; property of the used audio API object (which belongs to the &quot;startAt&quot; value the last time that the &quot;play&quot; method was called). If, even using the &quot;lastStartAt&quot; value is still greather than the &quot;stopAt&quot; provided, it will use the same value as the &quot;stopAt&quot; which means it will not play and will stop immediately. Used internally as the &quot;startAt&quot; parameter to call the &quot;play&quot; method of the audio API object.</p>","name":"startAt"},{"type":{"names":["number"]},"optional":true,"defaultvalue":"{@link CB_AudioFile_API.WAAPI#getDuration}() | {@link CB_AudioFile_API.SM2#getDuration}() | {@link CB_AudioFile_API.ACMP#getDuration}() | {@link CB_AudioFile_API.AAPI#getDuration}()","description":"<p>Time in milliseconds where we want the audio to stop at. If not provided or it is not a valid number, it will use the returning value of the &quot;getDuration&quot; method of the used audio API object (which should belong to the total duration of the audio, if it was calculated correctly). Used internally as the &quot;stopAt&quot; parameter to call the &quot;play&quot; method of the audio API object.</p>","name":"stopAt"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":"{@link CB_AudioFile#loop}","description":"<p>Sets whether we want to play the audio looping (starting again and again) or just play it once. Note that at the end of each loop the &quot;onStop&quot; function defined (through the {@link CB_AudioFile#onStop} method) will not be called. Used internally as the &quot;loop&quot; parameter to call the &quot;play&quot; method of the audio API object.</p>","name":"loop"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If set to false (recommended) and the audio failed previously or was aborted (destroyed), it will try to load it correctly again automatically and play it after that if possible (this can take some time so the audio could start playing after a delay). Otherwise, if set to true and the audio failed or was aborted (destroyed), the audio will not play at all and the &quot;stop&quot; method of the used audio API object will be called immediately. Used internally as the &quot;avoidDelayedPlay&quot; parameter to call the &quot;play&quot; method of the audio API object.</p>","name":"avoidDelayedPlay"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":"{@link CB_Configuration.CrossBase.CB_AudioFile_AudioFileCache_ALLOWED_RECURSIVE_DELAY_DEFAULT}","description":"<p>The maximum amount of time (in milliseconds) of delay that we accept before start playing the audio. If the amount of time is overcome, the audio will not play at all and the &quot;stop&quot; method of the used audio API object will be called immediately. Used only when the &quot;avoidDelayedPlay&quot; parameter is set to false and the audio needs to be loaded because it failed previously or was aborted (destroyed). Used internally as the &quot;allowedRecursiveDelay&quot; parameter to call the &quot;play&quot; method of the audio API object.</p>","name":"allowedRecursiveDelay"},{"type":{"names":["function"]},"optional":true,"description":"<p>Function to be called when the audio starts playing successfully. The function will be called with the following parameters (in order): &quot;startAt&quot;, &quot;stopAt&quot;, &quot;startAtNextLoop&quot;, &quot;loop&quot;, &quot;avoidDelayedPlay&quot;, &quot;allowedRecursiveDelay&quot; and &quot;startPlayingTime&quot;, being &quot;this&quot; the {@link CB_AudioFile} object. If the audio is looping, this will be called only once when the audio starts playing the first time and it will not be called next loops. Used internally as the &quot;onPlayStart&quot; parameter to call the &quot;play&quot; method of the audio API object.</p>","name":"onPlayStart"},{"type":{"names":["function"]},"optional":true,"description":"<p>Function to be called if the audio cannot be played successfully. The first and unique parameter will be a string describing the error found (if it could be determined), being &quot;this&quot; the {@link CB_AudioFile} object. Used internally as the &quot;onLoadError&quot; parameter to call the &quot;play&quot; method of the audio API object.</p>","name":"onLoadError"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If set to true (not recommended) and it is a looping audio, the next loop will use the value of the &quot;lastStartAt&quot; property of the audio API object as the &quot;startAt&quot; parameter when it calls the &quot;play&quot; method again automatically (internally). Recommended for internal usage only. Used internally as the &quot;isResume&quot; parameter to call the &quot;play&quot; method of the audio API object.</p>","name":"isResume"}],"returns":[{"type":{"names":["boolean","integer"]},"description":"<p>Returns the returning value of the &quot;play&quot; method of the audio API object. It returns false if the duration is 0 (&quot;startAt&quot; and &quot;stopAt&quot; are the same number), returns &quot;-1&quot; if the audio cannot be played and an error is detected or returns true otherwise. Note that even when it returns true there can be a non-detectable error and maybe the audio is not played. Possible internal audio API objects are {@link CB_AudioFile_API.WAAPI} object for &quot;WAAPI&quot; ([HTML5 Web Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API}), {@link CB_AudioFile_API.SM2} object for &quot;SM2&quot; ([SoundManager 2]{@link http://schillmania.com/projects/soundmanager2/}), {@link CB_AudioFile_API.ACMP} object for &quot;ACMP&quot; ([Apache Cordova Media Plugin]{@link https://github.com/apache/cordova-plugin-media}) or {@link CB_AudioFile_API.AAPI} object for &quot;AAPI&quot; ([HTML5 Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/audio}).</p>"}],"name":"play","longname":"CB_AudioFile#play","memberof":"CB_AudioFile","scope":"instance"},{"comment":"/**\r\n * Resumes the audio (after being paused), starting from the same point it was paused previously. Internally, uses the \"resume\" method of the used audio API object. Possible internal audio API objects are {@link CB_AudioFile_API.WAAPI} object for \"WAAPI\" ([HTML5 Web Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API}), {@link CB_AudioFile_API.SM2} object for \"SM2\" ([SoundManager 2]{@link http://schillmania.com/projects/soundmanager2/}), {@link CB_AudioFile_API.ACMP} object for \"ACMP\" ([Apache Cordova Media Plugin]{@link https://github.com/apache/cordova-plugin-media}) or {@link CB_AudioFile_API.AAPI} object for \"AAPI\" ([HTML5 Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/audio}).\r\n * @function\r\n * @param {boolean} [loop={@link CB_AudioFile#loop}] - Sets whether we want to play the audio looping (starting again and again) or just play it once. Note that at the end of each loop the \"onStop\" function defined (through the {@link CB_AudioFile#onStop} method) will not be called. Used internally as the \"loop\" parameter to call the \"resume\" method of the audio API object.\r\n * @param {boolean} [avoidDelayedPlay=false] - If set to false (recommended) and the audio failed previously or was aborted (destroyed), it will try to load it correctly again automatically and play it after that if possible (this can take some time so the audio could start playing after a delay). Otherwise, if set to true and the audio failed or was aborted (destroyed), the audio will not play at all and the \"stop\" method of the used audio API object will be called immediately. Used internally as the \"avoidDelayedPlay\" parameter to call the \"resume\" method of the audio API object.\r\n * @param {boolean} [allowedRecursiveDelay={@link CB_Configuration.CrossBase.CB_AudioFile_AudioFileCache_ALLOWED_RECURSIVE_DELAY_DEFAULT}] - The maximum amount of time (in milliseconds) of delay that we accept before start playing the audio. If the amount of time is overcome, the audio will not play at all and the \"stop\" method of the used audio API object will be called immediately. Used only when the \"avoidDelayedPlay\" parameter is set to false and the audio needs to be loaded because it failed previously or was aborted (destroyed). Used internally as the \"allowedRecursiveDelay\" parameter to call the \"resume\" method of the audio API object.\r\n * @param {function} [onPlayStart] - Function to be called when the audio starts playing successfully. The function will be called with the following parameters (in order): \"startAt\", \"stopAt\", \"startAtNextLoop\", \"loop\", \"avoidDelayedPlay\", \"allowedRecursiveDelay\" and \"startPlayingTime\", being \"this\" the {@link CB_AudioFile} object. If the audio is looping, this will be called only once when the audio starts playing the first time and it will not be called next loops. Used internally as the \"onPlayStart\" parameter to call the \"resume\" method of the audio API object.\r\n * @param {function} [onLoadError] - Function to be called if the audio cannot be played successfully. It will not be called if the audio is not paused or is stopped. The first and unique parameter will be a string describing the error found (if it could be determined), being \"this\" the {@link CB_AudioFile} object. Used internally as the \"onLoadError\" parameter to call the \"resume\" method of the audio API object.\r\n * @returns {boolean|integer} Returns the returning value of the \"resume\" method of the audio API object. It returns false if the audio is not paused or it is stopped, returns \"-1\" if the audio cannot be played and an error is detected or returns true otherwise. Note that even when it returns true there can be a non-detectable error and maybe the audio is not played. Possible internal audio API objects are {@link CB_AudioFile_API.WAAPI} object for \"WAAPI\" ([HTML5 Web Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API}), {@link CB_AudioFile_API.SM2} object for \"SM2\" ([SoundManager 2]{@link http://schillmania.com/projects/soundmanager2/}), {@link CB_AudioFile_API.ACMP} object for \"ACMP\" ([Apache Cordova Media Plugin]{@link https://github.com/apache/cordova-plugin-media}) or {@link CB_AudioFile_API.AAPI} object for \"AAPI\" ([HTML5 Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/audio}).\r\n */","meta":{"range":[58503,59823],"filename":"CB_AudioFile.js","lineno":656,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100002734","name":"CB_AudioFile.prototype.resume","type":"FunctionExpression","paramnames":["loop","avoidDelayedPlay","allowedRecursiveDelay","onPlayStart","onLoadError"]},"vars":{"loop":"CB_AudioFile#resume~loop","this.loop":"CB_AudioFile#loop","this._avoidDelayedPlayLast":"CB_AudioFile#_avoidDelayedPlayLast","this._allowedRecursiveDelayLast":"CB_AudioFile#_allowedRecursiveDelayLast","this._onLoadErrorLast":"CB_AudioFile#_onLoadErrorLast","that":"CB_AudioFile#resume~that","":null}},"description":"<p>Resumes the audio (after being paused), starting from the same point it was paused previously. Internally, uses the &quot;resume&quot; method of the used audio API object. Possible internal audio API objects are {@link CB_AudioFile_API.WAAPI} object for &quot;WAAPI&quot; ([HTML5 Web Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API}), {@link CB_AudioFile_API.SM2} object for &quot;SM2&quot; ([SoundManager 2]{@link http://schillmania.com/projects/soundmanager2/}), {@link CB_AudioFile_API.ACMP} object for &quot;ACMP&quot; ([Apache Cordova Media Plugin]{@link https://github.com/apache/cordova-plugin-media}) or {@link CB_AudioFile_API.AAPI} object for &quot;AAPI&quot; ([HTML5 Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/audio}).</p>","kind":"function","params":[{"type":{"names":["boolean"]},"optional":true,"defaultvalue":"{@link CB_AudioFile#loop}","description":"<p>Sets whether we want to play the audio looping (starting again and again) or just play it once. Note that at the end of each loop the &quot;onStop&quot; function defined (through the {@link CB_AudioFile#onStop} method) will not be called. Used internally as the &quot;loop&quot; parameter to call the &quot;resume&quot; method of the audio API object.</p>","name":"loop"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If set to false (recommended) and the audio failed previously or was aborted (destroyed), it will try to load it correctly again automatically and play it after that if possible (this can take some time so the audio could start playing after a delay). Otherwise, if set to true and the audio failed or was aborted (destroyed), the audio will not play at all and the &quot;stop&quot; method of the used audio API object will be called immediately. Used internally as the &quot;avoidDelayedPlay&quot; parameter to call the &quot;resume&quot; method of the audio API object.</p>","name":"avoidDelayedPlay"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":"{@link CB_Configuration.CrossBase.CB_AudioFile_AudioFileCache_ALLOWED_RECURSIVE_DELAY_DEFAULT}","description":"<p>The maximum amount of time (in milliseconds) of delay that we accept before start playing the audio. If the amount of time is overcome, the audio will not play at all and the &quot;stop&quot; method of the used audio API object will be called immediately. Used only when the &quot;avoidDelayedPlay&quot; parameter is set to false and the audio needs to be loaded because it failed previously or was aborted (destroyed). Used internally as the &quot;allowedRecursiveDelay&quot; parameter to call the &quot;resume&quot; method of the audio API object.</p>","name":"allowedRecursiveDelay"},{"type":{"names":["function"]},"optional":true,"description":"<p>Function to be called when the audio starts playing successfully. The function will be called with the following parameters (in order): &quot;startAt&quot;, &quot;stopAt&quot;, &quot;startAtNextLoop&quot;, &quot;loop&quot;, &quot;avoidDelayedPlay&quot;, &quot;allowedRecursiveDelay&quot; and &quot;startPlayingTime&quot;, being &quot;this&quot; the {@link CB_AudioFile} object. If the audio is looping, this will be called only once when the audio starts playing the first time and it will not be called next loops. Used internally as the &quot;onPlayStart&quot; parameter to call the &quot;resume&quot; method of the audio API object.</p>","name":"onPlayStart"},{"type":{"names":["function"]},"optional":true,"description":"<p>Function to be called if the audio cannot be played successfully. It will not be called if the audio is not paused or is stopped. The first and unique parameter will be a string describing the error found (if it could be determined), being &quot;this&quot; the {@link CB_AudioFile} object. Used internally as the &quot;onLoadError&quot; parameter to call the &quot;resume&quot; method of the audio API object.</p>","name":"onLoadError"}],"returns":[{"type":{"names":["boolean","integer"]},"description":"<p>Returns the returning value of the &quot;resume&quot; method of the audio API object. It returns false if the audio is not paused or it is stopped, returns &quot;-1&quot; if the audio cannot be played and an error is detected or returns true otherwise. Note that even when it returns true there can be a non-detectable error and maybe the audio is not played. Possible internal audio API objects are {@link CB_AudioFile_API.WAAPI} object for &quot;WAAPI&quot; ([HTML5 Web Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API}), {@link CB_AudioFile_API.SM2} object for &quot;SM2&quot; ([SoundManager 2]{@link http://schillmania.com/projects/soundmanager2/}), {@link CB_AudioFile_API.ACMP} object for &quot;ACMP&quot; ([Apache Cordova Media Plugin]{@link https://github.com/apache/cordova-plugin-media}) or {@link CB_AudioFile_API.AAPI} object for &quot;AAPI&quot; ([HTML5 Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/audio}).</p>"}],"name":"resume","longname":"CB_AudioFile#resume","memberof":"CB_AudioFile","scope":"instance"},{"comment":"/**\r\n * Pauses the audio when it is being played. Internally, uses the \"pause\" method of the used audio API object. Possible internal audio API objects are {@link CB_AudioFile_API.WAAPI} object for \"WAAPI\" ([HTML5 Web Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API}), {@link CB_AudioFile_API.SM2} object for \"SM2\" ([SoundManager 2]{@link http://schillmania.com/projects/soundmanager2/}), {@link CB_AudioFile_API.ACMP} object for \"ACMP\" ([Apache Cordova Media Plugin]{@link https://github.com/apache/cordova-plugin-media}) or {@link CB_AudioFile_API.AAPI} object for \"AAPI\" ([HTML5 Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/audio}).\r\n * @function\r\n * @param {function} [onPause] - Function without parameters to be called when the audio is paused successfully, being \"this\" the {@link CB_AudioFile} object. Used internally as the \"onPause\" parameter (with a wrapper function) to call the \"pause\" method of the audio API object.\r\n * @param {boolean} [keepPausedUnaltered=false] - If set to true (not recommended), the \"paused\" property of the audio API object will not be set to true and it will remain with its current value. Used internally as the \"keepPausedUnaltered\" parameter to call the \"pause\" method of the audio API object.\r\n * @returns {boolean} Returns the returning value of the \"pause\" method of the audio API object. It returns false if the audio is already paused or it is stopped or if it cannot be paused. Returns true otherwise. Possible internal audio API objects are {@link CB_AudioFile_API.WAAPI} object for \"WAAPI\" ([HTML5 Web Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API}), {@link CB_AudioFile_API.SM2} object for \"SM2\" ([SoundManager 2]{@link http://schillmania.com/projects/soundmanager2/}), {@link CB_AudioFile_API.ACMP} object for \"ACMP\" ([Apache Cordova Media Plugin]{@link https://github.com/apache/cordova-plugin-media}) or {@link CB_AudioFile_API.AAPI} object for \"AAPI\" ([HTML5 Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/audio}).\r\n */","meta":{"range":[61933,62161],"filename":"CB_AudioFile.js","lineno":695,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100002846","name":"CB_AudioFile.prototype.pause","type":"FunctionExpression","paramnames":["onPause","keepPausedUnaltered"]},"vars":{"that":"CB_AudioFile#pause~that","":null}},"description":"<p>Pauses the audio when it is being played. Internally, uses the &quot;pause&quot; method of the used audio API object. Possible internal audio API objects are {@link CB_AudioFile_API.WAAPI} object for &quot;WAAPI&quot; ([HTML5 Web Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API}), {@link CB_AudioFile_API.SM2} object for &quot;SM2&quot; ([SoundManager 2]{@link http://schillmania.com/projects/soundmanager2/}), {@link CB_AudioFile_API.ACMP} object for &quot;ACMP&quot; ([Apache Cordova Media Plugin]{@link https://github.com/apache/cordova-plugin-media}) or {@link CB_AudioFile_API.AAPI} object for &quot;AAPI&quot; ([HTML5 Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/audio}).</p>","kind":"function","params":[{"type":{"names":["function"]},"optional":true,"description":"<p>Function without parameters to be called when the audio is paused successfully, being &quot;this&quot; the {@link CB_AudioFile} object. Used internally as the &quot;onPause&quot; parameter (with a wrapper function) to call the &quot;pause&quot; method of the audio API object.</p>","name":"onPause"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If set to true (not recommended), the &quot;paused&quot; property of the audio API object will not be set to true and it will remain with its current value. Used internally as the &quot;keepPausedUnaltered&quot; parameter to call the &quot;pause&quot; method of the audio API object.</p>","name":"keepPausedUnaltered"}],"returns":[{"type":{"names":["boolean"]},"description":"<p>Returns the returning value of the &quot;pause&quot; method of the audio API object. It returns false if the audio is already paused or it is stopped or if it cannot be paused. Returns true otherwise. Possible internal audio API objects are {@link CB_AudioFile_API.WAAPI} object for &quot;WAAPI&quot; ([HTML5 Web Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API}), {@link CB_AudioFile_API.SM2} object for &quot;SM2&quot; ([SoundManager 2]{@link http://schillmania.com/projects/soundmanager2/}), {@link CB_AudioFile_API.ACMP} object for &quot;ACMP&quot; ([Apache Cordova Media Plugin]{@link https://github.com/apache/cordova-plugin-media}) or {@link CB_AudioFile_API.AAPI} object for &quot;AAPI&quot; ([HTML5 Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/audio}).</p>"}],"name":"pause","longname":"CB_AudioFile#pause","memberof":"CB_AudioFile","scope":"instance"},{"comment":"/**\r\n * Stops the audio. Internally, uses the \"stop\" method of the used audio API object. Possible internal audio API objects are {@link CB_AudioFile_API.WAAPI} object for \"WAAPI\" ([HTML5 Web Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API}), {@link CB_AudioFile_API.SM2} object for \"SM2\" ([SoundManager 2]{@link http://schillmania.com/projects/soundmanager2/}), {@link CB_AudioFile_API.ACMP} object for \"ACMP\" ([Apache Cordova Media Plugin]{@link https://github.com/apache/cordova-plugin-media}) or {@link CB_AudioFile_API.AAPI} object for \"AAPI\" ([HTML5 Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/audio}).\r\n * @function\r\n * @param {boolean} [keepStoppedUnaltered=false] - If set to true (not recommended), the \"stopped\" property of the audio API object will not be set to true and it will remain with its current value. Used internally as the \"keepStoppedUnaltered\" parameter to call the \"stop\" method of the audio API object.\r\n * @param {boolean} [avoidOnStop=false] - If set to false and there is an \"onStop\" function defined (through the {@link CB_AudioFile#onStop} method), it will be called after stopping the audio (or after trying to do it, at least) but only if either the \"forceOnStop\" parameter is set to true or if the \"keepStoppedUnaltered\" parameter is set to false and the audio was not already stopped before. If set to true, the \"onStop\" function (if any) will not be called at all. Used internally as the \"avoidOnStop\" parameter to call the \"stop\" method of the audio API object.\r\n * @param {boolean} [forceOnStop=false] - If it is set to true and the \"avoidOnStop\" parameter is set to false and there is an \"onStop\" function defined (through the {@link CB_AudioFile#onStop} method), it will be called regardless the audio was stopped before or not. If set to false, the \"onStop\" function (if any) will only be called if the \"keepStoppedUnaltered\" parameter is set to false and the audio was not already stopped before. This parameter will be ignored if the \"avoidOnStop\" parameter is set to true. Used internally as the \"forceOnStop\" parameter to call the \"stop\" method of the audio API object.\r\n * @returns {boolean} Returns the returning value of the \"stop\" method of the audio API object. It returns false if the stopping action cannot be performed at all (this could happen with the internal audio API has not been loaded properly, for example). Returns true otherwise (this only means that it has been tried to be stopped but it could not be successfully). Possible internal audio API objects are {@link CB_AudioFile_API.WAAPI} object for \"WAAPI\" ([HTML5 Web Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API}), {@link CB_AudioFile_API.SM2} object for \"SM2\" ([SoundManager 2]{@link http://schillmania.com/projects/soundmanager2/}), {@link CB_AudioFile_API.ACMP} object for \"ACMP\" ([Apache Cordova Media Plugin]{@link https://github.com/apache/cordova-plugin-media}) or {@link CB_AudioFile_API.AAPI} object for \"AAPI\" ([HTML5 Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/audio}).\r\n */","meta":{"range":[65306,65482],"filename":"CB_AudioFile.js","lineno":710,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100002883","name":"CB_AudioFile.prototype.stop","type":"FunctionExpression","paramnames":["keepStoppedUnaltered","avoidOnStop","forceOnStop"]}},"description":"<p>Stops the audio. Internally, uses the &quot;stop&quot; method of the used audio API object. Possible internal audio API objects are {@link CB_AudioFile_API.WAAPI} object for &quot;WAAPI&quot; ([HTML5 Web Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API}), {@link CB_AudioFile_API.SM2} object for &quot;SM2&quot; ([SoundManager 2]{@link http://schillmania.com/projects/soundmanager2/}), {@link CB_AudioFile_API.ACMP} object for &quot;ACMP&quot; ([Apache Cordova Media Plugin]{@link https://github.com/apache/cordova-plugin-media}) or {@link CB_AudioFile_API.AAPI} object for &quot;AAPI&quot; ([HTML5 Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/audio}).</p>","kind":"function","params":[{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If set to true (not recommended), the &quot;stopped&quot; property of the audio API object will not be set to true and it will remain with its current value. Used internally as the &quot;keepStoppedUnaltered&quot; parameter to call the &quot;stop&quot; method of the audio API object.</p>","name":"keepStoppedUnaltered"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If set to false and there is an &quot;onStop&quot; function defined (through the {@link CB_AudioFile#onStop} method), it will be called after stopping the audio (or after trying to do it, at least) but only if either the &quot;forceOnStop&quot; parameter is set to true or if the &quot;keepStoppedUnaltered&quot; parameter is set to false and the audio was not already stopped before. If set to true, the &quot;onStop&quot; function (if any) will not be called at all. Used internally as the &quot;avoidOnStop&quot; parameter to call the &quot;stop&quot; method of the audio API object.</p>","name":"avoidOnStop"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If it is set to true and the &quot;avoidOnStop&quot; parameter is set to false and there is an &quot;onStop&quot; function defined (through the {@link CB_AudioFile#onStop} method), it will be called regardless the audio was stopped before or not. If set to false, the &quot;onStop&quot; function (if any) will only be called if the &quot;keepStoppedUnaltered&quot; parameter is set to false and the audio was not already stopped before. This parameter will be ignored if the &quot;avoidOnStop&quot; parameter is set to true. Used internally as the &quot;forceOnStop&quot; parameter to call the &quot;stop&quot; method of the audio API object.</p>","name":"forceOnStop"}],"returns":[{"type":{"names":["boolean"]},"description":"<p>Returns the returning value of the &quot;stop&quot; method of the audio API object. It returns false if the stopping action cannot be performed at all (this could happen with the internal audio API has not been loaded properly, for example). Returns true otherwise (this only means that it has been tried to be stopped but it could not be successfully). Possible internal audio API objects are {@link CB_AudioFile_API.WAAPI} object for &quot;WAAPI&quot; ([HTML5 Web Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API}), {@link CB_AudioFile_API.SM2} object for &quot;SM2&quot; ([SoundManager 2]{@link http://schillmania.com/projects/soundmanager2/}), {@link CB_AudioFile_API.ACMP} object for &quot;ACMP&quot; ([Apache Cordova Media Plugin]{@link https://github.com/apache/cordova-plugin-media}) or {@link CB_AudioFile_API.AAPI} object for &quot;AAPI&quot; ([HTML5 Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/audio}).</p>"}],"name":"stop","longname":"CB_AudioFile#stop","memberof":"CB_AudioFile","scope":"instance"},{"comment":"/**\r\n * Returns the volume (from 0 to the maximum value, where the maximum value will be the returning value of calling the {@link CB_Speaker.getVolume} function if the {@link CB_Configuration.CrossBase.CB_AudioFile_AudioFileCache_USE_SPEAKER_VOLUME_AS_MAXIMUM} property is set to true or it will be 100 otherwise) that was set before the audio was muted. Internally, uses the \"volumeBeforeMute\" property of the used audio API object. Possible internal audio API objects are {@link CB_AudioFile_API.WAAPI} object for \"WAAPI\" ([HTML5 Web Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API}), {@link CB_AudioFile_API.SM2} object for \"SM2\" ([SoundManager 2]{@link http://schillmania.com/projects/soundmanager2/}), {@link CB_AudioFile_API.ACMP} object for \"ACMP\" ([Apache Cordova Media Plugin]{@link https://github.com/apache/cordova-plugin-media}) or {@link CB_AudioFile_API.AAPI} object for \"AAPI\" ([HTML5 Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/audio}).\r\n * @function\r\n * @returns {number} Returns the volume (from 0 to the maximum value, where the maximum value will be the returning value of calling the {@link CB_Speaker.getVolume} function if the {@link CB_Configuration.CrossBase.CB_AudioFile_AudioFileCache_USE_SPEAKER_VOLUME_AS_MAXIMUM} property is set to true or it will be 100 otherwise) that was set before the audio was muted. If the audio was not muted before, it will contain the default volume used in the \"volume\" property of the used audio API object.\r\n */","meta":{"range":[67027,67136],"filename":"CB_AudioFile.js","lineno":721,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100002905","name":"CB_AudioFile.prototype.getVolumeBeforeMute","type":"FunctionExpression","paramnames":[]}},"description":"<p>Returns the volume (from 0 to the maximum value, where the maximum value will be the returning value of calling the {@link CB_Speaker.getVolume} function if the {@link CB_Configuration.CrossBase.CB_AudioFile_AudioFileCache_USE_SPEAKER_VOLUME_AS_MAXIMUM} property is set to true or it will be 100 otherwise) that was set before the audio was muted. Internally, uses the &quot;volumeBeforeMute&quot; property of the used audio API object. Possible internal audio API objects are {@link CB_AudioFile_API.WAAPI} object for &quot;WAAPI&quot; ([HTML5 Web Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API}), {@link CB_AudioFile_API.SM2} object for &quot;SM2&quot; ([SoundManager 2]{@link http://schillmania.com/projects/soundmanager2/}), {@link CB_AudioFile_API.ACMP} object for &quot;ACMP&quot; ([Apache Cordova Media Plugin]{@link https://github.com/apache/cordova-plugin-media}) or {@link CB_AudioFile_API.AAPI} object for &quot;AAPI&quot; ([HTML5 Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/audio}).</p>","kind":"function","returns":[{"type":{"names":["number"]},"description":"<p>Returns the volume (from 0 to the maximum value, where the maximum value will be the returning value of calling the {@link CB_Speaker.getVolume} function if the {@link CB_Configuration.CrossBase.CB_AudioFile_AudioFileCache_USE_SPEAKER_VOLUME_AS_MAXIMUM} property is set to true or it will be 100 otherwise) that was set before the audio was muted. If the audio was not muted before, it will contain the default volume used in the &quot;volume&quot; property of the used audio API object.</p>"}],"name":"getVolumeBeforeMute","longname":"CB_AudioFile#getVolumeBeforeMute","memberof":"CB_AudioFile","scope":"instance"},{"comment":"/**\r\n * Returns the current volume (from 0 to the maximum value, where the maximum value will be the returning value of calling the {@link CB_Speaker.getVolume} function if the {@link CB_Configuration.CrossBase.CB_AudioFile_AudioFileCache_USE_SPEAKER_VOLUME_AS_MAXIMUM} property is set to true or it will be 100 otherwise). Internally, uses the \"volume\" property of the used audio API object. Possible internal audio API objects are {@link CB_AudioFile_API.WAAPI} object for \"WAAPI\" ([HTML5 Web Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API}), {@link CB_AudioFile_API.SM2} object for \"SM2\" ([SoundManager 2]{@link http://schillmania.com/projects/soundmanager2/}), {@link CB_AudioFile_API.ACMP} object for \"ACMP\" ([Apache Cordova Media Plugin]{@link https://github.com/apache/cordova-plugin-media}) or {@link CB_AudioFile_API.AAPI} object for \"AAPI\" ([HTML5 Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/audio}).\r\n * @function\r\n * @returns {number} Returns the current volume (from 0 to the maximum value, where the maximum value will be the returning value of calling the {@link CB_Speaker.getVolume} function if the {@link CB_Configuration.CrossBase.CB_AudioFile_AudioFileCache_USE_SPEAKER_VOLUME_AS_MAXIMUM} property is set to true or it will be 100 otherwise).\r\n */","meta":{"range":[68477,68595],"filename":"CB_AudioFile.js","lineno":732,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100002920","name":"CB_AudioFile.prototype.getVolume","type":"FunctionExpression","paramnames":[]},"vars":{"this.volume":"CB_AudioFile#volume"}},"description":"<p>Returns the current volume (from 0 to the maximum value, where the maximum value will be the returning value of calling the {@link CB_Speaker.getVolume} function if the {@link CB_Configuration.CrossBase.CB_AudioFile_AudioFileCache_USE_SPEAKER_VOLUME_AS_MAXIMUM} property is set to true or it will be 100 otherwise). Internally, uses the &quot;volume&quot; property of the used audio API object. Possible internal audio API objects are {@link CB_AudioFile_API.WAAPI} object for &quot;WAAPI&quot; ([HTML5 Web Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API}), {@link CB_AudioFile_API.SM2} object for &quot;SM2&quot; ([SoundManager 2]{@link http://schillmania.com/projects/soundmanager2/}), {@link CB_AudioFile_API.ACMP} object for &quot;ACMP&quot; ([Apache Cordova Media Plugin]{@link https://github.com/apache/cordova-plugin-media}) or {@link CB_AudioFile_API.AAPI} object for &quot;AAPI&quot; ([HTML5 Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/audio}).</p>","kind":"function","returns":[{"type":{"names":["number"]},"description":"<p>Returns the current volume (from 0 to the maximum value, where the maximum value will be the returning value of calling the {@link CB_Speaker.getVolume} function if the {@link CB_Configuration.CrossBase.CB_AudioFile_AudioFileCache_USE_SPEAKER_VOLUME_AS_MAXIMUM} property is set to true or it will be 100 otherwise).</p>"}],"name":"getVolume","longname":"CB_AudioFile#getVolume","memberof":"CB_AudioFile","scope":"instance"},{"comment":"/**\r\n * Sets the desired volume for the audio file (from 0 to the maximum value, where the maximum value will be the returning value of calling the {@link CB_Speaker.getVolume} function if the {@link CB_Configuration.CrossBase.CB_AudioFile_AudioFileCache_USE_SPEAKER_VOLUME_AS_MAXIMUM} property is set to true or it will be 100 otherwise). Internally, uses the \"setVolume\" method of the used audio API object. Possible internal audio API objects are {@link CB_AudioFile_API.WAAPI} object for \"WAAPI\" ([HTML5 Web Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API}), {@link CB_AudioFile_API.SM2} object for \"SM2\" ([SoundManager 2]{@link http://schillmania.com/projects/soundmanager2/}), {@link CB_AudioFile_API.ACMP} object for \"ACMP\" ([Apache Cordova Media Plugin]{@link https://github.com/apache/cordova-plugin-media}) or {@link CB_AudioFile_API.AAPI} object for \"AAPI\" ([HTML5 Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/audio}).\r\n * @function\r\n * @param {number} [volume={@link CB_Speaker.getVolume()} | {@link CB_Configuration.CrossBase.CB_Speaker_DEFAULT_VOLUME}] - Desired volume (from 0 to the maximum value, where the maximum value will be the returning value of calling the {@link CB_Speaker.getVolume} function if the {@link CB_Configuration.CrossBase.CB_AudioFile_AudioFileCache_USE_SPEAKER_VOLUME_AS_MAXIMUM} property is set to true or it will be 100 otherwise). Used internally as the \"volume\" parameter to call the \"setVolume\" method of the audio API object.\r\n * @param {boolean} [forceSetVolumeProperty=false] - If set to true (not recommended), it will change the \"volume\" property of the used audio API object even when the volume failed to be changed. Used internally as the \"forceSetVolumeProperty\" parameter to call the \"setVolume\" method of the audio API object.\r\n * @param {function} [onSetVolume] - Callback function which will be called if it has been possible to set the volume (or at least it was possible to try it). It will not receive any parameters, being \"this\" the {@link CB_AudioFile} object. Used internally as the \"onSetVolume\" parameter (with a wrapper function) to call the \"setVolume\" method of the audio API object.\r\n * @returns {number} Returns the current volume (from 0 to the maximum value, where the maximum value will be the returning value of calling the {@link CB_Speaker.getVolume} function if the {@link CB_Configuration.CrossBase.CB_AudioFile_AudioFileCache_USE_SPEAKER_VOLUME_AS_MAXIMUM} property is set to true or it will be 100 otherwise).\r\n */","meta":{"range":[71165,71471],"filename":"CB_AudioFile.js","lineno":747,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100002943","name":"CB_AudioFile.prototype.setVolume","type":"FunctionExpression","paramnames":["volume","forceSetVolumeProperty","onSetVolume"]},"vars":{"that":"CB_AudioFile#setVolume~that","this.volume":"CB_AudioFile#volume","":null}},"description":"<p>Sets the desired volume for the audio file (from 0 to the maximum value, where the maximum value will be the returning value of calling the {@link CB_Speaker.getVolume} function if the {@link CB_Configuration.CrossBase.CB_AudioFile_AudioFileCache_USE_SPEAKER_VOLUME_AS_MAXIMUM} property is set to true or it will be 100 otherwise). Internally, uses the &quot;setVolume&quot; method of the used audio API object. Possible internal audio API objects are {@link CB_AudioFile_API.WAAPI} object for &quot;WAAPI&quot; ([HTML5 Web Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API}), {@link CB_AudioFile_API.SM2} object for &quot;SM2&quot; ([SoundManager 2]{@link http://schillmania.com/projects/soundmanager2/}), {@link CB_AudioFile_API.ACMP} object for &quot;ACMP&quot; ([Apache Cordova Media Plugin]{@link https://github.com/apache/cordova-plugin-media}) or {@link CB_AudioFile_API.AAPI} object for &quot;AAPI&quot; ([HTML5 Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/audio}).</p>","kind":"function","params":[{"type":{"names":["number"]},"optional":true,"defaultvalue":"{@link CB_Speaker.getVolume()} | {@link CB_Configuration.CrossBase.CB_Speaker_DEFAULT_VOLUME}","description":"<p>Desired volume (from 0 to the maximum value, where the maximum value will be the returning value of calling the {@link CB_Speaker.getVolume} function if the {@link CB_Configuration.CrossBase.CB_AudioFile_AudioFileCache_USE_SPEAKER_VOLUME_AS_MAXIMUM} property is set to true or it will be 100 otherwise). Used internally as the &quot;volume&quot; parameter to call the &quot;setVolume&quot; method of the audio API object.</p>","name":"volume"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If set to true (not recommended), it will change the &quot;volume&quot; property of the used audio API object even when the volume failed to be changed. Used internally as the &quot;forceSetVolumeProperty&quot; parameter to call the &quot;setVolume&quot; method of the audio API object.</p>","name":"forceSetVolumeProperty"},{"type":{"names":["function"]},"optional":true,"description":"<p>Callback function which will be called if it has been possible to set the volume (or at least it was possible to try it). It will not receive any parameters, being &quot;this&quot; the {@link CB_AudioFile} object. Used internally as the &quot;onSetVolume&quot; parameter (with a wrapper function) to call the &quot;setVolume&quot; method of the audio API object.</p>","name":"onSetVolume"}],"returns":[{"type":{"names":["number"]},"description":"<p>Returns the current volume (from 0 to the maximum value, where the maximum value will be the returning value of calling the {@link CB_Speaker.getVolume} function if the {@link CB_Configuration.CrossBase.CB_AudioFile_AudioFileCache_USE_SPEAKER_VOLUME_AS_MAXIMUM} property is set to true or it will be 100 otherwise).</p>"}],"name":"setVolume","longname":"CB_AudioFile#setVolume","memberof":"CB_AudioFile","scope":"instance"},{"comment":"/**\r\n * Mutes the audio file. Internally, uses the \"mute\" method of the used audio API object. Possible internal audio API objects are {@link CB_AudioFile_API.WAAPI} object for \"WAAPI\" ([HTML5 Web Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API}), {@link CB_AudioFile_API.SM2} object for \"SM2\" ([SoundManager 2]{@link http://schillmania.com/projects/soundmanager2/}), {@link CB_AudioFile_API.ACMP} object for \"ACMP\" ([Apache Cordova Media Plugin]{@link https://github.com/apache/cordova-plugin-media}) or {@link CB_AudioFile_API.AAPI} object for \"AAPI\" ([HTML5 Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/audio}).\r\n * @function\r\n * @param {function} [onMute] - Callback function which will be called if it has been possible to mute the audio file (or at least it was possible to try it). It will not receive any parameters, being \"this\" the {@link CB_AudioFile} object. Used internally as the \"onMute\" parameter (with a wrapper function) to call the \"mute\" method of the audio API object.\r\n * @returns {number} Returns the current volume (from 0 to the maximum value, where the maximum value will be the returning value of calling the {@link CB_Speaker.getVolume} function if the {@link CB_Configuration.CrossBase.CB_AudioFile_AudioFileCache_USE_SPEAKER_VOLUME_AS_MAXIMUM} property is set to true or it will be 100 otherwise). If all goes well, the returning value should be zero (0). Note that, even when it returns a zero (0) value, this does not always mean that the mute has been applied successfully.\r\n */","meta":{"range":[73055,73265],"filename":"CB_AudioFile.js","lineno":761,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100002991","name":"CB_AudioFile.prototype.mute","type":"FunctionExpression","paramnames":["onMute"]},"vars":{"that":"CB_AudioFile#mute~that","this.volume":"CB_AudioFile#volume","":null}},"description":"<p>Mutes the audio file. Internally, uses the &quot;mute&quot; method of the used audio API object. Possible internal audio API objects are {@link CB_AudioFile_API.WAAPI} object for &quot;WAAPI&quot; ([HTML5 Web Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API}), {@link CB_AudioFile_API.SM2} object for &quot;SM2&quot; ([SoundManager 2]{@link http://schillmania.com/projects/soundmanager2/}), {@link CB_AudioFile_API.ACMP} object for &quot;ACMP&quot; ([Apache Cordova Media Plugin]{@link https://github.com/apache/cordova-plugin-media}) or {@link CB_AudioFile_API.AAPI} object for &quot;AAPI&quot; ([HTML5 Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/audio}).</p>","kind":"function","params":[{"type":{"names":["function"]},"optional":true,"description":"<p>Callback function which will be called if it has been possible to mute the audio file (or at least it was possible to try it). It will not receive any parameters, being &quot;this&quot; the {@link CB_AudioFile} object. Used internally as the &quot;onMute&quot; parameter (with a wrapper function) to call the &quot;mute&quot; method of the audio API object.</p>","name":"onMute"}],"returns":[{"type":{"names":["number"]},"description":"<p>Returns the current volume (from 0 to the maximum value, where the maximum value will be the returning value of calling the {@link CB_Speaker.getVolume} function if the {@link CB_Configuration.CrossBase.CB_AudioFile_AudioFileCache_USE_SPEAKER_VOLUME_AS_MAXIMUM} property is set to true or it will be 100 otherwise). If all goes well, the returning value should be zero (0). Note that, even when it returns a zero (0) value, this does not always mean that the mute has been applied successfully.</p>"}],"name":"mute","longname":"CB_AudioFile#mute","memberof":"CB_AudioFile","scope":"instance"},{"comment":"/**\r\n * Restores audio after muting it (unmutes it). Internally, uses the \"unmute\" method of the used audio API object which uses its own \"volumeBeforeMute\" property. Possible internal audio API objects are {@link CB_AudioFile_API.WAAPI} object for \"WAAPI\" ([HTML5 Web Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API}), {@link CB_AudioFile_API.SM2} object for \"SM2\" ([SoundManager 2]{@link http://schillmania.com/projects/soundmanager2/}), {@link CB_AudioFile_API.ACMP} object for \"ACMP\" ([Apache Cordova Media Plugin]{@link https://github.com/apache/cordova-plugin-media}) or {@link CB_AudioFile_API.AAPI} object for \"AAPI\" ([HTML5 Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/audio}).\r\n * @function\r\n * @param {function} [onUnmute] - Callback function which will be called if it has been possible to unmute the audio file (or at least it was possible to try it). It will not receive any parameters, being \"this\" the {@link CB_AudioFile} object. Used internally as the \"onUnmute\" parameter (with a wrapper function) to call the \"unmute\" method of the audio API object.\r\n * @returns {number} Returns the current volume (from 0 to the maximum value, where the maximum value will be the returning value of calling the {@link CB_Speaker.getVolume} function if the {@link CB_Configuration.CrossBase.CB_AudioFile_AudioFileCache_USE_SPEAKER_VOLUME_AS_MAXIMUM} property is set to true or it will be 100 otherwise).\r\n */","meta":{"range":[74750,74970],"filename":"CB_AudioFile.js","lineno":775,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100003034","name":"CB_AudioFile.prototype.unmute","type":"FunctionExpression","paramnames":["onUnmute"]},"vars":{"that":"CB_AudioFile#unmute~that","this.volume":"CB_AudioFile#volume","":null}},"description":"<p>Restores audio after muting it (unmutes it). Internally, uses the &quot;unmute&quot; method of the used audio API object which uses its own &quot;volumeBeforeMute&quot; property. Possible internal audio API objects are {@link CB_AudioFile_API.WAAPI} object for &quot;WAAPI&quot; ([HTML5 Web Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API}), {@link CB_AudioFile_API.SM2} object for &quot;SM2&quot; ([SoundManager 2]{@link http://schillmania.com/projects/soundmanager2/}), {@link CB_AudioFile_API.ACMP} object for &quot;ACMP&quot; ([Apache Cordova Media Plugin]{@link https://github.com/apache/cordova-plugin-media}) or {@link CB_AudioFile_API.AAPI} object for &quot;AAPI&quot; ([HTML5 Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/audio}).</p>","kind":"function","params":[{"type":{"names":["function"]},"optional":true,"description":"<p>Callback function which will be called if it has been possible to unmute the audio file (or at least it was possible to try it). It will not receive any parameters, being &quot;this&quot; the {@link CB_AudioFile} object. Used internally as the &quot;onUnmute&quot; parameter (with a wrapper function) to call the &quot;unmute&quot; method of the audio API object.</p>","name":"onUnmute"}],"returns":[{"type":{"names":["number"]},"description":"<p>Returns the current volume (from 0 to the maximum value, where the maximum value will be the returning value of calling the {@link CB_Speaker.getVolume} function if the {@link CB_Configuration.CrossBase.CB_AudioFile_AudioFileCache_USE_SPEAKER_VOLUME_AS_MAXIMUM} property is set to true or it will be 100 otherwise).</p>"}],"name":"unmute","longname":"CB_AudioFile#unmute","memberof":"CB_AudioFile","scope":"instance"},{"comment":"/**\r\n * Gets the current time (in milliseconds) which belongs to the position where the audio is currently playing or where it has been paused. Note that some audio APIs and clients could give wrong values. Internally, uses the \"getCurrentTime\" method of the used audio API object. Possible internal audio API objects are {@link CB_AudioFile_API.WAAPI} object for \"WAAPI\" ([HTML5 Web Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API}), {@link CB_AudioFile_API.SM2} object for \"SM2\" ([SoundManager 2]{@link http://schillmania.com/projects/soundmanager2/}), {@link CB_AudioFile_API.ACMP} object for \"ACMP\" ([Apache Cordova Media Plugin]{@link https://github.com/apache/cordova-plugin-media}) or {@link CB_AudioFile_API.AAPI} object for \"AAPI\" ([HTML5 Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/audio}).\r\n * @function\r\n * @returns {number} Returns the current time (in milliseconds). Note that some audio APIs and clients could give wrong values.\r\n */","meta":{"range":[75991,76095],"filename":"CB_AudioFile.js","lineno":788,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100003077","name":"CB_AudioFile.prototype.getCurrentTime","type":"FunctionExpression","paramnames":[]}},"description":"<p>Gets the current time (in milliseconds) which belongs to the position where the audio is currently playing or where it has been paused. Note that some audio APIs and clients could give wrong values. Internally, uses the &quot;getCurrentTime&quot; method of the used audio API object. Possible internal audio API objects are {@link CB_AudioFile_API.WAAPI} object for &quot;WAAPI&quot; ([HTML5 Web Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API}), {@link CB_AudioFile_API.SM2} object for &quot;SM2&quot; ([SoundManager 2]{@link http://schillmania.com/projects/soundmanager2/}), {@link CB_AudioFile_API.ACMP} object for &quot;ACMP&quot; ([Apache Cordova Media Plugin]{@link https://github.com/apache/cordova-plugin-media}) or {@link CB_AudioFile_API.AAPI} object for &quot;AAPI&quot; ([HTML5 Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/audio}).</p>","kind":"function","returns":[{"type":{"names":["number"]},"description":"<p>Returns the current time (in milliseconds). Note that some audio APIs and clients could give wrong values.</p>"}],"name":"getCurrentTime","longname":"CB_AudioFile#getCurrentTime","memberof":"CB_AudioFile","scope":"instance"},{"comment":"/**\r\n * Gets the current status of the audio file.\r\n * @function\r\n * @param {boolean} [realStatus=false] - If set to true, it will return the \"status\" property of the used audio API object instead of the \"status\" property of the current CB_AudioFile object. Possible internal audio API objects are {@link CB_AudioFile_API.WAAPI} object for \"WAAPI\" ([HTML5 Web Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API}), {@link CB_AudioFile_API.SM2} object for \"SM2\" ([SoundManager 2]{@link http://schillmania.com/projects/soundmanager2/}), {@link CB_AudioFile_API.ACMP} object for \"ACMP\" ([Apache Cordova Media Plugin]{@link https://github.com/apache/cordova-plugin-media}) or {@link CB_AudioFile_API.AAPI} object for \"AAPI\" ([HTML5 Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/audio}).\r\n * @returns {number} Returns the current status of the audio file. It is a number, which should match the value of the CB_AudioFile.UNLOADED (still unloaded), CB_AudioFile.LOADING (loading), CB_AudioFile.UNCHECKED (not checked by calling the \"checkPlaying\" method yet), CB_AudioFile.CHECKING (being checked by the \"checkPlaying\" method), CB_AudioFile.LOADED (loaded), CB_AudioFile.FAILED (failed loading or failed to play or by any other reason) or CB_AudioFile.ABORTED (aborted because it was destroyed with the \"destructor\" method) property.\r\n */","meta":{"range":[77495,77678],"filename":"CB_AudioFile.js","lineno":800,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100003093","name":"CB_AudioFile.prototype.getStatus","type":"FunctionExpression","paramnames":["realStatus"]}},"description":"<p>Gets the current status of the audio file.</p>","kind":"function","params":[{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If set to true, it will return the &quot;status&quot; property of the used audio API object instead of the &quot;status&quot; property of the current CB_AudioFile object. Possible internal audio API objects are {@link CB_AudioFile_API.WAAPI} object for &quot;WAAPI&quot; ([HTML5 Web Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API}), {@link CB_AudioFile_API.SM2} object for &quot;SM2&quot; ([SoundManager 2]{@link http://schillmania.com/projects/soundmanager2/}), {@link CB_AudioFile_API.ACMP} object for &quot;ACMP&quot; ([Apache Cordova Media Plugin]{@link https://github.com/apache/cordova-plugin-media}) or {@link CB_AudioFile_API.AAPI} object for &quot;AAPI&quot; ([HTML5 Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/audio}).</p>","name":"realStatus"}],"returns":[{"type":{"names":["number"]},"description":"<p>Returns the current status of the audio file. It is a number, which should match the value of the CB_AudioFile.UNLOADED (still unloaded), CB_AudioFile.LOADING (loading), CB_AudioFile.UNCHECKED (not checked by calling the &quot;checkPlaying&quot; method yet), CB_AudioFile.CHECKING (being checked by the &quot;checkPlaying&quot; method), CB_AudioFile.LOADED (loaded), CB_AudioFile.FAILED (failed loading or failed to play or by any other reason) or CB_AudioFile.ABORTED (aborted because it was destroyed with the &quot;destructor&quot; method) property.</p>"}],"name":"getStatus","longname":"CB_AudioFile#getStatus","memberof":"CB_AudioFile","scope":"instance"},{"comment":"/**\r\n * Gets the current status of the audio file, as a string.\r\n * @function\r\n * @param {boolean} [realStatus=false] - If set to true, it will have in mind the \"status\" property of the used audio API object instead of the \"status\" property of the current CB_AudioFile object. Possible internal audio API objects are {@link CB_AudioFile_API.WAAPI} object for \"WAAPI\" ([HTML5 Web Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API}), {@link CB_AudioFile_API.SM2} object for \"SM2\" ([SoundManager 2]{@link http://schillmania.com/projects/soundmanager2/}), {@link CB_AudioFile_API.ACMP} object for \"ACMP\" ([Apache Cordova Media Plugin]{@link https://github.com/apache/cordova-plugin-media}) or {@link CB_AudioFile_API.AAPI} object for \"AAPI\" ([HTML5 Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/audio}).\r\n * @returns {string} Returns the current status of the audio file, as a string. Possible return values are \"UNLOADED\", \"LOADING\", \"UNCHECKED\", \"CHECKING\", \"LOADED\", \"FAILED\", \"ABORTED\" or \"UNKNOWN (UNKNOWN_STATUS)\" (where \"UNKNOWN_STATUS\" will be a value from the \"status\" property not recognized as any possible status).\r\n */","meta":{"range":[78875,79208],"filename":"CB_AudioFile.js","lineno":813,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100003121","name":"CB_AudioFile.prototype.getStatusString","type":"FunctionExpression","paramnames":["realStatus"]},"vars":{"status":"CB_AudioFile#getStatusString~status","statuses":"CB_AudioFile#getStatusString~statuses"}},"description":"<p>Gets the current status of the audio file, as a string.</p>","kind":"function","params":[{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If set to true, it will have in mind the &quot;status&quot; property of the used audio API object instead of the &quot;status&quot; property of the current CB_AudioFile object. Possible internal audio API objects are {@link CB_AudioFile_API.WAAPI} object for &quot;WAAPI&quot; ([HTML5 Web Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API}), {@link CB_AudioFile_API.SM2} object for &quot;SM2&quot; ([SoundManager 2]{@link http://schillmania.com/projects/soundmanager2/}), {@link CB_AudioFile_API.ACMP} object for &quot;ACMP&quot; ([Apache Cordova Media Plugin]{@link https://github.com/apache/cordova-plugin-media}) or {@link CB_AudioFile_API.AAPI} object for &quot;AAPI&quot; ([HTML5 Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/audio}).</p>","name":"realStatus"}],"returns":[{"type":{"names":["string"]},"description":"<p>Returns the current status of the audio file, as a string. Possible return values are &quot;UNLOADED&quot;, &quot;LOADING&quot;, &quot;UNCHECKED&quot;, &quot;CHECKING&quot;, &quot;LOADED&quot;, &quot;FAILED&quot;, &quot;ABORTED&quot; or &quot;UNKNOWN (UNKNOWN_STATUS)&quot; (where &quot;UNKNOWN_STATUS&quot; will be a value from the &quot;status&quot; property not recognized as any possible status).</p>"}],"name":"getStatusString","longname":"CB_AudioFile#getStatusString","memberof":"CB_AudioFile","scope":"instance"},{"comment":"/**\r\n * Tells whether the audio file is playing or not. Internally, uses the {@link CB_AudioFile#isStopped} and {@link CB_AudioFile#isPaused} methods.\r\n * @function\r\n * @returns {boolean} Returns whether the audio file is playing or not.\r\n */","meta":{"range":[79460,79561],"filename":"CB_AudioFile.js","lineno":827,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100003169","name":"CB_AudioFile.prototype.isPlaying","type":"FunctionExpression","paramnames":[]}},"description":"<p>Tells whether the audio file is playing or not. Internally, uses the {@link CB_AudioFile#isStopped} and {@link CB_AudioFile#isPaused} methods.</p>","kind":"function","returns":[{"type":{"names":["boolean"]},"description":"<p>Returns whether the audio file is playing or not.</p>"}],"name":"isPlaying","longname":"CB_AudioFile#isPlaying","memberof":"CB_AudioFile","scope":"instance"},{"comment":"/**\r\n * Tells whether the audio is paused or not. Internally, uses the \"paused\" property of the used audio API object. Possible internal audio API objects are {@link CB_AudioFile_API.WAAPI} object for \"WAAPI\" ([HTML5 Web Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API}), {@link CB_AudioFile_API.SM2} object for \"SM2\" ([SoundManager 2]{@link http://schillmania.com/projects/soundmanager2/}), {@link CB_AudioFile_API.ACMP} object for \"ACMP\" ([Apache Cordova Media Plugin]{@link https://github.com/apache/cordova-plugin-media}) or {@link CB_AudioFile_API.AAPI} object for \"AAPI\" ([HTML5 Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/audio}).\r\n * @function\r\n * @returns {boolean} Returns whether the audio is paused or not.\r\n */","meta":{"range":[80357,80445],"filename":"CB_AudioFile.js","lineno":838,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100003190","name":"CB_AudioFile.prototype.isPaused","type":"FunctionExpression","paramnames":[]}},"description":"<p>Tells whether the audio is paused or not. Internally, uses the &quot;paused&quot; property of the used audio API object. Possible internal audio API objects are {@link CB_AudioFile_API.WAAPI} object for &quot;WAAPI&quot; ([HTML5 Web Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API}), {@link CB_AudioFile_API.SM2} object for &quot;SM2&quot; ([SoundManager 2]{@link http://schillmania.com/projects/soundmanager2/}), {@link CB_AudioFile_API.ACMP} object for &quot;ACMP&quot; ([Apache Cordova Media Plugin]{@link https://github.com/apache/cordova-plugin-media}) or {@link CB_AudioFile_API.AAPI} object for &quot;AAPI&quot; ([HTML5 Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/audio}).</p>","kind":"function","returns":[{"type":{"names":["boolean"]},"description":"<p>Returns whether the audio is paused or not.</p>"}],"name":"isPaused","longname":"CB_AudioFile#isPaused","memberof":"CB_AudioFile","scope":"instance"},{"comment":"/**\r\n * Tells whether the audio file is stopped or not. Internally, uses the \"stopped\" property of the used audio API object. Possible internal audio API objects are {@link CB_AudioFile_API.WAAPI} object for \"WAAPI\" ([HTML5 Web Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API}), {@link CB_AudioFile_API.SM2} object for \"SM2\" ([SoundManager 2]{@link http://schillmania.com/projects/soundmanager2/}), {@link CB_AudioFile_API.ACMP} object for \"ACMP\" ([Apache Cordova Media Plugin]{@link https://github.com/apache/cordova-plugin-media}) or {@link CB_AudioFile_API.AAPI} object for \"AAPI\" ([HTML5 Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/audio}).\r\n * @function\r\n * @returns {boolean} Returns whether the audio file is stopped or not.\r\n */","meta":{"range":[81254,81344],"filename":"CB_AudioFile.js","lineno":849,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100003205","name":"CB_AudioFile.prototype.isStopped","type":"FunctionExpression","paramnames":[]}},"description":"<p>Tells whether the audio file is stopped or not. Internally, uses the &quot;stopped&quot; property of the used audio API object. Possible internal audio API objects are {@link CB_AudioFile_API.WAAPI} object for &quot;WAAPI&quot; ([HTML5 Web Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API}), {@link CB_AudioFile_API.SM2} object for &quot;SM2&quot; ([SoundManager 2]{@link http://schillmania.com/projects/soundmanager2/}), {@link CB_AudioFile_API.ACMP} object for &quot;ACMP&quot; ([Apache Cordova Media Plugin]{@link https://github.com/apache/cordova-plugin-media}) or {@link CB_AudioFile_API.AAPI} object for &quot;AAPI&quot; ([HTML5 Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/audio}).</p>","kind":"function","returns":[{"type":{"names":["boolean"]},"description":"<p>Returns whether the audio file is stopped or not.</p>"}],"name":"isStopped","longname":"CB_AudioFile#isStopped","memberof":"CB_AudioFile","scope":"instance"},{"comment":"/**\r\n * Sets a function to execute when the audio file stops playing or removes it. Internally, uses the \"onStop\" method of the used audio API object (wrapping the given function).\r\n * @function\r\n * @param {function|null} callbackFunction - The function (event listener) that we want to execute when the event is fired. No parameters will be received, being \"this\" the {@link CB_AudioFile} object. If a null value is used, the event will be removed.\r\n * @param {boolean} [keepOldFunction=true] - Defines whether we want to keep any possible previous event listener or not.\r\n * @returns {boolean} Returns whether the event has been set or not (removed).\r\n */","meta":{"range":[82318,83474],"filename":"CB_AudioFile.js","lineno":877,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100003220","name":"CB_AudioFile.prototype.onStop","type":"FunctionExpression","paramnames":["callbackFunction","keepOldFunction"]},"vars":{"keepOldFunction":"CB_AudioFile#onStop~keepOldFunction","this._onStopFunction":"CB_AudioFile#_onStopFunction","that":"CB_AudioFile#onStop~that","oldFunction":"CB_AudioFile#onStop~oldFunction","":null}},"description":"<p>Sets a function to execute when the audio file stops playing or removes it. Internally, uses the &quot;onStop&quot; method of the used audio API object (wrapping the given function).</p>","kind":"function","params":[{"type":{"names":["function","null"]},"description":"<p>The function (event listener) that we want to execute when the event is fired. No parameters will be received, being &quot;this&quot; the {@link CB_AudioFile} object. If a null value is used, the event will be removed.</p>","name":"callbackFunction"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":true,"description":"<p>Defines whether we want to keep any possible previous event listener or not.</p>","name":"keepOldFunction"}],"returns":[{"type":{"names":["boolean"]},"description":"<p>Returns whether the event has been set or not (removed).</p>"}],"name":"onStop","longname":"CB_AudioFile#onStop","memberof":"CB_AudioFile","scope":"instance"},{"comment":"/**\r\n * Tells the last \"startAt\" parameter value used by the {@link CB_AudioFile#play} or the {@link CB_AudioFile#resume} method (or used by the equivalents methods of the same name from the used audio API object). Internally, uses the \"lastStartAt\" property of the used audio API object. Possible internal audio API objects are {@link CB_AudioFile_API.WAAPI} object for \"WAAPI\" ([HTML5 Web Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API}), {@link CB_AudioFile_API.SM2} object for \"SM2\" ([SoundManager 2]{@link http://schillmania.com/projects/soundmanager2/}), {@link CB_AudioFile_API.ACMP} object for \"ACMP\" ([Apache Cordova Media Plugin]{@link https://github.com/apache/cordova-plugin-media}) or {@link CB_AudioFile_API.AAPI} object for \"AAPI\" ([HTML5 Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/audio}).\r\n * @function\r\n * @param {boolean} [numeric=false] - If set to true, it will sanitize the returning value by returning zero instead of undefined, null or any other non-numeric value.\r\n * @returns {number|*} Returns the last \"startAt\" value used by the {@link CB_AudioFile#play} or the {@link CB_AudioFile#resume} method (or used by the equivalents methods of the same name from the used audio API object). If we want it to be numeric always, the \"numeric\" parameter should be set to true.\r\n */","meta":{"range":[84849,85158],"filename":"CB_AudioFile.js","lineno":915,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100003331","name":"CB_AudioFile.prototype.getStartAt","type":"FunctionExpression","paramnames":["numeric"]},"vars":{"value":"CB_AudioFile#getStartAt~value"}},"description":"<p>Tells the last &quot;startAt&quot; parameter value used by the {@link CB_AudioFile#play} or the {@link CB_AudioFile#resume} method (or used by the equivalents methods of the same name from the used audio API object). Internally, uses the &quot;lastStartAt&quot; property of the used audio API object. Possible internal audio API objects are {@link CB_AudioFile_API.WAAPI} object for &quot;WAAPI&quot; ([HTML5 Web Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API}), {@link CB_AudioFile_API.SM2} object for &quot;SM2&quot; ([SoundManager 2]{@link http://schillmania.com/projects/soundmanager2/}), {@link CB_AudioFile_API.ACMP} object for &quot;ACMP&quot; ([Apache Cordova Media Plugin]{@link https://github.com/apache/cordova-plugin-media}) or {@link CB_AudioFile_API.AAPI} object for &quot;AAPI&quot; ([HTML5 Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/audio}).</p>","kind":"function","params":[{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If set to true, it will sanitize the returning value by returning zero instead of undefined, null or any other non-numeric value.</p>","name":"numeric"}],"returns":[{"type":{"names":["number","*"]},"description":"<p>Returns the last &quot;startAt&quot; value used by the {@link CB_AudioFile#play} or the {@link CB_AudioFile#resume} method (or used by the equivalents methods of the same name from the used audio API object). If we want it to be numeric always, the &quot;numeric&quot; parameter should be set to true.</p>"}],"name":"getStartAt","longname":"CB_AudioFile#getStartAt","memberof":"CB_AudioFile","scope":"instance"},{"comment":"/**\r\n * Tells the last \"stopAt\" parameter value used by the {@link CB_AudioFile#play} or the {@link CB_AudioFile#resume} method (or used by the equivalents methods of the same name from the used audio API object). Internally, uses the \"lastStopAt\" property of the used audio API object. Possible internal audio API objects are {@link CB_AudioFile_API.WAAPI} object for \"WAAPI\" ([HTML5 Web Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API}), {@link CB_AudioFile_API.SM2} object for \"SM2\" ([SoundManager 2]{@link http://schillmania.com/projects/soundmanager2/}), {@link CB_AudioFile_API.ACMP} object for \"ACMP\" ([Apache Cordova Media Plugin]{@link https://github.com/apache/cordova-plugin-media}) or {@link CB_AudioFile_API.AAPI} object for \"AAPI\" ([HTML5 Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/audio}).\r\n * @function\r\n * @param {boolean} [numeric=false] - If set to true, it will sanitize the returning value by returning zero instead of undefined, null or any other non-numeric value.\r\n * @returns {number|*} Returns the last \"stopAt\" value used by the {@link CB_AudioFile#play} or the {@link CB_AudioFile#resume} method (or used by the equivalents methods of the same name from the used audio API object). If we want it to be numeric always, the \"numeric\" parameter should be set to true.\r\n */","meta":{"range":[86530,86836],"filename":"CB_AudioFile.js","lineno":930,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100003385","name":"CB_AudioFile.prototype.getStopAt","type":"FunctionExpression","paramnames":["numeric"]},"vars":{"value":"CB_AudioFile#getStopAt~value"}},"description":"<p>Tells the last &quot;stopAt&quot; parameter value used by the {@link CB_AudioFile#play} or the {@link CB_AudioFile#resume} method (or used by the equivalents methods of the same name from the used audio API object). Internally, uses the &quot;lastStopAt&quot; property of the used audio API object. Possible internal audio API objects are {@link CB_AudioFile_API.WAAPI} object for &quot;WAAPI&quot; ([HTML5 Web Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API}), {@link CB_AudioFile_API.SM2} object for &quot;SM2&quot; ([SoundManager 2]{@link http://schillmania.com/projects/soundmanager2/}), {@link CB_AudioFile_API.ACMP} object for &quot;ACMP&quot; ([Apache Cordova Media Plugin]{@link https://github.com/apache/cordova-plugin-media}) or {@link CB_AudioFile_API.AAPI} object for &quot;AAPI&quot; ([HTML5 Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/audio}).</p>","kind":"function","params":[{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If set to true, it will sanitize the returning value by returning zero instead of undefined, null or any other non-numeric value.</p>","name":"numeric"}],"returns":[{"type":{"names":["number","*"]},"description":"<p>Returns the last &quot;stopAt&quot; value used by the {@link CB_AudioFile#play} or the {@link CB_AudioFile#resume} method (or used by the equivalents methods of the same name from the used audio API object). If we want it to be numeric always, the &quot;numeric&quot; parameter should be set to true.</p>"}],"name":"getStopAt","longname":"CB_AudioFile#getStopAt","memberof":"CB_AudioFile","scope":"instance"},{"comment":"/**\r\n * Returns a number representing the percentage of the loading progress for the audio file (from 0 to 100, being 100 a complete loading progress). The way to calculate it internally may differ from one audio API to another and it is not totally reliable. Internally, uses the \"getProgress\" method of the used audio API object. Possible internal audio API objects are {@link CB_AudioFile_API.WAAPI} object for \"WAAPI\" ([HTML5 Web Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API}), {@link CB_AudioFile_API.SM2} object for \"SM2\" ([SoundManager 2]{@link http://schillmania.com/projects/soundmanager2/}), {@link CB_AudioFile_API.ACMP} object for \"ACMP\" ([Apache Cordova Media Plugin]{@link https://github.com/apache/cordova-plugin-media}) or {@link CB_AudioFile_API.AAPI} object for \"AAPI\" ([HTML5 Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/audio}).\r\n * @function\r\n * @returns {number} Returns a number representing the percentage of the loading progress for the audio file (from 0 to 100, being 100 a complete loading progress). The way to calculate it internally may differ from one audio API to another and it is not totally reliable.\r\n */","meta":{"range":[88052,88154],"filename":"CB_AudioFile.js","lineno":944,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100003439","name":"CB_AudioFile.prototype.getProgress","type":"FunctionExpression","paramnames":[]}},"description":"<p>Returns a number representing the percentage of the loading progress for the audio file (from 0 to 100, being 100 a complete loading progress). The way to calculate it internally may differ from one audio API to another and it is not totally reliable. Internally, uses the &quot;getProgress&quot; method of the used audio API object. Possible internal audio API objects are {@link CB_AudioFile_API.WAAPI} object for &quot;WAAPI&quot; ([HTML5 Web Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API}), {@link CB_AudioFile_API.SM2} object for &quot;SM2&quot; ([SoundManager 2]{@link http://schillmania.com/projects/soundmanager2/}), {@link CB_AudioFile_API.ACMP} object for &quot;ACMP&quot; ([Apache Cordova Media Plugin]{@link https://github.com/apache/cordova-plugin-media}) or {@link CB_AudioFile_API.AAPI} object for &quot;AAPI&quot; ([HTML5 Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/audio}).</p>","kind":"function","returns":[{"type":{"names":["number"]},"description":"<p>Returns a number representing the percentage of the loading progress for the audio file (from 0 to 100, being 100 a complete loading progress). The way to calculate it internally may differ from one audio API to another and it is not totally reliable.</p>"}],"name":"getProgress","longname":"CB_AudioFile#getProgress","memberof":"CB_AudioFile","scope":"instance"},{"comment":"/**\r\n * @file Audio files cache management. Contains the {@link CB_AudioFileCache} class.\r\n * @author Joan Alba Maldonado <workindalian@gmail.com>\r\n */","meta":{"filename":"CB_AudioFileCache.js","lineno":1,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{}},"name":"CrossBase/audiovisual/audio/CB_AudioFileCache.js","kind":"file","description":"<p>Audio files cache management. Contains the {@link CB_AudioFileCache} class.</p>","preserveName":true,"author":["Joan Alba Maldonado <workindalian@gmail.com>"],"longname":"CrossBase/audiovisual/audio/CB_AudioFileCache.js","scope":"global"},{"comment":"/**\r\n * Object whose property names are audio formats (they can include just the format as 'audio/ogg' or also the codec as for example 'audio/ogg; codecs=\"vorbis\"') and their value is an array of strings with the URIs (audio file paths or audio data URIs) of the audio files in order of preference. The best audio format for the current client will be tried to be calculated and it will use the first working URI (audio file path or data URI). The more audio formats and URIs provided the better, as it will help to maximize the compatibility with as many clients as possible (as some audio APIs and client just support some formats, or use absolute paths instead of relative ones, etc.). Even with different formats, all provided URIs should belong to the same audio (this means same sound or same music, with same length, etc.). NOTE: Only some clients with some audio APIs will support data URIs.\r\n * @example\r\n * {\r\n *\t\"audio/mp4\" : [ \"first/path/sound.m4a\", \"alternative/path/sound.m4a\", \"alternative/path/2/sound.mp4\", ... ],\r\n *\t\"audio/ogg\" : [ \"first/path/sound.opus\", \"alternative/path/sound.ogg\", \"alternative/path/2/sound.ogg\", ... ],\r\n *\t\"audio/mpeg\" : [ \"first/path/sound.mp3\", \"alternative/path/sound.mp3\", \"alternative/path/2/sound.mp3\", ... ],\r\n *\t\"audio/wav\" : [ \"first/path/sound.wav\", \"alternative/path/sound.wav\", \"alternative/path/2/sound.wav\", ... ],\r\n *\t...\r\n * }\r\n * @memberof CB_AudioFileCache\r\n * @typedef {Object} CB_AudioFileCache.URIS_OBJECT\r\n * @property {array} filePaths - Being the name of each property the audio format (it can include just the format as 'audio/ogg' or also the codec as for example 'audio/ogg; codecs=\"vorbis\"'), the value will always be a numeric array of strings with the URIs (audio file paths or audio data URIs) of the audio files in order of preference. The best audio format for the current client will be tried to be calculated and it will use the first working URI (audio file path or data URI). The more audio formats and URIs provided the better, as it will help to maximize the compatibility with as many clients as possible (as some audio APIs and client just support some formats, or use absolute paths instead of relative ones, etc.). Even with different formats, all provided URIs should belong to the same audio (this means same sound or same music, with same length, etc.). NOTE: Only some clients with some audio APIs will support data URIs.\r\n */","meta":{"filename":"CB_AudioFileCache.js","lineno":7,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{}},"description":"<p>Object whose property names are audio formats (they can include just the format as 'audio/ogg' or also the codec as for example 'audio/ogg; codecs=&quot;vorbis&quot;') and their value is an array of strings with the URIs (audio file paths or audio data URIs) of the audio files in order of preference. The best audio format for the current client will be tried to be calculated and it will use the first working URI (audio file path or data URI). The more audio formats and URIs provided the better, as it will help to maximize the compatibility with as many clients as possible (as some audio APIs and client just support some formats, or use absolute paths instead of relative ones, etc.). Even with different formats, all provided URIs should belong to the same audio (this means same sound or same music, with same length, etc.). NOTE: Only some clients with some audio APIs will support data URIs.</p>","examples":["{\r\t\"audio/mp4\" : [ \"first/path/sound.m4a\", \"alternative/path/sound.m4a\", \"alternative/path/2/sound.mp4\", ... ],\r\t\"audio/ogg\" : [ \"first/path/sound.opus\", \"alternative/path/sound.ogg\", \"alternative/path/2/sound.ogg\", ... ],\r\t\"audio/mpeg\" : [ \"first/path/sound.mp3\", \"alternative/path/sound.mp3\", \"alternative/path/2/sound.mp3\", ... ],\r\t\"audio/wav\" : [ \"first/path/sound.wav\", \"alternative/path/sound.wav\", \"alternative/path/2/sound.wav\", ... ],\r\t...\r}\r "],"memberof":"CB_AudioFileCache","kind":"typedef","name":"URIS_OBJECT","type":{"names":["Object"]},"properties":[{"type":{"names":["array"]},"description":"<p>Being the name of each property the audio format (it can include just the format as 'audio/ogg' or also the codec as for example 'audio/ogg; codecs=&quot;vorbis&quot;'), the value will always be a numeric array of strings with the URIs (audio file paths or audio data URIs) of the audio files in order of preference. The best audio format for the current client will be tried to be calculated and it will use the first working URI (audio file path or data URI). The more audio formats and URIs provided the better, as it will help to maximize the compatibility with as many clients as possible (as some audio APIs and client just support some formats, or use absolute paths instead of relative ones, etc.). Even with different formats, all provided URIs should belong to the same audio (this means same sound or same music, with same length, etc.). NOTE: Only some clients with some audio APIs will support data URIs.</p>","name":"filePaths"}],"longname":"CB_AudioFileCache.URIS_OBJECT","scope":"static"},{"comment":"/**\r\n * Object with the desired data and options for the audio files cache.\r\n * @memberof CB_AudioFileCache\r\n * @typedef {Object} CB_AudioFileCache.DATA_OBJECT\r\n * @property {CB_AudioFileCache.URIS_OBJECT} URIs - Object whose property names audio formats and their value is an array of strings with the URIs (audio file paths or audio data URIs) of the audio files in order of preference. The best audio format for the current client will be tried to be calculated and it will use the first working URI (audio file path or data URI). The more audio formats and URIs provided the better, as it will help to maximize the compatibility with as many clients as possible (as some audio APIs and client just support some formats, or use absolute paths instead of relative ones, etc.). Even with different formats, all provided URIs should belong to the same audio (this means same sound or same music, with same length, etc.). NOTE: Only some clients with some audio APIs will support data URIs. If a valid value is given, this will be added to the {@link CB_AudioFileCache#URIs} property.\r\n * @property {string} [id=\"\"] - Desired identifier for the audio files cache. Internal usage only recommended. If a valid value is given, this will be added to the {@link CB_AudioFileCache#id} property.\r\n * @property {array} [preferredAPIs={@link CB_Configuration.CrossBase.CB_AudioFileCache_PREFERRED_AUDIO_APIS}] - Array of strings with the preferred audio API or audio APIs, in order of preference. Possible audio APIs are \"WAAPI\" ([HTML5 Web Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API}), \"SM2\" ([SoundManager 2]{@link http://schillmania.com/projects/soundmanager2/}), \"ACMP\" ([Apache Cordova Media Plugin]{@link https://github.com/apache/cordova-plugin-media}) or \"AAPI\" ([HTML5 Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/audio}). It will try to calculate and use the best one for the current client. If a valid value is given, this will be added to the {@link CB_AudioFileCache#preferredAPIs} property.\r\n * @property {array} [preferredFormats={@link CB_Configuration.CrossBase.CB_AudioFileCache_PREFERRED_AUDIO_FORMATS}] - Array of strings with the preferred audio format or audio formats (they can include just the format as 'audio/ogg' or also the codec as for example 'audio/ogg; codecs=\"vorbis\"'), in order of preference. It will try to calculate and use the best one for the current client. If a valid value is given, this will be added to the {@link CB_AudioFileCache#preferredFormats} property.\r\n * @property {integer} [minimumAudioFiles={@link CB_AudioFileCache.minimumAudioFiles_DEFAULT}] - Minimum {@link CB_AudioFile} objects to create internally. It must be an integer being 1 the minimum. If a valid value is given, this will be added to the {@link CB_AudioFileCache#minimumAudioFiles} property.\r\n * @property {integer|null} [maximumAudioFiles={@link CB_AudioFileCache.maximumAudioFiles_DEFAULT}] - Maximum {@link CB_AudioFile} objects that are allowed to be created internally. If it is set to null, there will not be a maximum (it will be unlimited). If an integer is provided, it must be the same number or greater than the value set in the {@link CB_AudioFileCache#minimumAudioFiles} property (also provided by the \"minimumAudioFiles\" of this object), allowing 1 minimum. If a valid value is given, this will be added to the {@link CB_AudioFileCache#maximumAudioFiles} property.\r\n * @property {integer} [minimumAudioFilesFree=parseInt({@link CB_AudioFileCache#minimumAudioFiles} * 0.25 + 0.5)] - New {@link CB_AudioFile} objects will be created internally when the number of free {@link CB_AudioFile} objects reaches this limit. If provided, it must be an integer being 0 (zero) the minimum. It will end using a 25% of the {@link CB_AudioFileCache#minimumAudioFiles} by default, rounded to ceil, allowing 0 (zero) minimum. If a valid value is given, this will be added to the {@link CB_AudioFileCache#minimumAudioFilesFree} property.\r\n * @property {integer} [newAudioFilesWhenNeeded=Math.min(parseInt({@link CB_AudioFileCache#minimumAudioFiles} * 0.1 + 0.5), 1)] - Number of new {@link CB_AudioFile} objects to create internally when the minimum limit of free {@link CB_AudioFile} objects ({@link CB_AudioFileCache#minimumAudioFilesFree}) is reached. If provided, it must be an integer being 0 (zero) the minimum. It will end using a 10% of the {@link CB_AudioFileCache#minimumAudioFiles} by default, rounded to ceil, allowing 1 minimum. If a valid value is given, this will be added to the {@link CB_AudioFileCache#newAudioFilesWhenNeeded} property.\r\n * @property {integer} [retries={@link CB_AudioFileCache.retries_DEFAULT}] - Number of retries to try to load a {@link CB_AudioFile} object internally before trying to load the next possible one (if any). It must be an integer being 0 the minimum. If a valid value is given, this will be added to the {@link CB_AudioFileCache#retries} property.\r\n * @property {boolean} [checkManually={@link CB_AudioFileCache.checkManually_DEFAULT}] - Tells whether the {@link CB_AudioFile} objects must be checked automatically or not (manually) by default. If a valid value is given, this will be added to the {@link CB_AudioFileCache#checkManually} property.\r\n * @property {boolean} [checkManuallyOnNeededCreated={@link CB_AudioFileCache.checkManuallyOnNeededCreated_DEFAULT}] - Tells whether the {@link CB_AudioFile} objects must be checked automatically or not (manually) when creates a new {@link CB_AudioFile} object needed. If a valid value is given, this will be added to the {@link CB_AudioFileCache#checkManuallyOnNeededCreated} property.\r\n * @property {boolean} [checkManuallyOnPlayingFailed={@link CB_AudioFileCache.checkManuallyOnPlayingFailed_DEFAULT}] - Tells whether the {@link CB_AudioFile} objects must be checked automatically or not (manually) when playing one has failed and tries to reload it. If a valid value is given, this will be added to the {@link CB_AudioFileCache#checkManuallyOnPlayingFailed} property.\r\n * @property {boolean} [checkManuallyOnCheckingFailed={@link CB_AudioFileCache.checkManuallyOnCheckingFailed_DEFAULT}] - Tells whether the {@link CB_AudioFile} objects must be checked automatically or not (manually) when checking one has failed and tries to reload it. If a valid value is given, this will be added to the {@link CB_AudioFileCache#checkManuallyOnCheckingFailed} property.\r\n * @property {function} [onLoad] - Desired function to be called once the cache has been loaded. The first and unique parameter will be an integer with the {@link CB_AudioFile} objects that still need to be checked, if any, being \"this\" the current {@link CB_AudioFileCache} object. If a valid value is given, this will be added to the {@link CB_AudioFileCache#onLoad} property.\r\n * @property {function} [onError] - Desired function to be called when any kind of error happens. The first and unique parameter will be a string with the error description (if it could be determined), being \"this\" the current {@link CB_AudioFileCache} object. If a valid value is given, this will be added to the {@link CB_AudioFileCache#onError} property.\r\n * @property {boolean} [disableAutoLoad=false] - If set to true, it will not create automatically the {@link CB_AudioFile} objects by calling the {@link CB_AudioFileCache#createAudioFiles} method internally. Internal usage only recommended.\r\n */","meta":{"filename":"CB_AudioFileCache.js","lineno":23,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{}},"description":"<p>Object with the desired data and options for the audio files cache.</p>","memberof":"CB_AudioFileCache","kind":"typedef","name":"DATA_OBJECT","type":{"names":["Object"]},"properties":[{"type":{"names":["CB_AudioFileCache.URIS_OBJECT"]},"description":"<p>Object whose property names audio formats and their value is an array of strings with the URIs (audio file paths or audio data URIs) of the audio files in order of preference. The best audio format for the current client will be tried to be calculated and it will use the first working URI (audio file path or data URI). The more audio formats and URIs provided the better, as it will help to maximize the compatibility with as many clients as possible (as some audio APIs and client just support some formats, or use absolute paths instead of relative ones, etc.). Even with different formats, all provided URIs should belong to the same audio (this means same sound or same music, with same length, etc.). NOTE: Only some clients with some audio APIs will support data URIs. If a valid value is given, this will be added to the {@link CB_AudioFileCache#URIs} property.</p>","name":"URIs"},{"type":{"names":["string"]},"optional":true,"defaultvalue":"\"\"","description":"<p>Desired identifier for the audio files cache. Internal usage only recommended. If a valid value is given, this will be added to the {@link CB_AudioFileCache#id} property.</p>","name":"id"},{"type":{"names":["array"]},"optional":true,"defaultvalue":"{@link CB_Configuration.CrossBase.CB_AudioFileCache_PREFERRED_AUDIO_APIS}","description":"<p>Array of strings with the preferred audio API or audio APIs, in order of preference. Possible audio APIs are &quot;WAAPI&quot; ([HTML5 Web Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API}), &quot;SM2&quot; ([SoundManager 2]{@link http://schillmania.com/projects/soundmanager2/}), &quot;ACMP&quot; ([Apache Cordova Media Plugin]{@link https://github.com/apache/cordova-plugin-media}) or &quot;AAPI&quot; ([HTML5 Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/audio}). It will try to calculate and use the best one for the current client. If a valid value is given, this will be added to the {@link CB_AudioFileCache#preferredAPIs} property.</p>","name":"preferredAPIs"},{"type":{"names":["array"]},"optional":true,"defaultvalue":"{@link CB_Configuration.CrossBase.CB_AudioFileCache_PREFERRED_AUDIO_FORMATS}","description":"<p>Array of strings with the preferred audio format or audio formats (they can include just the format as 'audio/ogg' or also the codec as for example 'audio/ogg; codecs=&quot;vorbis&quot;'), in order of preference. It will try to calculate and use the best one for the current client. If a valid value is given, this will be added to the {@link CB_AudioFileCache#preferredFormats} property.</p>","name":"preferredFormats"},{"type":{"names":["integer"]},"optional":true,"defaultvalue":"{@link CB_AudioFileCache.minimumAudioFiles_DEFAULT}","description":"<p>Minimum {@link CB_AudioFile} objects to create internally. It must be an integer being 1 the minimum. If a valid value is given, this will be added to the {@link CB_AudioFileCache#minimumAudioFiles} property.</p>","name":"minimumAudioFiles"},{"type":{"names":["integer","null"]},"optional":true,"defaultvalue":"{@link CB_AudioFileCache.maximumAudioFiles_DEFAULT}","description":"<p>Maximum {@link CB_AudioFile} objects that are allowed to be created internally. If it is set to null, there will not be a maximum (it will be unlimited). If an integer is provided, it must be the same number or greater than the value set in the {@link CB_AudioFileCache#minimumAudioFiles} property (also provided by the &quot;minimumAudioFiles&quot; of this object), allowing 1 minimum. If a valid value is given, this will be added to the {@link CB_AudioFileCache#maximumAudioFiles} property.</p>","name":"maximumAudioFiles"},{"type":{"names":["integer"]},"optional":true,"defaultvalue":"parseInt({@link CB_AudioFileCache#minimumAudioFiles} * 0.25 + 0.5)","description":"<p>New {@link CB_AudioFile} objects will be created internally when the number of free {@link CB_AudioFile} objects reaches this limit. If provided, it must be an integer being 0 (zero) the minimum. It will end using a 25% of the {@link CB_AudioFileCache#minimumAudioFiles} by default, rounded to ceil, allowing 0 (zero) minimum. If a valid value is given, this will be added to the {@link CB_AudioFileCache#minimumAudioFilesFree} property.</p>","name":"minimumAudioFilesFree"},{"type":{"names":["integer"]},"optional":true,"defaultvalue":"Math.min(parseInt({@link CB_AudioFileCache#minimumAudioFiles} * 0.1 + 0.5), 1)","description":"<p>Number of new {@link CB_AudioFile} objects to create internally when the minimum limit of free {@link CB_AudioFile} objects ({@link CB_AudioFileCache#minimumAudioFilesFree}) is reached. If provided, it must be an integer being 0 (zero) the minimum. It will end using a 10% of the {@link CB_AudioFileCache#minimumAudioFiles} by default, rounded to ceil, allowing 1 minimum. If a valid value is given, this will be added to the {@link CB_AudioFileCache#newAudioFilesWhenNeeded} property.</p>","name":"newAudioFilesWhenNeeded"},{"type":{"names":["integer"]},"optional":true,"defaultvalue":"{@link CB_AudioFileCache.retries_DEFAULT}","description":"<p>Number of retries to try to load a {@link CB_AudioFile} object internally before trying to load the next possible one (if any). It must be an integer being 0 the minimum. If a valid value is given, this will be added to the {@link CB_AudioFileCache#retries} property.</p>","name":"retries"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":"{@link CB_AudioFileCache.checkManually_DEFAULT}","description":"<p>Tells whether the {@link CB_AudioFile} objects must be checked automatically or not (manually) by default. If a valid value is given, this will be added to the {@link CB_AudioFileCache#checkManually} property.</p>","name":"checkManually"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":"{@link CB_AudioFileCache.checkManuallyOnNeededCreated_DEFAULT}","description":"<p>Tells whether the {@link CB_AudioFile} objects must be checked automatically or not (manually) when creates a new {@link CB_AudioFile} object needed. If a valid value is given, this will be added to the {@link CB_AudioFileCache#checkManuallyOnNeededCreated} property.</p>","name":"checkManuallyOnNeededCreated"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":"{@link CB_AudioFileCache.checkManuallyOnPlayingFailed_DEFAULT}","description":"<p>Tells whether the {@link CB_AudioFile} objects must be checked automatically or not (manually) when playing one has failed and tries to reload it. If a valid value is given, this will be added to the {@link CB_AudioFileCache#checkManuallyOnPlayingFailed} property.</p>","name":"checkManuallyOnPlayingFailed"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":"{@link CB_AudioFileCache.checkManuallyOnCheckingFailed_DEFAULT}","description":"<p>Tells whether the {@link CB_AudioFile} objects must be checked automatically or not (manually) when checking one has failed and tries to reload it. If a valid value is given, this will be added to the {@link CB_AudioFileCache#checkManuallyOnCheckingFailed} property.</p>","name":"checkManuallyOnCheckingFailed"},{"type":{"names":["function"]},"optional":true,"description":"<p>Desired function to be called once the cache has been loaded. The first and unique parameter will be an integer with the {@link CB_AudioFile} objects that still need to be checked, if any, being &quot;this&quot; the current {@link CB_AudioFileCache} object. If a valid value is given, this will be added to the {@link CB_AudioFileCache#onLoad} property.</p>","name":"onLoad"},{"type":{"names":["function"]},"optional":true,"description":"<p>Desired function to be called when any kind of error happens. The first and unique parameter will be a string with the error description (if it could be determined), being &quot;this&quot; the current {@link CB_AudioFileCache} object. If a valid value is given, this will be added to the {@link CB_AudioFileCache#onError} property.</p>","name":"onError"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If set to true, it will not create automatically the {@link CB_AudioFile} objects by calling the {@link CB_AudioFileCache#createAudioFiles} method internally. Internal usage only recommended.</p>","name":"disableAutoLoad"}],"longname":"CB_AudioFileCache.DATA_OBJECT","scope":"static"},{"comment":"/**\r\n * The constructor is recommended to be called through a user-driven event (as onClick, onTouch, etc.), as some clients may need this at least the first time in order to be able to play the audio.\r\n * @class\r\n * @classdesc Class to manage a cache with multiple {@link CB_AudioFile} objects (they should be the same sound although they can be in different formats). This is not only useful for performance purposes but also for being able to play the same sound simultaneously and multiple times in different audio APIs and clients.\r\n * @param {CB_AudioFileCache.DATA_OBJECT} [dataObject] - Object with the desired data and options for the audio files cache.\r\n * @returns {CB_AudioFileCache} Returns a new {@link CB_AudioFileCache} object.\r\n * @todo Do not allow to create one object with an \"id\" which has already been used (unless the value is undefined, null...).\r\n * @todo Method getCopy and static method filterProperties (similar to the ones from {@link CB_GraphicSprites} and {@link CB_GraphicSpritesScene}).\r\n */","meta":{"range":[11070,22325],"filename":"CB_AudioFileCache.js","lineno":55,"columnno":4,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100003457","name":"CB_AudioFileCache","type":"FunctionExpression"},"vars":{"CB_AudioFileCache.prototype.DEFAULT_VOLUME":"CB_AudioFileCache#DEFAULT_VOLUME","this.status":"CB_AudioFileCache#status","this.id":"CB_AudioFileCache#id","this.preferredAPIs":"CB_AudioFileCache#preferredAPIs","this.preferredFormats":"CB_AudioFileCache#preferredFormats","this.URIs":"CB_AudioFileCache#URIs","this.minimumAudioFiles":"CB_AudioFileCache#minimumAudioFiles","this.maximumAudioFiles":"CB_AudioFileCache#maximumAudioFiles","this.minimumAudioFilesFree":"CB_AudioFileCache#minimumAudioFilesFree","this.newAudioFilesWhenNeeded":"CB_AudioFileCache#newAudioFilesWhenNeeded","this.retries":"CB_AudioFileCache#retries","this.checkManually":"CB_AudioFileCache#checkManually","this.checkManuallyOnNeededCreated":"CB_AudioFileCache#checkManuallyOnNeededCreated","this.checkManuallyOnPlayingFailed":"CB_AudioFileCache#checkManuallyOnPlayingFailed","this.checkManuallyOnCheckingFailed":"CB_AudioFileCache#checkManuallyOnCheckingFailed","this.onLoad":"CB_AudioFileCache#onLoad","this.onError":"CB_AudioFileCache#onError","this.audioFiles":"CB_AudioFileCache#audioFiles","this.audioFilesCreated":"CB_AudioFileCache#audioFilesCreated","this.audioFilesFree":"CB_AudioFileCache#audioFilesFree","this.audioFilesFreePointer":"CB_AudioFileCache#audioFilesFreePointer","this.soundInstancesQueued":"CB_AudioFileCache#soundInstancesQueued","this.duration":"CB_AudioFileCache#duration","this.durationMaximum":"CB_AudioFileCache#durationMaximum","this._URIsListLast":"CB_AudioFileCache#_URIsListLast","this._lastSuccededIndexes":"CB_AudioFileCache#_lastSuccededIndexes","this._checkCacheLoadedTimeout":"CB_AudioFileCache#_checkCacheLoadedTimeout","this._checkCacheLoadedTimeoutMs":"CB_AudioFileCache#_checkCacheLoadedTimeoutMs","this._onLoadCalled":"CB_AudioFileCache#_onLoadCalled","this._existingObjectIds":"CB_AudioFileCache#_existingObjectIds","this._clearAudioFilesTimeout":"CB_AudioFileCache#_clearAudioFilesTimeout","this._createNewAudioFilesIfNeededTimeout":"CB_AudioFileCache#_createNewAudioFilesIfNeededTimeout","this._checkingPlaying":"CB_AudioFileCache#_checkingPlaying","this._settingAPI":"CB_AudioFileCache#_settingAPI"}},"description":"<p>The constructor is recommended to be called through a user-driven event (as onClick, onTouch, etc.), as some clients may need this at least the first time in order to be able to play the audio.</p>","kind":"class","classdesc":"<p>Class to manage a cache with multiple {@link CB_AudioFile} objects (they should be the same sound although they can be in different formats). This is not only useful for performance purposes but also for being able to play the same sound simultaneously and multiple times in different audio APIs and clients.</p>","params":[{"type":{"names":["CB_AudioFileCache.DATA_OBJECT"]},"optional":true,"description":"<p>Object with the desired data and options for the audio files cache.</p>","name":"dataObject"}],"returns":[{"type":{"names":["CB_AudioFileCache"]},"description":"<p>Returns a new {@link CB_AudioFileCache} object.</p>"}],"todo":["Do not allow to create one object with an \"id\" which has already been used (unless the value is undefined, null...).","Method getCopy and static method filterProperties (similar to the ones from {@link CB_GraphicSprites} and {@link CB_GraphicSpritesScene})."],"name":"CB_AudioFileCache","longname":"CB_AudioFileCache","scope":"global"},{"comment":"/**\r\n\t * Keeps the default volume. If the {@link CB_Configuration.CrossBase.CB_AudioFile_AudioFileCache_USE_SPEAKER_VOLUME_AS_DEFAULT} property is true, this will keep the result of calling the {@link CB_Speaker.getVolume} function. Otherwise, it will use the value of the {@link CB_Configuration.CrossBase.CB_Speaker_DEFAULT_VOLUME} variable.\r\n\t *\t@constant\r\n\t * @type {number}\r\n\t * @default CB_Configuration.CrossBase.CB_AudioFile_AudioFileCache_USE_SPEAKER_VOLUME_AS_DEFAULT ? CB_Speaker.getVolume() : CB_Configuration.CrossBase.CB_Speaker_DEFAULT_VOLUME\r\n\t */","meta":{"range":[11951,12168],"filename":"CB_AudioFileCache.js","lineno":67,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100003477","name":"CB_AudioFileCache.prototype.DEFAULT_VOLUME","type":"ConditionalExpression","value":"","paramnames":[]}},"description":"<p>Keeps the default volume. If the {@link CB_Configuration.CrossBase.CB_AudioFile_AudioFileCache_USE_SPEAKER_VOLUME_AS_DEFAULT} property is true, this will keep the result of calling the {@link CB_Speaker.getVolume} function. Otherwise, it will use the value of the {@link CB_Configuration.CrossBase.CB_Speaker_DEFAULT_VOLUME} variable.</p>","kind":"constant","type":{"names":["number"]},"defaultvalue":"CB_Configuration.CrossBase.CB_AudioFile_AudioFileCache_USE_SPEAKER_VOLUME_AS_DEFAULT ? CB_Speaker.getVolume() : CB_Configuration.CrossBase.CB_Speaker_DEFAULT_VOLUME","name":"DEFAULT_VOLUME","longname":"CB_AudioFileCache#DEFAULT_VOLUME","memberof":"CB_AudioFileCache","scope":"instance"},{"comment":"/**\r\n * Status value for audio file cache which is unloaded. Can be used to compare the value returned by the {@link CB_AudioFileCache#getStatus} method. Recommended for internal usage only.\r\n *\t@constant\r\n * @type {integer}\r\n * @default 0\r\n */","meta":{"range":[22791,22821],"filename":"CB_AudioFileCache.js","lineno":306,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100003738","name":"CB_AudioFileCache.UNLOADED","type":"Literal","value":0,"paramnames":[]}},"description":"<p>Status value for audio file cache which is unloaded. Can be used to compare the value returned by the {@link CB_AudioFileCache#getStatus} method. Recommended for internal usage only.</p>","kind":"constant","type":{"names":["integer"]},"defaultvalue":"0","name":"UNLOADED","longname":"CB_AudioFileCache.UNLOADED","memberof":"CB_AudioFileCache","scope":"static"},{"comment":"/**\r\n * Status value for an audio file cache which is loading. Can be used to compare the value returned by the {@link CB_AudioFileCache#getStatus} method. Recommended for internal usage only.\r\n *\t@constant\r\n * @type {integer}\r\n * @default\r\n */","meta":{"range":[23074,23103],"filename":"CB_AudioFileCache.js","lineno":314,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100003744","name":"CB_AudioFileCache.LOADING","type":"Literal","value":1,"paramnames":[]}},"description":"<p>Status value for an audio file cache which is loading. Can be used to compare the value returned by the {@link CB_AudioFileCache#getStatus} method. Recommended for internal usage only.</p>","kind":"constant","type":{"names":["integer"]},"defaultvalue":1,"name":"LOADING","longname":"CB_AudioFileCache.LOADING","memberof":"CB_AudioFileCache","scope":"static"},{"comment":"/**\r\n * Status value for an audio file cache which has not been checked yet. Can be used to compare the value returned by the {@link CB_AudioFileCache#getStatus} method. Recommended for internal usage only.\r\n *\t@constant\r\n * @type {integer}\r\n * @default\r\n */","meta":{"range":[23370,23401],"filename":"CB_AudioFileCache.js","lineno":322,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100003750","name":"CB_AudioFileCache.UNCHECKED","type":"Literal","value":2,"paramnames":[]}},"description":"<p>Status value for an audio file cache which has not been checked yet. Can be used to compare the value returned by the {@link CB_AudioFileCache#getStatus} method. Recommended for internal usage only.</p>","kind":"constant","type":{"names":["integer"]},"defaultvalue":2,"name":"UNCHECKED","longname":"CB_AudioFileCache.UNCHECKED","memberof":"CB_AudioFileCache","scope":"static"},{"comment":"/**\r\n * Status value for an audio file cache which is being checked currently. Can be used to compare the value returned by the {@link CB_AudioFileCache#getStatus} method. Recommended for internal usage only.\r\n *\t@constant\r\n * @type {integer}\r\n * @default\r\n */","meta":{"range":[23670,23700],"filename":"CB_AudioFileCache.js","lineno":330,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100003756","name":"CB_AudioFileCache.CHECKING","type":"Literal","value":3,"paramnames":[]}},"description":"<p>Status value for an audio file cache which is being checked currently. Can be used to compare the value returned by the {@link CB_AudioFileCache#getStatus} method. Recommended for internal usage only.</p>","kind":"constant","type":{"names":["integer"]},"defaultvalue":3,"name":"CHECKING","longname":"CB_AudioFileCache.CHECKING","memberof":"CB_AudioFileCache","scope":"static"},{"comment":"/**\r\n * Status value for an audio file cache which has been loaded. Can be used to compare the value returned by the {@link CB_AudioFileCache#getStatus} method. Recommended for internal usage only.\r\n *\t@constant\r\n * @type {integer}\r\n * @default\r\n */","meta":{"range":[23958,23986],"filename":"CB_AudioFileCache.js","lineno":338,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100003762","name":"CB_AudioFileCache.LOADED","type":"Literal","value":4,"paramnames":[]}},"description":"<p>Status value for an audio file cache which has been loaded. Can be used to compare the value returned by the {@link CB_AudioFileCache#getStatus} method. Recommended for internal usage only.</p>","kind":"constant","type":{"names":["integer"]},"defaultvalue":4,"name":"LOADED","longname":"CB_AudioFileCache.LOADED","memberof":"CB_AudioFileCache","scope":"static"},{"comment":"/**\r\n * Status value for an audio file cache which failed to be loaded or failed for any other reason. Can be used to compare the value returned by the {@link CB_AudioFileCache#getStatus} method. Recommended for internal usage only.\r\n *\t@constant\r\n * @type {integer}\r\n * @default\r\n */","meta":{"range":[24279,24307],"filename":"CB_AudioFileCache.js","lineno":346,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100003768","name":"CB_AudioFileCache.FAILED","type":"Literal","value":5,"paramnames":[]}},"description":"<p>Status value for an audio file cache which failed to be loaded or failed for any other reason. Can be used to compare the value returned by the {@link CB_AudioFileCache#getStatus} method. Recommended for internal usage only.</p>","kind":"constant","type":{"names":["integer"]},"defaultvalue":5,"name":"FAILED","longname":"CB_AudioFileCache.FAILED","memberof":"CB_AudioFileCache","scope":"static"},{"comment":"/**\r\n * Status value for an audio file cache which has been aborted. This will happen when the audio file cache has been destroyed with the {@link CB_AudioFileCache#destructor} method. Can be used to compare the value returned by the {@link CB_AudioFileCache#getStatus} method. Recommended for internal usage only.\r\n *\t@constant\r\n * @type {integer}\r\n * @default\r\n */","meta":{"range":[24682,24711],"filename":"CB_AudioFileCache.js","lineno":354,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100003774","name":"CB_AudioFileCache.ABORTED","type":"Literal","value":6,"paramnames":[]}},"description":"<p>Status value for an audio file cache which has been aborted. This will happen when the audio file cache has been destroyed with the {@link CB_AudioFileCache#destructor} method. Can be used to compare the value returned by the {@link CB_AudioFileCache#getStatus} method. Recommended for internal usage only.</p>","kind":"constant","type":{"names":["integer"]},"defaultvalue":6,"name":"ABORTED","longname":"CB_AudioFileCache.ABORTED","memberof":"CB_AudioFileCache","scope":"static"},{"comment":"/**\r\n * Default value for the {@link CB_AudioFileCache#minimumAudioFiles} property.\r\n *\t@constant\r\n * @type {integer}\r\n * @default\r\n */","meta":{"range":[24855,24902],"filename":"CB_AudioFileCache.js","lineno":362,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100003780","name":"CB_AudioFileCache.minimumAudioFiles_DEFAULT","type":"Literal","value":2,"paramnames":[]}},"description":"<p>Default value for the {@link CB_AudioFileCache#minimumAudioFiles} property.</p>","kind":"constant","type":{"names":["integer"]},"defaultvalue":2,"name":"minimumAudioFiles_DEFAULT","longname":"CB_AudioFileCache.minimumAudioFiles_DEFAULT","memberof":"CB_AudioFileCache","scope":"static"},{"comment":"/**\r\n * Default value for the {@link CB_AudioFileCache#maximumAudioFiles} property.\r\n *\t@constant\r\n * @type {integer|null}\r\n * @default null\r\n */","meta":{"range":[25056,25106],"filename":"CB_AudioFileCache.js","lineno":370,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100003786","name":"CB_AudioFileCache.maximumAudioFiles_DEFAULT","type":"Literal","value":null,"paramnames":[]}},"description":"<p>Default value for the {@link CB_AudioFileCache#maximumAudioFiles} property.</p>","kind":"constant","type":{"names":["integer","null"]},"defaultvalue":"null","name":"maximumAudioFiles_DEFAULT","longname":"CB_AudioFileCache.maximumAudioFiles_DEFAULT","memberof":"CB_AudioFileCache","scope":"static"},{"comment":"/**\r\n * Default value for the {@link CB_AudioFileCache#retries} property.\r\n *\t@constant\r\n * @type {integer}\r\n * @default\r\n */","meta":{"range":[25240,25277],"filename":"CB_AudioFileCache.js","lineno":378,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100003792","name":"CB_AudioFileCache.retries_DEFAULT","type":"Literal","value":1,"paramnames":[]}},"description":"<p>Default value for the {@link CB_AudioFileCache#retries} property.</p>","kind":"constant","type":{"names":["integer"]},"defaultvalue":1,"name":"retries_DEFAULT","longname":"CB_AudioFileCache.retries_DEFAULT","memberof":"CB_AudioFileCache","scope":"static"},{"comment":"/**\r\n * Default value for the {@link CB_AudioFileCache#checkManually} property.\r\n *\t@constant\r\n * @type {boolean}\r\n * @default false\r\n */","meta":{"range":[25423,25470],"filename":"CB_AudioFileCache.js","lineno":386,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100003798","name":"CB_AudioFileCache.checkManually_DEFAULT","type":"Literal","value":false,"paramnames":[]}},"description":"<p>Default value for the {@link CB_AudioFileCache#checkManually} property.</p>","kind":"constant","type":{"names":["boolean"]},"defaultvalue":"false","name":"checkManually_DEFAULT","longname":"CB_AudioFileCache.checkManually_DEFAULT","memberof":"CB_AudioFileCache","scope":"static"},{"comment":"/**\r\n * Default value for the {@link CB_AudioFileCache#checkManuallyOnNeededCreated} property.\r\n *\t@constant\r\n * @type {boolean}\r\n * @default false\r\n */","meta":{"range":[25631,25693],"filename":"CB_AudioFileCache.js","lineno":394,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100003804","name":"CB_AudioFileCache.checkManuallyOnNeededCreated_DEFAULT","type":"Literal","value":false,"paramnames":[]}},"description":"<p>Default value for the {@link CB_AudioFileCache#checkManuallyOnNeededCreated} property.</p>","kind":"constant","type":{"names":["boolean"]},"defaultvalue":"false","name":"checkManuallyOnNeededCreated_DEFAULT","longname":"CB_AudioFileCache.checkManuallyOnNeededCreated_DEFAULT","memberof":"CB_AudioFileCache","scope":"static"},{"comment":"/**\r\n * Default value for the {@link CB_AudioFileCache#checkManuallyOnPlayingFailed} property.\r\n *\t@constant\r\n * @type {boolean}\r\n * @default false\r\n */","meta":{"range":[25854,25916],"filename":"CB_AudioFileCache.js","lineno":402,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100003810","name":"CB_AudioFileCache.checkManuallyOnPlayingFailed_DEFAULT","type":"Literal","value":false,"paramnames":[]}},"description":"<p>Default value for the {@link CB_AudioFileCache#checkManuallyOnPlayingFailed} property.</p>","kind":"constant","type":{"names":["boolean"]},"defaultvalue":"false","name":"checkManuallyOnPlayingFailed_DEFAULT","longname":"CB_AudioFileCache.checkManuallyOnPlayingFailed_DEFAULT","memberof":"CB_AudioFileCache","scope":"static"},{"comment":"/**\r\n * Default value for the {@link CB_AudioFileCache#checkManuallyOnCheckingFailed} property.\r\n *\t@constant\r\n * @type {boolean}\r\n * @default false\r\n */","meta":{"range":[26078,26141],"filename":"CB_AudioFileCache.js","lineno":410,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100003816","name":"CB_AudioFileCache.checkManuallyOnCheckingFailed_DEFAULT","type":"Literal","value":false,"paramnames":[]}},"description":"<p>Default value for the {@link CB_AudioFileCache#checkManuallyOnCheckingFailed} property.</p>","kind":"constant","type":{"names":["boolean"]},"defaultvalue":"false","name":"checkManuallyOnCheckingFailed_DEFAULT","longname":"CB_AudioFileCache.checkManuallyOnCheckingFailed_DEFAULT","memberof":"CB_AudioFileCache","scope":"static"},{"comment":"/**\r\n * Destroys the audio file cache object, including all the internal {@link CB_AudioFile} objects, and frees memory. By default, unless the \"preventAbortedStatus\" is set to true, sets the current status of the audio file cache object as ABORTED ({@link CB_AudioFileCache.ABORTED} value).\r\n * @function\r\n * @param {boolean} [stopSounds=false] - Used as the \"stopSound\" parameter when calling internally the {@link CB_AudioFile#destructor} method for all the {@link CB_AudioFile} objects.\r\n * @param {boolean} [preventAbortedStatus=false] - If set to true (not recommended), it will not assign the status of \"ABORTED\" (it will not assign the value of {@link CB_AudioFileCache.ABORTED} to the {@link CB_AudioFileCache#status} property).\r\n */","meta":{"range":[28254,29985],"filename":"CB_AudioFileCache.js","lineno":456,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100003852","name":"CB_AudioFileCache.prototype.destructor","type":"FunctionExpression","paramnames":["stopSounds","preventAbortedStatus"]},"vars":{"this.preferredAPIs":"CB_AudioFileCache#preferredAPIs","this.preferredFormats":"CB_AudioFileCache#preferredFormats","this.URIs":"CB_AudioFileCache#URIs","this.minimumAudioFiles":"CB_AudioFileCache#minimumAudioFiles","this.maximumAudioFiles":"CB_AudioFileCache#maximumAudioFiles","this.minimumAudioFilesFree":"CB_AudioFileCache#minimumAudioFilesFree","this.newAudioFilesWhenNeeded":"CB_AudioFileCache#newAudioFilesWhenNeeded","this.retries":"CB_AudioFileCache#retries","this.checkManually":"CB_AudioFileCache#checkManually","this.checkManuallyOnNeededCreated":"CB_AudioFileCache#checkManuallyOnNeededCreated","this.checkManuallyOnPlayingFailed":"CB_AudioFileCache#checkManuallyOnPlayingFailed","this.checkManuallyOnCheckingFailed":"CB_AudioFileCache#checkManuallyOnCheckingFailed","this.onLoad":"CB_AudioFileCache#onLoad","this.onError":"CB_AudioFileCache#onError","this.audioFiles":"CB_AudioFileCache#audioFiles","this.audioFilesCreated":"CB_AudioFileCache#audioFilesCreated","this.soundInstancesQueued":"CB_AudioFileCache#soundInstancesQueued","this.duration":"CB_AudioFileCache#duration","this.durationMaximum":"CB_AudioFileCache#durationMaximum","this.audioFilesFree":"CB_AudioFileCache#audioFilesFree","this.audioFilesFreePointer":"CB_AudioFileCache#audioFilesFreePointer","this.status":"CB_AudioFileCache#status"}},"description":"<p>Destroys the audio file cache object, including all the internal {@link CB_AudioFile} objects, and frees memory. By default, unless the &quot;preventAbortedStatus&quot; is set to true, sets the current status of the audio file cache object as ABORTED ({@link CB_AudioFileCache.ABORTED} value).</p>","kind":"function","params":[{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>Used as the &quot;stopSound&quot; parameter when calling internally the {@link CB_AudioFile#destructor} method for all the {@link CB_AudioFile} objects.</p>","name":"stopSounds"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If set to true (not recommended), it will not assign the status of &quot;ABORTED&quot; (it will not assign the value of {@link CB_AudioFileCache.ABORTED} to the {@link CB_AudioFileCache#status} property).</p>","name":"preventAbortedStatus"}],"name":"destructor","longname":"CB_AudioFileCache#destructor","memberof":"CB_AudioFileCache","scope":"instance"},{"comment":"/**\r\n * Loads the audio file cache with the desired data given. This method is called by the constructor automatically. Recommended to be called through a user-driven event (as onClick, onTouch, etc.), as some clients may need this at least the first time in order to be able to play the audio.\r\n * @function\r\n * @param {CB_AudioFileCache.DATA_OBJECT} dataObject - Object with the desired data and options for the audio files cache.\r\n * @returns {CB_AudioFileCache|null} If a \"dataObject\" is given, it returns the current {@link CB_AudioFileCache} object. Otherwise, it returns null.\r\n */","meta":{"range":[30584,34755],"filename":"CB_AudioFileCache.js","lineno":503,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100004059","name":"CB_AudioFileCache.prototype.load","type":"FunctionExpression","paramnames":["dataObject"]},"vars":{"this.status":"CB_AudioFileCache#status","dataObject.id":"dataObject.id","dataObject.minimumAudioFiles":"dataObject.minimumAudioFiles","dataObject.maximumAudioFiles":"dataObject.maximumAudioFiles","dataObject.minimumAudioFilesFree":"dataObject.minimumAudioFilesFree","dataObject.newAudioFilesWhenNeeded":"dataObject.newAudioFilesWhenNeeded","dataObject.retries":"dataObject.retries","this.id":"CB_AudioFileCache#id","this.preferredAPIs":"CB_AudioFileCache#preferredAPIs","this.preferredFormats":"CB_AudioFileCache#preferredFormats","this.URIs":"CB_AudioFileCache#URIs","this.minimumAudioFiles":"CB_AudioFileCache#minimumAudioFiles","this.maximumAudioFiles":"CB_AudioFileCache#maximumAudioFiles","this.minimumAudioFilesFree":"CB_AudioFileCache#minimumAudioFilesFree","this.newAudioFilesWhenNeeded":"CB_AudioFileCache#newAudioFilesWhenNeeded","this.retries":"CB_AudioFileCache#retries","this.checkManually":"CB_AudioFileCache#checkManually","this.checkManuallyOnNeededCreated":"CB_AudioFileCache#checkManuallyOnNeededCreated","this.checkManuallyOnPlayingFailed":"CB_AudioFileCache#checkManuallyOnPlayingFailed","this.checkManuallyOnCheckingFailed":"CB_AudioFileCache#checkManuallyOnCheckingFailed","this.onLoad":"CB_AudioFileCache#onLoad","this.onError":"CB_AudioFileCache#onError","disableAutoLoad":"CB_AudioFileCache#load~disableAutoLoad"}},"description":"<p>Loads the audio file cache with the desired data given. This method is called by the constructor automatically. Recommended to be called through a user-driven event (as onClick, onTouch, etc.), as some clients may need this at least the first time in order to be able to play the audio.</p>","kind":"function","params":[{"type":{"names":["CB_AudioFileCache.DATA_OBJECT"]},"description":"<p>Object with the desired data and options for the audio files cache.</p>","name":"dataObject"}],"returns":[{"type":{"names":["CB_AudioFileCache","null"]},"description":"<p>If a &quot;dataObject&quot; is given, it returns the current {@link CB_AudioFileCache} object. Otherwise, it returns null.</p>"}],"name":"load","longname":"CB_AudioFileCache#load","memberof":"CB_AudioFileCache","scope":"instance"},{"comment":"/**\r\n * Creates the desired number of internal {@link CB_AudioFile} objects (inside the {@link CB_AudioFileCache#audioFiles} property). This method is already called by the {@link CB_AudioFileCache#load} method automatically (unless the \"disableAutoLoad\" property has been set to true in the \"dataObject\" given). Recommended to be called through a user-driven event (as onClick, onTouch, etc.), as some clients may need this at least the first time in order to be able to play the audio.\r\n * @function\r\n * @param {integer} minimumAudioFiles - Minimum {@link CB_AudioFile} objects to create internally. It must be an integer being 1 the minimum. If a valid value is given, this will be added to the {@link CB_AudioFileCache#minimumAudioFiles} property.\r\n * @param {boolean} [setAsLoaded=false] - If the {@link CB_AudioFile} objects already created internally (before calling this method) does not reach the number given in the \"minimumAudioFiles\", this parameter will be ignored. Otherwise, if set to true, it will set the {@link CB_AudioFileCache.status} property as \"LOADED\" (the value of the {@link CB_AudioFileCache#LOADED} property) after reaching the desired number. If set to false, the {@link CB_AudioFileCache.status} property will be set as \"LOADED\" {@link CB_AudioFileCache#LOADED} property) if the {@link CB_AudioFileCache#checkManually} property is set to true or set as \"UNCHECKED\" if the {@link CB_AudioFileCache#checkManually} property is set to false. Internal usage only recommended.\r\n * @returns {integer} Returns the number of {@link CB_AudioFile} objects which are intended to be created (they could fail).\r\n */","meta":{"range":[36398,39480],"filename":"CB_AudioFileCache.js","lineno":582,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100004632","name":"CB_AudioFileCache.prototype.createAudioFiles","type":"FunctionExpression","paramnames":["minimumAudioFiles","setAsLoaded"]},"vars":{"this.status":"CB_AudioFileCache#status","minimumAudioFiles":"CB_AudioFileCache#createAudioFiles~minimumAudioFiles","this.minimumAudioFiles":"CB_AudioFileCache#minimumAudioFiles","this.audioFilesCreated":"CB_AudioFileCache#audioFilesCreated","audioFilesCreated":"CB_AudioFileCache#createAudioFiles~audioFilesCreated","audioFilesCreating":"CB_AudioFileCache#createAudioFiles~audioFilesCreating","audioFile":"CB_AudioFileCache#createAudioFiles~audioFile","that":"CB_AudioFileCache#createAudioFiles~that","x":"CB_AudioFileCache#createAudioFiles~x"}},"description":"<p>Creates the desired number of internal {@link CB_AudioFile} objects (inside the {@link CB_AudioFileCache#audioFiles} property). This method is already called by the {@link CB_AudioFileCache#load} method automatically (unless the &quot;disableAutoLoad&quot; property has been set to true in the &quot;dataObject&quot; given). Recommended to be called through a user-driven event (as onClick, onTouch, etc.), as some clients may need this at least the first time in order to be able to play the audio.</p>","kind":"function","params":[{"type":{"names":["integer"]},"description":"<p>Minimum {@link CB_AudioFile} objects to create internally. It must be an integer being 1 the minimum. If a valid value is given, this will be added to the {@link CB_AudioFileCache#minimumAudioFiles} property.</p>","name":"minimumAudioFiles"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If the {@link CB_AudioFile} objects already created internally (before calling this method) does not reach the number given in the &quot;minimumAudioFiles&quot;, this parameter will be ignored. Otherwise, if set to true, it will set the {@link CB_AudioFileCache.status} property as &quot;LOADED&quot; (the value of the {@link CB_AudioFileCache#LOADED} property) after reaching the desired number. If set to false, the {@link CB_AudioFileCache.status} property will be set as &quot;LOADED&quot; {@link CB_AudioFileCache#LOADED} property) if the {@link CB_AudioFileCache#checkManually} property is set to true or set as &quot;UNCHECKED&quot; if the {@link CB_AudioFileCache#checkManually} property is set to false. Internal usage only recommended.</p>","name":"setAsLoaded"}],"returns":[{"type":{"names":["integer"]},"description":"<p>Returns the number of {@link CB_AudioFile} objects which are intended to be created (they could fail).</p>"}],"name":"createAudioFiles","longname":"CB_AudioFileCache#createAudioFiles","memberof":"CB_AudioFileCache","scope":"instance"},{"comment":"/**\r\n * Creates one internal {@link CB_AudioFile} object (inside the {@link CB_AudioFileCache#audioFiles} property). This method is already called by the {@link CB_AudioFileCache#createAudioFiles} method and other methods automatically. Recommended to be called through a user-driven event (as onClick, onTouch, etc.), as some clients may need this at least the first time in order to be able to play the audio. Internal usage only recommended.\r\n * @function\r\n * @param {CB_AudioFileCache.URIS_OBJECT} [URIs={@link CB_AudioFileCache#URIs}] - Object whose property names audio formats and their value is an array of strings with the URIs (audio file paths or audio data URIs) of the audio files in order of preference. It will try to calculate and use the best audio format for the current client and use the first working URI (audio file path or data URI). The more audio formats and URIs provided the better, as it will help to maximize the compatibility with as many clients as possible (as some audio APIs and client just support some formats, or use absolute paths instead of relative ones, etc.). Even with different formats, all provided URIs should belong to the same audio (this means same sound or same music, with same length, etc.). NOTE: Only some clients with some audio APIs will support data URIs.\r\n * @param {array} [preferredAPIs={@link CB_AudioFileCache#preferredAPIs}] - Array of strings with the preferred audio API or audio APIs, in order of preference. Possible audio APIs are \"WAAPI\" ([HTML5 Web Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API}), \"SM2\" ([SoundManager 2]{@link http://schillmania.com/projects/soundmanager2/}), \"ACMP\" ([Apache Cordova Media Plugin]{@link https://github.com/apache/cordova-plugin-media}) or \"AAPI\" ([HTML5 Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/audio}). It will try to calculate and use the best one for the current client.\r\n * @param {array} [preferredFormats={@link CB_AudioFileCache#preferredFormats}] - Array of strings with the preferred audio format or audio formats (they can include just the format as 'audio/ogg' or also the codec as for example 'audio/ogg; codecs=\"vorbis\"'), in order of preference. It will try to calculate and use the best one for the current client.\r\n * @param {CB_AudioFile} [audioObject] - A {@link CB_AudioFile} object that we want to reuse instead of creating a new one (for performance purposes).\r\n * @param {function} [callbackOk] - Function with no parameters that will be called once the {@link CB_AudioFile} object is created and loaded successfully (or after it has been checked successfully, depending on the desired option), being \"this\" the {@link CB_AudioFileCache} object itself.\r\n * @param {function} [callbackError] - Function called when any error is produced during creation, loading or checking process, etc. The unique parameter will be a string describing the error (if it was possible to be determined), being \"this\" the {@link CB_AudioFileCache} object itself.\r\n * @param {boolean} [storeURIsList=false] - If set to true, it will store internally the valid supported \"URIs\" from the given ones (needed by the {@link CB_AudioFileCache#setAudioAPIAll} method, for example). Internal usage only recommended.\r\n * @param {boolean} [checkAutomatically=false] - If set to true (not recommended), it will call the {@link CB_AudioFile#checkPlaying} method automatically. Otherwise, it will perform according to the value set at the {@link CB_AudioFileCache#checkManually} property. Internal usage only recommended.\r\n * @returns {CB_AudioFile|null} If it fails, it returns null. Otherwise, returns the {@link CB_AudioFile} that has been created or reused.\r\n */","meta":{"range":[43225,46271],"filename":"CB_AudioFileCache.js","lineno":664,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100004860","name":"CB_AudioFileCache.prototype.createAudioFile","type":"FunctionExpression","paramnames":["URIs","preferredAPIs","preferredFormats","audioObject","callbackOk","callbackError","storeURIsList","checkAutomatically"]},"vars":{"this.status":"CB_AudioFileCache#status","URIs":"CB_AudioFileCache#createAudioFile~URIs","preferredAPIs":"CB_AudioFileCache#createAudioFile~preferredAPIs","preferredFormats":"CB_AudioFileCache#createAudioFile~preferredFormats","preferredFormatsSupported":"CB_AudioFileCache#createAudioFile~preferredFormatsSupported","URIsList":"CB_AudioFileCache#createAudioFile~URIsList","preferredFormatsLength":"CB_AudioFileCache#createAudioFile~preferredFormatsLength","y":"CB_AudioFileCache#createAudioFile~y","URIsListCurrentLength":"CB_AudioFileCache#createAudioFile~URIsListCurrentLength","isDataURI":"CB_AudioFileCache#createAudioFile~isDataURI","x":"CB_AudioFileCache#createAudioFile~x","URIsList[undefined]":"CB_AudioFileCache#createAudioFile~URIsList.undefined]","this._URIsListLast":"CB_AudioFileCache#_URIsListLast"}},"description":"<p>Creates one internal {@link CB_AudioFile} object (inside the {@link CB_AudioFileCache#audioFiles} property). This method is already called by the {@link CB_AudioFileCache#createAudioFiles} method and other methods automatically. Recommended to be called through a user-driven event (as onClick, onTouch, etc.), as some clients may need this at least the first time in order to be able to play the audio. Internal usage only recommended.</p>","kind":"function","params":[{"type":{"names":["CB_AudioFileCache.URIS_OBJECT"]},"optional":true,"defaultvalue":"{@link CB_AudioFileCache#URIs}","description":"<p>Object whose property names audio formats and their value is an array of strings with the URIs (audio file paths or audio data URIs) of the audio files in order of preference. It will try to calculate and use the best audio format for the current client and use the first working URI (audio file path or data URI). The more audio formats and URIs provided the better, as it will help to maximize the compatibility with as many clients as possible (as some audio APIs and client just support some formats, or use absolute paths instead of relative ones, etc.). Even with different formats, all provided URIs should belong to the same audio (this means same sound or same music, with same length, etc.). NOTE: Only some clients with some audio APIs will support data URIs.</p>","name":"URIs"},{"type":{"names":["array"]},"optional":true,"defaultvalue":"{@link CB_AudioFileCache#preferredAPIs}","description":"<p>Array of strings with the preferred audio API or audio APIs, in order of preference. Possible audio APIs are &quot;WAAPI&quot; ([HTML5 Web Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API}), &quot;SM2&quot; ([SoundManager 2]{@link http://schillmania.com/projects/soundmanager2/}), &quot;ACMP&quot; ([Apache Cordova Media Plugin]{@link https://github.com/apache/cordova-plugin-media}) or &quot;AAPI&quot; ([HTML5 Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/audio}). It will try to calculate and use the best one for the current client.</p>","name":"preferredAPIs"},{"type":{"names":["array"]},"optional":true,"defaultvalue":"{@link CB_AudioFileCache#preferredFormats}","description":"<p>Array of strings with the preferred audio format or audio formats (they can include just the format as 'audio/ogg' or also the codec as for example 'audio/ogg; codecs=&quot;vorbis&quot;'), in order of preference. It will try to calculate and use the best one for the current client.</p>","name":"preferredFormats"},{"type":{"names":["CB_AudioFile"]},"optional":true,"description":"<p>A {@link CB_AudioFile} object that we want to reuse instead of creating a new one (for performance purposes).</p>","name":"audioObject"},{"type":{"names":["function"]},"optional":true,"description":"<p>Function with no parameters that will be called once the {@link CB_AudioFile} object is created and loaded successfully (or after it has been checked successfully, depending on the desired option), being &quot;this&quot; the {@link CB_AudioFileCache} object itself.</p>","name":"callbackOk"},{"type":{"names":["function"]},"optional":true,"description":"<p>Function called when any error is produced during creation, loading or checking process, etc. The unique parameter will be a string describing the error (if it was possible to be determined), being &quot;this&quot; the {@link CB_AudioFileCache} object itself.</p>","name":"callbackError"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If set to true, it will store internally the valid supported &quot;URIs&quot; from the given ones (needed by the {@link CB_AudioFileCache#setAudioAPIAll} method, for example). Internal usage only recommended.</p>","name":"storeURIsList"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If set to true (not recommended), it will call the {@link CB_AudioFile#checkPlaying} method automatically. Otherwise, it will perform according to the value set at the {@link CB_AudioFileCache#checkManually} property. Internal usage only recommended.</p>","name":"checkAutomatically"}],"returns":[{"type":{"names":["CB_AudioFile","null"]},"description":"<p>If it fails, it returns null. Otherwise, returns the {@link CB_AudioFile} that has been created or reused.</p>"}],"name":"createAudioFile","longname":"CB_AudioFileCache#createAudioFile","memberof":"CB_AudioFileCache","scope":"instance"},{"comment":"/**\r\n * Cleans the array of the {@link CB_AudioFile} objects (taking off the undefined or null ones) which is in the {@link CB_AudioFileCache#audioFiles} property, just keeping the valid ones and clearing (destroying and removing) the others. For performance purposes. Internal usage only recommended.\r\n * @function\r\n * @param {boolean} [avoidCallingCheckCacheLoaded=false] - If set to false and neither the {@link CB_AudioFileCache#checkPlayingAll} nor the {@link CB_AudioFileCache#setAudioAPIAll} methods are being executed, it will call the {@link CB_AudioFileCache#_checkCacheLoaded} internal method which will call the \"onLoad\" function defined in the {@link CB_AudioFileCache#onLoad} property if the number of needed {@link CB_AudioFile} objects has been reached (after performing the cleaning process). Internal usage only recommended.\r\n * @returns {array} Returns the value of the {@link CB_AudioFileCache#audioFiles} property.\r\n */","meta":{"range":[60672,65198],"filename":"CB_AudioFileCache.js","lineno":1037,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100006291","name":"CB_AudioFileCache.prototype.clearAudioFiles","type":"FunctionExpression","paramnames":["avoidCallingCheckCacheLoaded"]},"vars":{"audioFilesClean":"CB_AudioFileCache#clearAudioFiles~audioFilesClean","audioFilesFree":"CB_AudioFileCache#clearAudioFiles~audioFilesFree","audioFilesFreePointer":"CB_AudioFileCache#clearAudioFiles~audioFilesFreePointer","existingIDs":"CB_AudioFileCache#clearAudioFiles~existingIDs","someChecking":"CB_AudioFileCache#clearAudioFiles~someChecking","audioFilesLength":"CB_AudioFileCache#clearAudioFiles~audioFilesLength","y":"CB_AudioFileCache#clearAudioFiles~y","objectsLoaded":"CB_AudioFileCache#clearAudioFiles~objectsLoaded","objectsNeedChecking":"CB_AudioFileCache#clearAudioFiles~objectsNeedChecking","duration":"CB_AudioFileCache#clearAudioFiles~duration","durationMaximum":"CB_AudioFileCache#clearAudioFiles~durationMaximum","durationCurrent":"CB_AudioFileCache#clearAudioFiles~durationCurrent","x":"CB_AudioFileCache#clearAudioFiles~x","audioFilesClean[undefined]":"CB_AudioFileCache#clearAudioFiles~audioFilesClean.undefined]","existingIDs[undefined]":"CB_AudioFileCache#clearAudioFiles~existingIDs.undefined]","audioFilesFree[undefined]":"CB_AudioFileCache#clearAudioFiles~audioFilesFree.undefined]","this.audioFiles[undefined]":"CB_AudioFileCache#audioFiles[undefined]","this.audioFilesCreated":"CB_AudioFileCache#audioFilesCreated","this.audioFiles":"CB_AudioFileCache#audioFiles","this.audioFilesFree":"CB_AudioFileCache#audioFilesFree","this.audioFilesFreePointer":"CB_AudioFileCache#audioFilesFreePointer","this.duration":"CB_AudioFileCache#duration","this.durationMaximum":"CB_AudioFileCache#durationMaximum","that":"CB_AudioFileCache#clearAudioFiles~that","this._checkCacheLoadedTimeout":"CB_AudioFileCache#_checkCacheLoadedTimeout","":null,"this._clearAudioFilesTimeout":"CB_AudioFileCache#_clearAudioFilesTimeout"}},"description":"<p>Cleans the array of the {@link CB_AudioFile} objects (taking off the undefined or null ones) which is in the {@link CB_AudioFileCache#audioFiles} property, just keeping the valid ones and clearing (destroying and removing) the others. For performance purposes. Internal usage only recommended.</p>","kind":"function","params":[{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If set to false and neither the {@link CB_AudioFileCache#checkPlayingAll} nor the {@link CB_AudioFileCache#setAudioAPIAll} methods are being executed, it will call the {@link CB_AudioFileCache#_checkCacheLoaded} internal method which will call the &quot;onLoad&quot; function defined in the {@link CB_AudioFileCache#onLoad} property if the number of needed {@link CB_AudioFile} objects has been reached (after performing the cleaning process). Internal usage only recommended.</p>","name":"avoidCallingCheckCacheLoaded"}],"returns":[{"type":{"names":["array"]},"description":"<p>Returns the value of the {@link CB_AudioFileCache#audioFiles} property.</p>"}],"name":"clearAudioFiles","longname":"CB_AudioFileCache#clearAudioFiles","memberof":"CB_AudioFileCache","scope":"instance"},{"comment":"/**\r\n * If found, takes a given {@link CB_AudioFile} object off the {@link CB_AudioFileCache#audioFiles} property (and reloads it if we want to). NOTE: It does neither destroy nor remove the {@link CB_AudioFile} object so it can be used for other purposes (and if a {@link CB_AudioFile} object is given, it will be tried to be reused by the {@link CB_AudioFileCache#createAudioFile} method internally if it is called). Internal usage only recommended.\r\n * @function\r\n * @param {CB_AudioFile|string} audioObjectOrId - The {@link CB_AudioFile} object or a string with its identifier (not case sensitive) that we want to remove from the {@link CB_AudioFileCache#audioFiles} property. If a {@link CB_AudioFile} object is given, its {@link CB_AudioFile#id} property (which should be unique always) must be set as it is used to identify the object. NOTE: It does neither destroy nor remove the {@link CB_AudioFile} object so it can be used for other purposes (and if a {@link CB_AudioFile} object is given, it will be tried to be reused by the {@link CB_AudioFileCache#createAudioFile} method internally if it is called).\r\n * @param {boolean} [reload=false] - If it is set to true, the {@link CB_AudioFileCache#createAudioFile} method will be called automatically at the end of the process. If a {@link CB_AudioFile} object has been given (through the \"audioObjectOrId\" parameter) or found by its identifier, it will be tried to be reused by the {@link CB_AudioFileCache#createAudioFile} method (as its \"audioObject\" parameter).\r\n * @param {boolean} [checkManually=false] - Only used when the \"reload\" parameter is set to true, to calculate the \"checkAutomatically\" parameter when calling the {@link CB_AudioFileCache#createAudioFile} method internally.\r\n * @returns {boolean|CB_AudioFile|null} Returns null if the given \"audioObjectOrId\" parameter is not a valid {@link CB_AudioFile} object or its {@link CB_AudioFile#id} property is not set or when the \"audioObjectOrId\" parameter is an empty string. Returns a {@link CB_AudioFile} object, the given one through the \"audioObjectOrId\" parameter of the first one removed (it should be the first and unique one removed as the ID must be unique), if the {@link CB_AudioFileCache#createAudioFile} method is called internally (it will reuse this {@link CB_AudioFile} object). Otherwise, returns true if the number of internal {@link CB_AudioFile} objects (inside the {@link CB_AudioFileCache#audioFiles} property) has decreased or false otherwise.\r\n * @todo Think about calling the {@link CB_AudioFileCache#createAudioFile} method internally (when the \"reload\" parameter is set to true) only when the {@link CB_AudioFile} object has been found and removed from the {@link CB_AudioFileCache#audioFiles} property.\r\n */","meta":{"range":[67968,71757],"filename":"CB_AudioFileCache.js","lineno":1148,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100006780","name":"CB_AudioFileCache.prototype.removeAudioFile","type":"FunctionExpression","paramnames":["audioObjectOrId","reload","checkManually"]},"vars":{"audioObjectOrId":"CB_AudioFileCache#removeAudioFile~audioObjectOrId","id":"CB_AudioFileCache#removeAudioFile~id","audioFilesNew":"CB_AudioFileCache#removeAudioFile~audioFilesNew","audioFilesFree":"CB_AudioFileCache#removeAudioFile~audioFilesFree","audioFilesFreePointer":"CB_AudioFileCache#removeAudioFile~audioFilesFreePointer","objectsLoaded":"CB_AudioFileCache#removeAudioFile~objectsLoaded","audioFilesLength":"CB_AudioFileCache#removeAudioFile~audioFilesLength","duration":"CB_AudioFileCache#removeAudioFile~duration","durationMaximum":"CB_AudioFileCache#removeAudioFile~durationMaximum","durationCurrent":"CB_AudioFileCache#removeAudioFile~durationCurrent","x":"CB_AudioFileCache#removeAudioFile~x","audioFilesNew[undefined]":"CB_AudioFileCache#removeAudioFile~audioFilesNew.undefined]","audioFilesFree[undefined]":"CB_AudioFileCache#removeAudioFile~audioFilesFree.undefined]","this.audioFilesCreated":"CB_AudioFileCache#audioFilesCreated","this.audioFiles":"CB_AudioFileCache#audioFiles","this.audioFilesFree":"CB_AudioFileCache#audioFilesFree","this.audioFilesFreePointer":"CB_AudioFileCache#audioFilesFreePointer","this.duration":"CB_AudioFileCache#duration","this.durationMaximum":"CB_AudioFileCache#durationMaximum","returningValue":"CB_AudioFileCache#removeAudioFile~returningValue"}},"description":"<p>If found, takes a given {@link CB_AudioFile} object off the {@link CB_AudioFileCache#audioFiles} property (and reloads it if we want to). NOTE: It does neither destroy nor remove the {@link CB_AudioFile} object so it can be used for other purposes (and if a {@link CB_AudioFile} object is given, it will be tried to be reused by the {@link CB_AudioFileCache#createAudioFile} method internally if it is called). Internal usage only recommended.</p>","kind":"function","params":[{"type":{"names":["CB_AudioFile","string"]},"description":"<p>The {@link CB_AudioFile} object or a string with its identifier (not case sensitive) that we want to remove from the {@link CB_AudioFileCache#audioFiles} property. If a {@link CB_AudioFile} object is given, its {@link CB_AudioFile#id} property (which should be unique always) must be set as it is used to identify the object. NOTE: It does neither destroy nor remove the {@link CB_AudioFile} object so it can be used for other purposes (and if a {@link CB_AudioFile} object is given, it will be tried to be reused by the {@link CB_AudioFileCache#createAudioFile} method internally if it is called).</p>","name":"audioObjectOrId"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If it is set to true, the {@link CB_AudioFileCache#createAudioFile} method will be called automatically at the end of the process. If a {@link CB_AudioFile} object has been given (through the &quot;audioObjectOrId&quot; parameter) or found by its identifier, it will be tried to be reused by the {@link CB_AudioFileCache#createAudioFile} method (as its &quot;audioObject&quot; parameter).</p>","name":"reload"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>Only used when the &quot;reload&quot; parameter is set to true, to calculate the &quot;checkAutomatically&quot; parameter when calling the {@link CB_AudioFileCache#createAudioFile} method internally.</p>","name":"checkManually"}],"returns":[{"type":{"names":["boolean","CB_AudioFile","null"]},"description":"<p>Returns null if the given &quot;audioObjectOrId&quot; parameter is not a valid {@link CB_AudioFile} object or its {@link CB_AudioFile#id} property is not set or when the &quot;audioObjectOrId&quot; parameter is an empty string. Returns a {@link CB_AudioFile} object, the given one through the &quot;audioObjectOrId&quot; parameter of the first one removed (it should be the first and unique one removed as the ID must be unique), if the {@link CB_AudioFileCache#createAudioFile} method is called internally (it will reuse this {@link CB_AudioFile} object). Otherwise, returns true if the number of internal {@link CB_AudioFile} objects (inside the {@link CB_AudioFileCache#audioFiles} property) has decreased or false otherwise.</p>"}],"todo":["Think about calling the {@link CB_AudioFileCache#createAudioFile} method internally (when the \"reload\" parameter is set to true) only when the {@link CB_AudioFile} object has been found and removed from the {@link CB_AudioFileCache#audioFiles} property."],"name":"removeAudioFile","longname":"CB_AudioFileCache#removeAudioFile","memberof":"CB_AudioFileCache","scope":"instance"},{"comment":"/**\r\n * Tries to purge the audio file cache until it reaches a desired number of {@link CB_AudioFile} objects internally (set in the {@link CB_AudioFileCache#audioFiles} property), by removing and destroying some of the current {@link CB_AudioFile} objects. For performance purposes.\r\n * @function\r\n * @param {integer} desiredNumber - The desired number of internal {@link CB_AudioFile} objects that we want to keep in the {@link CB_AudioFileCache#audioFiles} property. It mus be 1 or greater.\r\n * @param {boolean} [setAsMinimumAudioFiles=false] - If set to true, it will set the value of the \"desiredNumber\" parameter to the {@link CB_AudioFileCache#minimumAudioFiles} property (only when there is a maximum defined in {@link CB_AudioFileCache#maximumAudioFiles}).\r\n * @param {boolean} [includePlaying=false] - If it is set to true and removing non-playing {@link CB_AudioFile} objects was not enough to reach the desired number (defined in the \"desiredNumber\" parameter), it will also try to remove objects which are being playing currently.\r\n * @param {boolean} [stopSounds=false] - Used as the \"stopSound\" parameter when calling the {@link CB_AudioFile#destructor} method of each {@link CB_AudioFile} object removed.\r\n * @param {array} [statuses=Array({@link CB_AudioFile.LOADING}, {@link CB_AudioFile.UNCHECKED}, {@link CB_AudioFile.CHECKING}, {@link CB_AudioFile.LOADED})] - Numeric array containing the statuses of the {@link CB_AudioFile} objects that we want this method to authorize to remove. This means that if the returning value of the {@link CB_AudioFile#getStatus} method of a {@link CB_AudioFile} object is not in this list, it will not be tried to be removed (unless they end removed by the {@link CB_AudioFileCache#clearAudioFiles} method called internally). Have in mind that this method will call the {@link CB_AudioFileCache#clearAudioFiles} method internally, which destroys the {@link CB_AudioFile} objects whose {@link CB_AudioFile#getStatus} method returns {@link CB_AudioFile.ABORTED} and {@link CB_AudioFile.FAILED}, so these two statuses need not be indicated. It will respect the order given. Possible values for this array are: {@link CB_AudioFile.UNLOADED}, {@link CB_AudioFile.LOADING}, {@link CB_AudioFile.UNCHECKED}, {@link CB_AudioFile.CHECKING}, {@link CB_AudioFile.LOADED}, {@link CB_AudioFile.FAILED} and {@link CB_AudioFile.ABORTED}.\r\n * @returns {integer} Returns the number of {@link CB_AudioFile} objects removed.\r\n */","meta":{"range":[75985,77222],"filename":"CB_AudioFileCache.js","lineno":1294,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100007358","name":"CB_AudioFileCache.prototype.purge","type":"FunctionExpression","paramnames":["desiredNumber","setAsMinimumAudioFiles","includePlaying","stopSounds","statuses"]},"vars":{"desiredNumber":"CB_AudioFileCache#purge~desiredNumber","this.minimumAudioFiles":"CB_AudioFileCache#minimumAudioFiles","objectsRemoved":"CB_AudioFileCache#purge~objectsRemoved","statuses":"CB_AudioFileCache#purge~statuses","statusesLength":"CB_AudioFileCache#purge~statusesLength","x":"CB_AudioFileCache#purge~x"}},"description":"<p>Tries to purge the audio file cache until it reaches a desired number of {@link CB_AudioFile} objects internally (set in the {@link CB_AudioFileCache#audioFiles} property), by removing and destroying some of the current {@link CB_AudioFile} objects. For performance purposes.</p>","kind":"function","params":[{"type":{"names":["integer"]},"description":"<p>The desired number of internal {@link CB_AudioFile} objects that we want to keep in the {@link CB_AudioFileCache#audioFiles} property. It mus be 1 or greater.</p>","name":"desiredNumber"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If set to true, it will set the value of the &quot;desiredNumber&quot; parameter to the {@link CB_AudioFileCache#minimumAudioFiles} property (only when there is a maximum defined in {@link CB_AudioFileCache#maximumAudioFiles}).</p>","name":"setAsMinimumAudioFiles"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If it is set to true and removing non-playing {@link CB_AudioFile} objects was not enough to reach the desired number (defined in the &quot;desiredNumber&quot; parameter), it will also try to remove objects which are being playing currently.</p>","name":"includePlaying"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>Used as the &quot;stopSound&quot; parameter when calling the {@link CB_AudioFile#destructor} method of each {@link CB_AudioFile} object removed.</p>","name":"stopSounds"},{"type":{"names":["array"]},"optional":true,"defaultvalue":"Array({@link CB_AudioFile.LOADING}, {@link CB_AudioFile.UNCHECKED}, {@link CB_AudioFile.CHECKING}, {@link CB_AudioFile.LOADED})","description":"<p>Numeric array containing the statuses of the {@link CB_AudioFile} objects that we want this method to authorize to remove. This means that if the returning value of the {@link CB_AudioFile#getStatus} method of a {@link CB_AudioFile} object is not in this list, it will not be tried to be removed (unless they end removed by the {@link CB_AudioFileCache#clearAudioFiles} method called internally). Have in mind that this method will call the {@link CB_AudioFileCache#clearAudioFiles} method internally, which destroys the {@link CB_AudioFile} objects whose {@link CB_AudioFile#getStatus} method returns {@link CB_AudioFile.ABORTED} and {@link CB_AudioFile.FAILED}, so these two statuses need not be indicated. It will respect the order given. Possible values for this array are: {@link CB_AudioFile.UNLOADED}, {@link CB_AudioFile.LOADING}, {@link CB_AudioFile.UNCHECKED}, {@link CB_AudioFile.CHECKING}, {@link CB_AudioFile.LOADED}, {@link CB_AudioFile.FAILED} and {@link CB_AudioFile.ABORTED}.</p>","name":"statuses"}],"returns":[{"type":{"names":["integer"]},"description":"<p>Returns the number of {@link CB_AudioFile} objects removed.</p>"}],"name":"purge","longname":"CB_AudioFileCache#purge","memberof":"CB_AudioFileCache","scope":"instance"},{"comment":"/**\r\n * Object returned by the {@link CB_AudioFileCache#getFreeAudioFile} method.\r\n * @memberof CB_AudioFileCache\r\n * @typedef {Object} CB_AudioFileCache.getFreeAudioFile_OBJECT\r\n * @property {CB_AudioFile|null} object - Contains the {@link CB_AudioFile} object if found or null otherwise.\r\n * @property {string|integer} index - Contains the position of the {@link CB_AudioFile} object inside the {@link CB_AudioFileCache#audioFiles} property if found or \"-1\" otherwise.\r\n */","meta":{"filename":"CB_AudioFileCache.js","lineno":1392,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{}},"description":"<p>Object returned by the {@link CB_AudioFileCache#getFreeAudioFile} method.</p>","memberof":"CB_AudioFileCache","kind":"typedef","name":"getFreeAudioFile_OBJECT","type":{"names":["Object"]},"properties":[{"type":{"names":["CB_AudioFile","null"]},"description":"<p>Contains the {@link CB_AudioFile} object if found or null otherwise.</p>","name":"object"},{"type":{"names":["string","integer"]},"description":"<p>Contains the position of the {@link CB_AudioFile} object inside the {@link CB_AudioFileCache#audioFiles} property if found or &quot;-1&quot; otherwise.</p>","name":"index"}],"longname":"CB_AudioFileCache.getFreeAudioFile_OBJECT","scope":"static"},{"comment":"/**\r\n * Returns a free {@link CB_AudioFile} object, if any (from the {@link CB_AudioFileCache#audioFilesFree} property). Note that this will call the internal {@link CB_AudioFileCache#_createNewAudioFilesIfNeeded} method that could end creating a new {@link CB_AudioFile} object if needed.\r\n * @function\r\n * @param {boolean} [popIt=false] - If set to true, the {@link CB_AudioFile} object will also be \"popped\" (removed) from the {@link CB_AudioFileCache#audioFilesFree} property.\r\n * @returns {CB_AudioFileCache.getFreeAudioFile_OBJECT} Returns a {@link CB_AudioFileCache.getFreeAudioFile_OBJECT} object.\r\n */","meta":{"range":[81318,82713],"filename":"CB_AudioFileCache.js","lineno":1406,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100007780","name":"CB_AudioFileCache.prototype.getFreeAudioFile","type":"FunctionExpression","paramnames":["popIt"]},"vars":{"that":"CB_AudioFileCache#getFreeAudioFile~that","audioFilesIndex":"CB_AudioFileCache#getFreeAudioFile~audioFilesIndex","audioObject":"CB_AudioFileCache#getFreeAudioFile~audioObject","this.audioFilesFree[undefined]":"CB_AudioFileCache#audioFilesFree[undefined]","this._createNewAudioFilesIfNeededTimeout":"CB_AudioFileCache#_createNewAudioFilesIfNeededTimeout","":null}},"description":"<p>Returns a free {@link CB_AudioFile} object, if any (from the {@link CB_AudioFileCache#audioFilesFree} property). Note that this will call the internal {@link CB_AudioFileCache#_createNewAudioFilesIfNeeded} method that could end creating a new {@link CB_AudioFile} object if needed.</p>","kind":"function","params":[{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If set to true, the {@link CB_AudioFile} object will also be &quot;popped&quot; (removed) from the {@link CB_AudioFileCache#audioFilesFree} property.</p>","name":"popIt"}],"returns":[{"type":{"names":["CB_AudioFileCache.getFreeAudioFile_OBJECT"]},"description":"<p>Returns a {@link CB_AudioFileCache.getFreeAudioFile_OBJECT} object.</p>"}],"name":"getFreeAudioFile","longname":"CB_AudioFileCache#getFreeAudioFile","memberof":"CB_AudioFileCache","scope":"instance"},{"comment":"/**\r\n * Tells the position of a desired {@link CB_AudioFile} object (by its identifier) in the {@link CB_AudioFileCache#audioFiles} property or -1 otherwise.\r\n * @function\r\n * @param {string} id - The identifier of the {@link CB_AudioFile} object (belongs to its {@link CB_AudioFile#id} property) whose position we want to find. Note that the identifier is not case sensitive and it should be unique for each object.\r\n * @returns {integer} Returns the position of a desired {@link CB_AudioFile} object (by its identifier) in the {@link CB_AudioFileCache#audioFiles} property or -1 otherwise.\r\n */","meta":{"range":[83320,84144],"filename":"CB_AudioFileCache.js","lineno":1447,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100007883","name":"CB_AudioFileCache.prototype.getAudioFilePosition","type":"FunctionExpression","paramnames":["id"]},"vars":{"id":"CB_AudioFileCache#getAudioFilePosition~id","audioFilesLength":"CB_AudioFileCache#getAudioFilePosition~audioFilesLength","x":"CB_AudioFileCache#getAudioFilePosition~x"}},"description":"<p>Tells the position of a desired {@link CB_AudioFile} object (by its identifier) in the {@link CB_AudioFileCache#audioFiles} property or -1 otherwise.</p>","kind":"function","params":[{"type":{"names":["string"]},"description":"<p>The identifier of the {@link CB_AudioFile} object (belongs to its {@link CB_AudioFile#id} property) whose position we want to find. Note that the identifier is not case sensitive and it should be unique for each object.</p>","name":"id"}],"returns":[{"type":{"names":["integer"]},"description":"<p>Returns the position of a desired {@link CB_AudioFile} object (by its identifier) in the {@link CB_AudioFileCache#audioFiles} property or -1 otherwise.</p>"}],"name":"getAudioFilePosition","longname":"CB_AudioFileCache#getAudioFilePosition","memberof":"CB_AudioFileCache","scope":"instance"},{"comment":"/**\r\n * Tells whether a desired {@link CB_AudioFile} object is free (it is in the {@link CB_AudioFileCache#audioFilesFree} property) or not, by its identifier. A free {@link CB_AudioFile} object is an object which is not being used and it is available to be used.\r\n * @function\r\n * @param {string} id - The identifier of the {@link CB_AudioFile} object (belongs to its {@link CB_AudioFile#id} property) that we want to check. Note that the identifier is not case sensitive and it should be unique for each object.\r\n * @returns {boolean} Returns whether a desired {@link CB_AudioFile} object is free (it is in the {@link CB_AudioFileCache#audioFilesFree} property) or not, by its identifier. A free {@link CB_AudioFile} object is an object which is not being used and it is available to be used.\r\n */","meta":{"range":[84954,85158],"filename":"CB_AudioFileCache.js","lineno":1478,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100007974","name":"CB_AudioFileCache.prototype.isAudioFileFree","type":"FunctionExpression","paramnames":["id"]},"vars":{"position":"CB_AudioFileCache#isAudioFileFree~position"}},"description":"<p>Tells whether a desired {@link CB_AudioFile} object is free (it is in the {@link CB_AudioFileCache#audioFilesFree} property) or not, by its identifier. A free {@link CB_AudioFile} object is an object which is not being used and it is available to be used.</p>","kind":"function","params":[{"type":{"names":["string"]},"description":"<p>The identifier of the {@link CB_AudioFile} object (belongs to its {@link CB_AudioFile#id} property) that we want to check. Note that the identifier is not case sensitive and it should be unique for each object.</p>","name":"id"}],"returns":[{"type":{"names":["boolean"]},"description":"<p>Returns whether a desired {@link CB_AudioFile} object is free (it is in the {@link CB_AudioFileCache#audioFilesFree} property) or not, by its identifier. A free {@link CB_AudioFile} object is an object which is not being used and it is available to be used.</p>"}],"name":"isAudioFileFree","longname":"CB_AudioFileCache#isAudioFileFree","memberof":"CB_AudioFileCache","scope":"instance"},{"comment":"/**\r\n * Tells whether a given numeric position of a {@link CB_AudioFile} object in the {@link CB_AudioFileCache#audioFiles} property is stored in the {@link CB_AudioFileCache#audioFilesFree} property or not (this means that the {@link CB_AudioFile} object in that position of the {@link CB_AudioFileCache#audioFiles} property is free). A free {@link CB_AudioFile} object is an object which is not being used and it is available to be used.\r\n * @function\r\n * @param {integer} position - Position of the {@link CB_AudioFile} object in the {@link CB_AudioFileCache#audioFiles} property that we want to check whether it is in the {@link CB_AudioFileCache#audioFilesFree} property or not.\r\n * @returns {boolean} Returns whether the given numeric position of a {@link CB_AudioFile} object in the {@link CB_AudioFileCache#audioFiles} property is stored in the {@link CB_AudioFileCache#audioFilesFree} property or not (this means that the {@link CB_AudioFile} object in that position of the {@link CB_AudioFileCache#audioFiles} property is free). A free {@link CB_AudioFile} object is an object which is not being used and it is available to be used.\r\n */","meta":{"range":[86316,86646],"filename":"CB_AudioFileCache.js","lineno":1492,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100008006","name":"CB_AudioFileCache.prototype.isAudioFileFreeByPosition","type":"FunctionExpression","paramnames":["position"]},"vars":{"x":"CB_AudioFileCache#isAudioFileFreeByPosition~x"}},"description":"<p>Tells whether a given numeric position of a {@link CB_AudioFile} object in the {@link CB_AudioFileCache#audioFiles} property is stored in the {@link CB_AudioFileCache#audioFilesFree} property or not (this means that the {@link CB_AudioFile} object in that position of the {@link CB_AudioFileCache#audioFiles} property is free). A free {@link CB_AudioFile} object is an object which is not being used and it is available to be used.</p>","kind":"function","params":[{"type":{"names":["integer"]},"description":"<p>Position of the {@link CB_AudioFile} object in the {@link CB_AudioFileCache#audioFiles} property that we want to check whether it is in the {@link CB_AudioFileCache#audioFilesFree} property or not.</p>","name":"position"}],"returns":[{"type":{"names":["boolean"]},"description":"<p>Returns whether the given numeric position of a {@link CB_AudioFile} object in the {@link CB_AudioFileCache#audioFiles} property is stored in the {@link CB_AudioFileCache#audioFilesFree} property or not (this means that the {@link CB_AudioFile} object in that position of the {@link CB_AudioFileCache#audioFiles} property is free). A free {@link CB_AudioFile} object is an object which is not being used and it is available to be used.</p>"}],"name":"isAudioFileFreeByPosition","longname":"CB_AudioFileCache#isAudioFileFreeByPosition","memberof":"CB_AudioFileCache","scope":"instance"},{"comment":"/**\r\n * Clears the sound instances (created by the {@link CB_AudioFileCache#play} method) which have been cancelled.\r\n * @function\r\n * @param {boolean} [clearWithObjectAssociated=false] - If set to true, it will also clear the sound instances which have a {@link CB_AudioFile} object associated.\r\n * @returns {integer} Returns the number of cleared sound instances.\r\n */","meta":{"range":[90632,91615],"filename":"CB_AudioFileCache.js","lineno":1591,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100008320","name":"CB_AudioFileCache.prototype.clearSoundInstances","type":"FunctionExpression","paramnames":["clearWithObjectAssociated"]},"vars":{"totalBefore":"CB_AudioFileCache#clearSoundInstances~totalBefore","kept":"CB_AudioFileCache#clearSoundInstances~kept","soundInstancesQueuedNew":"CB_AudioFileCache#clearSoundInstances~soundInstancesQueuedNew","soundInstanceId":"CB_AudioFileCache#clearSoundInstances~soundInstanceId","soundInstancesQueuedNew[undefined]":"CB_AudioFileCache#clearSoundInstances~soundInstancesQueuedNew.undefined]","this.soundInstancesQueued":"CB_AudioFileCache#soundInstancesQueued"}},"description":"<p>Clears the sound instances (created by the {@link CB_AudioFileCache#play} method) which have been cancelled.</p>","kind":"function","params":[{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If set to true, it will also clear the sound instances which have a {@link CB_AudioFile} object associated.</p>","name":"clearWithObjectAssociated"}],"returns":[{"type":{"names":["integer"]},"description":"<p>Returns the number of cleared sound instances.</p>"}],"name":"clearSoundInstances","longname":"CB_AudioFileCache#clearSoundInstances","memberof":"CB_AudioFileCache","scope":"instance"},{"comment":"/**\r\n * Cancels (to prevent they start playing) or enables all sound instances (created by the {@link CB_AudioFileCache#play} method).\r\n * @function\r\n * @param {boolean} [cancel=false] - Defines whether we want to cancel them or enable them.\r\n * @param {boolean} [affectWithObjectAssociated=false] - If set to true, it will also affect the sound instances which have a {@link CB_AudioFile} object associated.\r\n * @returns {integer} Returns the number of sound instances modified.\r\n */","meta":{"range":[92111,92421],"filename":"CB_AudioFileCache.js","lineno":1623,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100008431","name":"CB_AudioFileCache.prototype.cancelSoundInstances","type":"FunctionExpression","paramnames":["cancel","affectWithObjectAssociated"]},"vars":{"performed":"CB_AudioFileCache#cancelSoundInstances~performed","soundInstanceId":"CB_AudioFileCache#cancelSoundInstances~soundInstanceId"}},"description":"<p>Cancels (to prevent they start playing) or enables all sound instances (created by the {@link CB_AudioFileCache#play} method).</p>","kind":"function","params":[{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>Defines whether we want to cancel them or enable them.</p>","name":"cancel"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If set to true, it will also affect the sound instances which have a {@link CB_AudioFile} object associated.</p>","name":"affectWithObjectAssociated"}],"returns":[{"type":{"names":["integer"]},"description":"<p>Returns the number of sound instances modified.</p>"}],"name":"cancelSoundInstances","longname":"CB_AudioFileCache#cancelSoundInstances","memberof":"CB_AudioFileCache","scope":"instance"},{"comment":"/**\r\n * Cancels (to prevent it starts playing) or enables a sound instance (created by the {@link CB_AudioFileCache#play} method), by its identifier.\r\n * @function\r\n * @param {integer} soundInstanceId - The identifier (integer) of the sound instance we want to affect.\r\n * @param {boolean} [cancel=false] - Defines whether we want to cancel it or enable it.\r\n * @param {boolean} [affectWithObjectAssociated=false] - If set to true, it will also affect the sound instance even it has a {@link CB_AudioFile} object associated.\r\n * @returns {boolean} Returns true if the sound instance has been modified or false otherwise.\r\n */","meta":{"range":[93059,93818],"filename":"CB_AudioFileCache.js","lineno":1642,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100008468","name":"CB_AudioFileCache.prototype.cancelSoundInstance","type":"FunctionExpression","paramnames":["soundInstanceId","cancel","affectWithObjectAssociated"]},"vars":{"cancel":"CB_AudioFileCache#cancelSoundInstance~cancel","this.soundInstancesQueued[undefined].cancelled":"CB_AudioFileCache#soundInstancesQueued[undefined].cancelled"}},"description":"<p>Cancels (to prevent it starts playing) or enables a sound instance (created by the {@link CB_AudioFileCache#play} method), by its identifier.</p>","kind":"function","params":[{"type":{"names":["integer"]},"description":"<p>The identifier (integer) of the sound instance we want to affect.</p>","name":"soundInstanceId"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>Defines whether we want to cancel it or enable it.</p>","name":"cancel"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If set to true, it will also affect the sound instance even it has a {@link CB_AudioFile} object associated.</p>","name":"affectWithObjectAssociated"}],"returns":[{"type":{"names":["boolean"]},"description":"<p>Returns true if the sound instance has been modified or false otherwise.</p>"}],"name":"cancelSoundInstance","longname":"CB_AudioFileCache#cancelSoundInstance","memberof":"CB_AudioFileCache","scope":"instance"},{"comment":"/**\r\n * Gets the {@link CB_AudioFile} object associated to a given sound instance ID (created by the {@link CB_AudioFileCache#play} method), if any, or null otherwise.\r\n * @function\r\n * @param {integer} soundInstanceId - The identifier (integer) of the sound instance we want to get.\r\n * @param {boolean} [avoidCancelled=false] - If set to true, it will not return the {@link CB_AudioFile} object if its sound instance has been cancelled.\r\n * @returns {CB_AudioFile|null} Returns the {@link CB_AudioFile} object associated to a given sound instance ID, if any, or null otherwise.\r\n */","meta":{"range":[94414,94983],"filename":"CB_AudioFileCache.js","lineno":1665,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100008555","name":"CB_AudioFileCache.prototype.getAudioFileBySoundInstanceId","type":"FunctionExpression","paramnames":["soundInstanceId","avoidCancelled"]}},"description":"<p>Gets the {@link CB_AudioFile} object associated to a given sound instance ID (created by the {@link CB_AudioFileCache#play} method), if any, or null otherwise.</p>","kind":"function","params":[{"type":{"names":["integer"]},"description":"<p>The identifier (integer) of the sound instance we want to get.</p>","name":"soundInstanceId"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If set to true, it will not return the {@link CB_AudioFile} object if its sound instance has been cancelled.</p>","name":"avoidCancelled"}],"returns":[{"type":{"names":["CB_AudioFile","null"]},"description":"<p>Returns the {@link CB_AudioFile} object associated to a given sound instance ID, if any, or null otherwise.</p>"}],"name":"getAudioFileBySoundInstanceId","longname":"CB_AudioFileCache#getAudioFileBySoundInstanceId","memberof":"CB_AudioFileCache","scope":"instance"},{"comment":"/**\r\n * Plays a sound of the cache (if there is any free). If a sound cannot be played, this method can call itself internally again and again (with most of the given parameters being the same, depending on the circumstances) to try to play the sound until a desired time limit is reached. If a {@link CB_AudioFile} object cannot be played and it is determined necessary, it will try to reload it internally (by calling the {@link CB_AudioFileCache#removeAudioFile} method).\r\n * @function\r\n * @param {number} [startAt=0 | {@link CB_AudioFile_API.WAAPI#lastStartAt} | {@link CB_AudioFile_API.SM2#lastStartAt} | {@link CB_AudioFile_API.ACMP#lastStartAt} | {@link CB_AudioFile_API.AAPI#lastStartAt} | stopAt] - Time in milliseconds where we want the audio to start at. If not provided or it is not a valid number, it will use zero (0) as default which belongs to the beginning of the audio. If the value provided is greater than the \"stopAt\" provided, it will use the value set in the \"lastStartAt\" property of the used audio API object (which belongs to the \"startAt\" value the last time that the \"play\" method was called). If, even using the \"lastStartAt\" value is still greater than the \"stopAt\" provided, it will use the same value as the \"stopAt\" which means it will not play and will stop immediately. Used internally as the \"startAt\" parameter to call the {@link CB_AudioFile#play} method of the free {@link CB_AudioFile} object (if any).\r\n * @param {number} [stopAt={@link CB_AudioFile_API.WAAPI#getDuration}() | {@link CB_AudioFile_API.SM2#getDuration}() | {@link CB_AudioFile_API.ACMP#getDuration}() | {@link CB_AudioFile_API.AAPI#getDuration}()] - Time in milliseconds where we want the audio to stop at. If not provided or it is not a valid number, it will use the returning value of the \"getDuration\" method of the used audio API object (which should belong to the total duration of the audio, if it was calculated correctly). Used internally as the \"stopAt\" parameter to call the {@link CB_AudioFile#play} method of the free {@link CB_AudioFile} object (if any).\r\n * @param {boolean} [loop={@link CB_AudioFile#loop}] - Sets whether we want to play the audio looping (starting again and again) or just play it once. Used internally as the \"loop\" parameter to call the {@link CB_AudioFile#play} method of the free {@link CB_AudioFile} object (if any).\r\n * @param {number} [volume=CB_Configuration.CrossBase.CB_AudioFile_AudioFileCache_USE_SPEAKER_VOLUME_AS_DEFAULT ? CB_Speaker.getVolume() : CB_Configuration.CrossBase.CB_Speaker_DEFAULT_VOLUME] - Desired volume to play the audio. Used internally as the \"volume\" parameter to call the {@link CB_AudioFile#setVolume} method of the free {@link CB_AudioFile} object (if any), before playing it.\r\n * @param {boolean} [allowedRecursiveDelay={@link CB_Configuration.CrossBase.CB_AudioFile_AudioFileCache_ALLOWED_RECURSIVE_DELAY_DEFAULT}] - The maximum amount of time (in milliseconds) of delay that we accept before start playing the audio. If the amount of time is overcome, the audio will not play at all. Used only when the audio is not able to play immediately.\r\n * @param {boolean} [allowedRecursiveDelaySkipping=stopAt-startAt] - If provided (uses milliseconds) and the time expired trying to start playing the sound without success is still inside this amount of time provided, it will try to play the sound but skipping the part of the audio which should have already been played already. In other words, it will try to start playing the sound as if the previous non-played part (which should have been playing during the time which already expired) was already being playing silently. Only used when the time set in the \"allowedRecursiveDelay\" parameter has been reached and the audio did not start playing yet. The default value is the duration of the sound that we want to play (having in mind the real value of the \"startAt\" and \"stopAt\" parameters which are calculated internally and can be different from the provided ones in the case that they had any error).\r\n * @param {function} [onPlayStart] - Function to be called when the audio starts playing successfully. The function will be called with the following parameters (in order): \"soundInstanceId\" (the identifier of the sound instance used), \"startAt\", \"stopAt\", \"startAtNextLoop\", \"loop\", \"avoidDelayedPlay\", \"allowedRecursiveDelay\" and \"startPlayingTime\", being \"this\" the {@link CB_AudioFile} object used (if any). Used internally as the \"onPlayStart\" parameter (wrapped in another function) to call the {@link CB_AudioFile#play} method of the free {@link CB_AudioFile} object (if any).\r\n * @param {function} [onStop] - Function to call when the sound stops playing, with an unique parameter which belongs to the \"soundInstanceId\" (the identifier of the sound instance used), being \"this\" the {@link CB_AudioFile} object (if any). Used internally as the \"callbackFunction\" parameter (wrapped in a function) to call the {@link CB_AudioFile#onStop} method of the free {@link CB_AudioFile} object (if any), before playing it.\r\n * @param {number} [startPlayingTime=CB_Device.getTiming()] - Used internally to calculate the amount of time (in milliseconds) expired without playing the sound. Internal usage only recommended. \r\n * @param {number} [startAtOriginal=startAt] - Used internally to start playing the sound accurately and skipping the part which could not be played before, if the time expired without being played is still inside the amount of time provided in the \"allowedRecursiveDelaySkipping\" parameter. Internal usage only recommended.\r\n * @param {integer} [soundInstanceId=CB_AudioFileCache._soundInstanceIdUnique++] - The identifier of the sound instance that will be played. Used internally when the function is called recursively in the case that the sound could not be played immediately. Internal usage only recommended.\r\n * @param {Object} [_callRecursivelyIfNotTooLateCalledObject] - Object with just the \"called\" property (boolean). Used internally to know whether the current execution thread called already the {@link _callRecursivelyIfNotTooLate} internal method for the same sound instance or not. Internal usage only recommended.\r\n * @returns {integer|null} Returns the sound instance ID used if there was one free or null otherwise. To get a sound instance returned does not mean necessarily that the sound started playing so it is necessary to use a callback function as the \"onPlayStart\" parameter for checking this. The sound instance created (if any), will be cancelled automatically once the sound is stopped.\r\n */","meta":{"range":[104551,110364],"filename":"CB_AudioFileCache.js","lineno":1753,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100008915","name":"CB_AudioFileCache.prototype.play","type":"FunctionExpression","paramnames":["startAt","stopAt","loop","volume","allowedRecursiveDelay","allowedRecursiveDelaySkipping","onPlayStart","onStop","startPlayingTime","startAtOriginal","soundInstanceId","_callRecursivelyIfNotTooLateCalledObject"]},"vars":{"that":"CB_AudioFileCache#play~that","soundInstanceId":"CB_AudioFileCache#play~soundInstanceId","this.soundInstancesQueued[undefined]":"CB_AudioFileCache#soundInstancesQueued[undefined]","this.soundInstancesQueued[undefined].cancelled":"CB_AudioFileCache#soundInstancesQueued[undefined].cancelled","this.soundInstancesQueued[undefined].object":"CB_AudioFileCache#soundInstancesQueued[undefined].object","onPlayStartOld":"CB_AudioFileCache#play~onPlayStartOld","onPlayStart":"CB_AudioFileCache#play~onPlayStart","":null,"_callRecursivelyIfNotTooLateCalledObject":"CB_AudioFileCache#play~_callRecursivelyIfNotTooLateCalledObject","_callRecursivelyIfNotTooLateCalledObject.called":"CB_AudioFileCache#play~_callRecursivelyIfNotTooLateCalledObject.called","freeAudioFile":"CB_AudioFileCache#play~freeAudioFile","audioObject":"CB_AudioFileCache#play~audioObject","statusBefore":"CB_AudioFileCache#play~statusBefore","startPlayingTime":"CB_AudioFileCache#play~startPlayingTime","startAtOriginal":"CB_AudioFileCache#play~startAtOriginal","audioObject._fireOnStopByUser":"CB_AudioFileCache#play~audioObject._fireOnStopByUser","audioObject.audioFileObject.lastStartAt":"CB_AudioFileCache#play~audioObject.audioFileObject.lastStartAt","played":"CB_AudioFileCache#play~played"}},"description":"<p>Plays a sound of the cache (if there is any free). If a sound cannot be played, this method can call itself internally again and again (with most of the given parameters being the same, depending on the circumstances) to try to play the sound until a desired time limit is reached. If a {@link CB_AudioFile} object cannot be played and it is determined necessary, it will try to reload it internally (by calling the {@link CB_AudioFileCache#removeAudioFile} method).</p>","kind":"function","params":[{"type":{"names":["number"]},"optional":true,"defaultvalue":"0 | {@link CB_AudioFile_API.WAAPI#lastStartAt} | {@link CB_AudioFile_API.SM2#lastStartAt} | {@link CB_AudioFile_API.ACMP#lastStartAt} | {@link CB_AudioFile_API.AAPI#lastStartAt} | stopAt","description":"<p>Time in milliseconds where we want the audio to start at. If not provided or it is not a valid number, it will use zero (0) as default which belongs to the beginning of the audio. If the value provided is greater than the &quot;stopAt&quot; provided, it will use the value set in the &quot;lastStartAt&quot; property of the used audio API object (which belongs to the &quot;startAt&quot; value the last time that the &quot;play&quot; method was called). If, even using the &quot;lastStartAt&quot; value is still greater than the &quot;stopAt&quot; provided, it will use the same value as the &quot;stopAt&quot; which means it will not play and will stop immediately. Used internally as the &quot;startAt&quot; parameter to call the {@link CB_AudioFile#play} method of the free {@link CB_AudioFile} object (if any).</p>","name":"startAt"},{"type":{"names":["number"]},"optional":true,"defaultvalue":"{@link CB_AudioFile_API.WAAPI#getDuration}() | {@link CB_AudioFile_API.SM2#getDuration}() | {@link CB_AudioFile_API.ACMP#getDuration}() | {@link CB_AudioFile_API.AAPI#getDuration}()","description":"<p>Time in milliseconds where we want the audio to stop at. If not provided or it is not a valid number, it will use the returning value of the &quot;getDuration&quot; method of the used audio API object (which should belong to the total duration of the audio, if it was calculated correctly). Used internally as the &quot;stopAt&quot; parameter to call the {@link CB_AudioFile#play} method of the free {@link CB_AudioFile} object (if any).</p>","name":"stopAt"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":"{@link CB_AudioFile#loop}","description":"<p>Sets whether we want to play the audio looping (starting again and again) or just play it once. Used internally as the &quot;loop&quot; parameter to call the {@link CB_AudioFile#play} method of the free {@link CB_AudioFile} object (if any).</p>","name":"loop"},{"type":{"names":["number"]},"optional":true,"defaultvalue":"CB_Configuration.CrossBase.CB_AudioFile_AudioFileCache_USE_SPEAKER_VOLUME_AS_DEFAULT ? CB_Speaker.getVolume() : CB_Configuration.CrossBase.CB_Speaker_DEFAULT_VOLUME","description":"<p>Desired volume to play the audio. Used internally as the &quot;volume&quot; parameter to call the {@link CB_AudioFile#setVolume} method of the free {@link CB_AudioFile} object (if any), before playing it.</p>","name":"volume"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":"{@link CB_Configuration.CrossBase.CB_AudioFile_AudioFileCache_ALLOWED_RECURSIVE_DELAY_DEFAULT}","description":"<p>The maximum amount of time (in milliseconds) of delay that we accept before start playing the audio. If the amount of time is overcome, the audio will not play at all. Used only when the audio is not able to play immediately.</p>","name":"allowedRecursiveDelay"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":"stopAt-startAt","description":"<p>If provided (uses milliseconds) and the time expired trying to start playing the sound without success is still inside this amount of time provided, it will try to play the sound but skipping the part of the audio which should have already been played already. In other words, it will try to start playing the sound as if the previous non-played part (which should have been playing during the time which already expired) was already being playing silently. Only used when the time set in the &quot;allowedRecursiveDelay&quot; parameter has been reached and the audio did not start playing yet. The default value is the duration of the sound that we want to play (having in mind the real value of the &quot;startAt&quot; and &quot;stopAt&quot; parameters which are calculated internally and can be different from the provided ones in the case that they had any error).</p>","name":"allowedRecursiveDelaySkipping"},{"type":{"names":["function"]},"optional":true,"description":"<p>Function to be called when the audio starts playing successfully. The function will be called with the following parameters (in order): &quot;soundInstanceId&quot; (the identifier of the sound instance used), &quot;startAt&quot;, &quot;stopAt&quot;, &quot;startAtNextLoop&quot;, &quot;loop&quot;, &quot;avoidDelayedPlay&quot;, &quot;allowedRecursiveDelay&quot; and &quot;startPlayingTime&quot;, being &quot;this&quot; the {@link CB_AudioFile} object used (if any). Used internally as the &quot;onPlayStart&quot; parameter (wrapped in another function) to call the {@link CB_AudioFile#play} method of the free {@link CB_AudioFile} object (if any).</p>","name":"onPlayStart"},{"type":{"names":["function"]},"optional":true,"description":"<p>Function to call when the sound stops playing, with an unique parameter which belongs to the &quot;soundInstanceId&quot; (the identifier of the sound instance used), being &quot;this&quot; the {@link CB_AudioFile} object (if any). Used internally as the &quot;callbackFunction&quot; parameter (wrapped in a function) to call the {@link CB_AudioFile#onStop} method of the free {@link CB_AudioFile} object (if any), before playing it.</p>","name":"onStop"},{"type":{"names":["number"]},"optional":true,"defaultvalue":"CB_Device.getTiming()","description":"<p>Used internally to calculate the amount of time (in milliseconds) expired without playing the sound. Internal usage only recommended.</p>","name":"startPlayingTime"},{"type":{"names":["number"]},"optional":true,"defaultvalue":"startAt","description":"<p>Used internally to start playing the sound accurately and skipping the part which could not be played before, if the time expired without being played is still inside the amount of time provided in the &quot;allowedRecursiveDelaySkipping&quot; parameter. Internal usage only recommended.</p>","name":"startAtOriginal"},{"type":{"names":["integer"]},"optional":true,"defaultvalue":"CB_AudioFileCache._soundInstanceIdUnique++","description":"<p>The identifier of the sound instance that will be played. Used internally when the function is called recursively in the case that the sound could not be played immediately. Internal usage only recommended.</p>","name":"soundInstanceId"},{"type":{"names":["Object"]},"optional":true,"description":"<p>Object with just the &quot;called&quot; property (boolean). Used internally to know whether the current execution thread called already the {@link _callRecursivelyIfNotTooLate} internal method for the same sound instance or not. Internal usage only recommended.</p>","name":"_callRecursivelyIfNotTooLateCalledObject"}],"returns":[{"type":{"names":["integer","null"]},"description":"<p>Returns the sound instance ID used if there was one free or null otherwise. To get a sound instance returned does not mean necessarily that the sound started playing so it is necessary to use a callback function as the &quot;onPlayStart&quot; parameter for checking this. The sound instance created (if any), will be cancelled automatically once the sound is stopped.</p>"}],"name":"play","longname":"CB_AudioFileCache#play","memberof":"CB_AudioFileCache","scope":"instance"},{"comment":"/**\r\n * Object used by the {@link CB_AudioFileCache#executeFunctionAll} method when the \"returnSetTimeoutsArray\" parameter is set to true.\r\n * @memberof CB_AudioFileCache\r\n * @typedef {Object} CB_AudioFileCache.executeFunctionAll_OBJECT\r\n * @property {CB_AudioFile} item - The {@link CB_AudioFile} affected.\r\n * @property {integer} setTimeoutReturningValue - The returning value of calling the [setTimeout]{@link https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/setTimeout} internally or null if it was not called, depending on the \"delayBetweenEach\" parameter.\r\n * @property {number} setTimeoutDelay - The value used as the second parameter when calling the [setTimeout]{@link https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/setTimeout} internally or zero if it was not called, depending on the \"delayBetweenEach\" parameter.\r\n */","meta":{"filename":"CB_AudioFileCache.js","lineno":1860,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{}},"description":"<p>Object used by the {@link CB_AudioFileCache#executeFunctionAll} method when the &quot;returnSetTimeoutsArray&quot; parameter is set to true.</p>","memberof":"CB_AudioFileCache","kind":"typedef","name":"executeFunctionAll_OBJECT","type":{"names":["Object"]},"properties":[{"type":{"names":["CB_AudioFile"]},"description":"<p>The {@link CB_AudioFile} affected.</p>","name":"item"},{"type":{"names":["integer"]},"description":"<p>The returning value of calling the [setTimeout]{@link https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/setTimeout} internally or null if it was not called, depending on the &quot;delayBetweenEach&quot; parameter.</p>","name":"setTimeoutReturningValue"},{"type":{"names":["number"]},"description":"<p>The value used as the second parameter when calling the [setTimeout]{@link https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/setTimeout} internally or zero if it was not called, depending on the &quot;delayBetweenEach&quot; parameter.</p>","name":"setTimeoutDelay"}],"longname":"CB_AudioFileCache.executeFunctionAll_OBJECT","scope":"static"},{"comment":"/**\r\n * Alias for {@link CB_AudioFileCache#executeFunctionAll}.\r\n * @function CB_AudioFileCache#executeAll\r\n * @see {@link CB_AudioFileCache#executeFunctionAll}\r\n */","meta":{"filename":"CB_AudioFileCache.js","lineno":1869,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{}},"description":"<p>Alias for {@link CB_AudioFileCache#executeFunctionAll}.</p>","kind":"function","name":"executeAll","see":["{@link CB_AudioFileCache#executeFunctionAll}"],"memberof":"CB_AudioFileCache","longname":"CB_AudioFileCache#executeAll","scope":"instance"},{"comment":"/**\r\n * Alias for {@link CB_AudioFileCache#executeFunctionAll}.\r\n * @function CB_AudioFileCache#forEach\r\n * @see {@link CB_AudioFileCache#executeFunctionAll}\r\n */","meta":{"filename":"CB_AudioFileCache.js","lineno":1874,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{}},"description":"<p>Alias for {@link CB_AudioFileCache#executeFunctionAll}.</p>","kind":"function","name":"forEach","see":["{@link CB_AudioFileCache#executeFunctionAll}"],"memberof":"CB_AudioFileCache","longname":"CB_AudioFileCache#forEach","scope":"instance"},{"comment":"/**\r\n * Performs a desired action, using the provided function, on all the existing {@link CB_AudioFile} objects or on the desired ones (if provided). Calls the {@link CB_Arrays.executeFunctionAll} function internally and returns its returning value.\r\n * @function\r\n * @param {CB_Arrays.executeFunctionAll_ON_LOOP_CALLBACK} functionEach - Function that will be called for each {@link CB_AudioFile} object. As the first parameter it receives the {@link CB_AudioFile} object of the \"audioFiles\" being looped, as the second parameter the position of this {@link CB_AudioFile} object in the \"audioFiles\" array provided (or, if not provided, in the array of the {@link CB_AudioFileCache#audioFiles} property), the third parameter is the array being looped and the fourth parameter will be the \"delayBetweenEach\" being used, being \"this\" the {@link CB_AudioFile} object itself.\r\n * @param {number|CB_Arrays.executeFunctionAll_ON_LOOP_CALLBACK} [delayBetweenEach=0] - If a value greater than zero is used, it will be used as the delay desired between each call to the \"functionEach\" function (calling them using the [setTimeout]{@link https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/setTimeout} function internally). If not provided or the value is 0 (zero) or lower, each call to the \"functionEach\" function will be performed immediately one after the other. If a function is provided, it will be called with the same parameters as the \"functionEach\" function and its returning value will be used as the delay (executed every loop for each {@link CB_AudioFile} object).\r\n * @param {array} [audioFiles={@link CB_AudioFileCache#audioFiles}] - A numeric array containing the {@link CB_AudioFile} objects that we want to loop. It should contain only {@link CB_AudioFile} objects which are already in the current audio file cache. If not provided, it will use all the {@link CB_AudioFile} objects contained in the cache.\r\n * @param {boolean} [returnSetTimeoutsArray=false] - Defines whether we want the method to return an integer or a numeric array with information of each [setTimeout]{@link https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/setTimeout} call. Returning an array with information of each [setTimeout]{@link https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/setTimeout} call is only useful when the [setTimeout]{@link https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/setTimeout} function is called internally, which happens when the \"delayBetweenEach\" parameter is greater than 0 (zero).\r\n * @param {boolean} [delayBetweenEachAffectsFirst=false] - If set to true, the desired delay (if any) will also affect the first call to the \"functionEach\" function.\r\n * @param {CB_Arrays.executeFunctionAll_ON_FINISH_CALLBACK} [functionFinish] - Function that will be called for when it has finished looping all the items. The first parameter will be the array which was looped, the second parameter will be the number of times that the \"functionEach\" callback was called (the most likely, matches the number of elements unless they are undefined or null), and the third parameter will be the maximum \"delay\" used, being \"this\" the array itself.\r\n * @returns {integer|array} If the \"returnSetTimeoutsArray\" parameter is set to false, it will return the number of calls to the \"functionEach\" function that were performed (which should be the same number as the {@link CB_AudioFile} objects given in the \"audioFiles\" parameter). Otherwise, if the \"returnSetTimeoutsArray\" is set to true, it will return a numeric array with a {@link CB_AudioFileCache.executeFunctionAll_OBJECT} object for each {@link CB_AudioFile} given. The length of this array will also be the number of calls to the \"functionEach\" function that were performed. Note that if a value greater than 0 (zero) for the \"delayBetweenEach\" parameter has been provided, perhaps not all calls of the \"functionEach\" function will have been performed yet when exiting this method because of the asynchronous nature of the [setTimeout]{@link https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/setTimeout} function.\r\n * @todo Think about only allowing {@link CB_AudioFile} objects (in the \"audioFiles\" parameter) which are already in the cache (identify them by their ID), to avoid problems.\r\n */","meta":{"range":[115984,118090],"filename":"CB_AudioFileCache.js","lineno":1891,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100009405","name":"CB_AudioFileCache.prototype.executeFunctionAll","type":"AssignmentExpression","value":"CB_AudioFileCache.prototype.executeAll","paramnames":[]}},"description":"<p>Performs a desired action, using the provided function, on all the existing {@link CB_AudioFile} objects or on the desired ones (if provided). Calls the {@link CB_Arrays.executeFunctionAll} function internally and returns its returning value.</p>","kind":"function","params":[{"type":{"names":["CB_Arrays.executeFunctionAll_ON_LOOP_CALLBACK"]},"description":"<p>Function that will be called for each {@link CB_AudioFile} object. As the first parameter it receives the {@link CB_AudioFile} object of the &quot;audioFiles&quot; being looped, as the second parameter the position of this {@link CB_AudioFile} object in the &quot;audioFiles&quot; array provided (or, if not provided, in the array of the {@link CB_AudioFileCache#audioFiles} property), the third parameter is the array being looped and the fourth parameter will be the &quot;delayBetweenEach&quot; being used, being &quot;this&quot; the {@link CB_AudioFile} object itself.</p>","name":"functionEach"},{"type":{"names":["number","CB_Arrays.executeFunctionAll_ON_LOOP_CALLBACK"]},"optional":true,"defaultvalue":0,"description":"<p>If a value greater than zero is used, it will be used as the delay desired between each call to the &quot;functionEach&quot; function (calling them using the [setTimeout]{@link https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/setTimeout} function internally). If not provided or the value is 0 (zero) or lower, each call to the &quot;functionEach&quot; function will be performed immediately one after the other. If a function is provided, it will be called with the same parameters as the &quot;functionEach&quot; function and its returning value will be used as the delay (executed every loop for each {@link CB_AudioFile} object).</p>","name":"delayBetweenEach"},{"type":{"names":["array"]},"optional":true,"defaultvalue":"{@link CB_AudioFileCache#audioFiles}","description":"<p>A numeric array containing the {@link CB_AudioFile} objects that we want to loop. It should contain only {@link CB_AudioFile} objects which are already in the current audio file cache. If not provided, it will use all the {@link CB_AudioFile} objects contained in the cache.</p>","name":"audioFiles"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>Defines whether we want the method to return an integer or a numeric array with information of each [setTimeout]{@link https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/setTimeout} call. Returning an array with information of each [setTimeout]{@link https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/setTimeout} call is only useful when the [setTimeout]{@link https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/setTimeout} function is called internally, which happens when the &quot;delayBetweenEach&quot; parameter is greater than 0 (zero).</p>","name":"returnSetTimeoutsArray"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If set to true, the desired delay (if any) will also affect the first call to the &quot;functionEach&quot; function.</p>","name":"delayBetweenEachAffectsFirst"},{"type":{"names":["CB_Arrays.executeFunctionAll_ON_FINISH_CALLBACK"]},"optional":true,"description":"<p>Function that will be called for when it has finished looping all the items. The first parameter will be the array which was looped, the second parameter will be the number of times that the &quot;functionEach&quot; callback was called (the most likely, matches the number of elements unless they are undefined or null), and the third parameter will be the maximum &quot;delay&quot; used, being &quot;this&quot; the array itself.</p>","name":"functionFinish"}],"returns":[{"type":{"names":["integer","array"]},"description":"<p>If the &quot;returnSetTimeoutsArray&quot; parameter is set to false, it will return the number of calls to the &quot;functionEach&quot; function that were performed (which should be the same number as the {@link CB_AudioFile} objects given in the &quot;audioFiles&quot; parameter). Otherwise, if the &quot;returnSetTimeoutsArray&quot; is set to true, it will return a numeric array with a {@link CB_AudioFileCache.executeFunctionAll_OBJECT} object for each {@link CB_AudioFile} given. The length of this array will also be the number of calls to the &quot;functionEach&quot; function that were performed. Note that if a value greater than 0 (zero) for the &quot;delayBetweenEach&quot; parameter has been provided, perhaps not all calls of the &quot;functionEach&quot; function will have been performed yet when exiting this method because of the asynchronous nature of the [setTimeout]{@link https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/setTimeout} function.</p>"}],"todo":["Think about only allowing {@link CB_AudioFile} objects (in the \"audioFiles\" parameter) which are already in the cache (identify them by their ID), to avoid problems."],"name":"executeFunctionAll","longname":"CB_AudioFileCache#executeFunctionAll","memberof":"CB_AudioFileCache","scope":"instance"},{"comment":"/**\r\n * Destroys all the {@link CB_AudioFile} objects and frees memory, by calling {@link CB_AudioFile#destructor}(stopSounds, false, true).\r\n * @function\r\n * @param {boolean} [stopSounds=false] - Used internally as the \"stopSound\" parameter when calling the {@link CB_AudioFile#destructor} method of each {@link CB_AudioFile} object.\r\n * @returns {integer} Returns the number of {@link CB_AudioFile} objects whose {@link CB_AudioFile#destructor} has been called.\r\n * @todo Think about implementing an \"audioFiles\" parameter.\r\n */","meta":{"range":[118632,118963],"filename":"CB_AudioFileCache.js","lineno":1950,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100009450","name":"CB_AudioFileCache.prototype.destroyAll","type":"FunctionExpression","paramnames":["stopSounds"]},"vars":{"destroyed":"CB_AudioFileCache#destroyAll~destroyed","":null,"this.audioFilesFree":"CB_AudioFileCache#audioFilesFree","this.audioFilesFreePointer":"CB_AudioFileCache#audioFilesFreePointer"}},"description":"<p>Destroys all the {@link CB_AudioFile} objects and frees memory, by calling {@link CB_AudioFile#destructor}(stopSounds, false, true).</p>","kind":"function","params":[{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>Used internally as the &quot;stopSound&quot; parameter when calling the {@link CB_AudioFile#destructor} method of each {@link CB_AudioFile} object.</p>","name":"stopSounds"}],"returns":[{"type":{"names":["integer"]},"description":"<p>Returns the number of {@link CB_AudioFile} objects whose {@link CB_AudioFile#destructor} has been called.</p>"}],"todo":["Think about implementing an \"audioFiles\" parameter."],"name":"destroyAll","longname":"CB_AudioFileCache#destroyAll","memberof":"CB_AudioFileCache","scope":"instance"},{"comment":"/**\r\n * Callback function used by the {@link CB_AudioFileCache#checkPlayingAll} method that will be called when all the process was performed successfully.\r\n * @memberof CB_AudioFileCache\r\n * @callback CB_AudioFileCache.checkPlayingAll_CALLBACK_OK\r\n * @param {integer} performedActions - The number of {@link CB_AudioFile} objects that can be played.\r\n * @param {integer} uncheckedObjects - The number of {@link CB_AudioFile} objects that needed to be checked before calling this method.\r\n */","meta":{"filename":"CB_AudioFileCache.js","lineno":1963,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{}},"description":"<p>Callback function used by the {@link CB_AudioFileCache#checkPlayingAll} method that will be called when all the process was performed successfully.</p>","memberof":"CB_AudioFileCache","kind":"typedef","name":"checkPlayingAll_CALLBACK_OK","type":{"names":["function"]},"params":[{"type":{"names":["integer"]},"description":"<p>The number of {@link CB_AudioFile} objects that can be played.</p>","name":"performedActions"},{"type":{"names":["integer"]},"description":"<p>The number of {@link CB_AudioFile} objects that needed to be checked before calling this method.</p>","name":"uncheckedObjects"}],"longname":"CB_AudioFileCache.checkPlayingAll_CALLBACK_OK","scope":"static"},{"comment":"/**\r\n * Callback function used by the {@link CB_AudioFileCache#checkPlayingAll} method that will be called when not all was performed successfully.\r\n * @memberof CB_AudioFileCache\r\n * @callback CB_AudioFileCache.checkPlayingAll_CALLBACK_ERROR\r\n * @param {string} errorMessage - A string describing the error, if it could be determined.\r\n * @param {integer} performedActions - The number of {@link CB_AudioFile} objects that can be played.\r\n * @param {integer|undefined} uncheckedObjects - The number of {@link CB_AudioFile} objects that needed to be checked before calling this method (it will be undefined if it could not be determined).\r\n */","meta":{"filename":"CB_AudioFileCache.js","lineno":1971,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{}},"description":"<p>Callback function used by the {@link CB_AudioFileCache#checkPlayingAll} method that will be called when not all was performed successfully.</p>","memberof":"CB_AudioFileCache","kind":"typedef","name":"checkPlayingAll_CALLBACK_ERROR","type":{"names":["function"]},"params":[{"type":{"names":["string"]},"description":"<p>A string describing the error, if it could be determined.</p>","name":"errorMessage"},{"type":{"names":["integer"]},"description":"<p>The number of {@link CB_AudioFile} objects that can be played.</p>","name":"performedActions"},{"type":{"names":["integer","undefined"]},"description":"<p>The number of {@link CB_AudioFile} objects that needed to be checked before calling this method (it will be undefined if it could not be determined).</p>","name":"uncheckedObjects"}],"longname":"CB_AudioFileCache.checkPlayingAll_CALLBACK_ERROR","scope":"static"},{"comment":"/**\r\n * Checks whether each {@link CB_AudioFile} object whose {@link CB_AudioFile#getStatus} method returns the \"unchecked\" value (which belongs to the value of the {@link CB_AudioFile#UNCHECKED} property) can be played or not. After checking, if the audio can be played, the status of the {@link CB_AudioFile} object will get the value of {@link CB_AudioFile.LOADED}. Otherwise, if it cannot be played, the status of the {@link CB_AudioFile} object will get the value of {@link CB_AudioFile.FAILED}. If a {@link CB_AudioFile} object cannot be played and it is determined necessary, it will try to reload it internally (by calling the {@link CB_AudioFileCache#removeAudioFile} method). It will call the {@link CB_AudioFileCache#clearAudioFiles} method internally after finishing. Recommended to be called through a user-driven event (as onClick, onTouch, etc.).\r\n * @function\r\n * @param {CB_AudioFileCache.checkPlayingAll_CALLBACK_OK} [callbackOk] - A function which will be called if all the {@link CB_AudioFile} objects whose {@link CB_AudioFile#getStatus} method returned the \"unchecked\" value (which belongs to the value of the {@link CB_AudioFile#UNCHECKED} property) could finally be checked successfully and all can be played, being \"this\" the {@link CB_AudioFileCache} object itself.\r\n * @param {CB_AudioFileCache.checkPlayingAll_CALLBACK_ERROR} [callbackError] - A function which will be called if not all the {@link CB_AudioFile} objects whose {@link CB_AudioFile#getStatus} method returned the \"unchecked\" value (which belongs to the value of the {@link CB_AudioFile#UNCHECKED} property) could finally be checked successfully and any cannot be played, being \"this\" the {@link CB_AudioFileCache} object itself. This function will be called immediately if the method was previously called and it is still running currently.\r\n * @param {boolean} [ignoreQueue=false] - Used internally as the \"ignoreQueue\" parameter when calling the {@link CB_AudioFile#checkPlaying} method of each {@link CB_AudioFile} object.\r\n * @returns {integer} Returns the number of {@link CB_AudioFile} objects whose status belonged to the \"unchecked\" value (the value of the {@link CB_AudioFile#UNCHECKED} property) before the execution of this method. It will return 0 (zero) if the method is tried to be executed while there is another previous call of it still running. It will also return 0 (zero) if the status of the audio file cache is not loaded (the {@link CB_AudioFileCache#status} property does not belong to the value set in the {@link CB_AudioFileCache.LOADED} property) nor unchecked (the {@link CB_AudioFileCache#status} property does not belong to the value set in the {@link CB_AudioFileCache.UNCHECKED} property).\r\n * @todo Think about implementing an \"audioFiles\" parameter.\r\n */","meta":{"range":[122910,127543],"filename":"CB_AudioFileCache.js","lineno":1989,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100009492","name":"CB_AudioFileCache.prototype.checkPlayingAll","type":"FunctionExpression","paramnames":["callbackOk","callbackError","ignoreQueue"]},"vars":{"this._checkingPlaying":"CB_AudioFileCache#_checkingPlaying","that":"CB_AudioFileCache#checkPlayingAll~that","uncheckedObjects":"CB_AudioFileCache#checkPlayingAll~uncheckedObjects","":null,"performedActions":"CB_AudioFileCache#checkPlayingAll~performedActions","errorsHappenend":"CB_AudioFileCache#checkPlayingAll~errorsHappenend","lastError":"CB_AudioFileCache#checkPlayingAll~lastError","callbackErrorFunction":"CB_AudioFileCache#checkPlayingAll~callbackErrorFunction","callbackOkFunction":"CB_AudioFileCache#checkPlayingAll~callbackOkFunction"}},"description":"<p>Checks whether each {@link CB_AudioFile} object whose {@link CB_AudioFile#getStatus} method returns the &quot;unchecked&quot; value (which belongs to the value of the {@link CB_AudioFile#UNCHECKED} property) can be played or not. After checking, if the audio can be played, the status of the {@link CB_AudioFile} object will get the value of {@link CB_AudioFile.LOADED}. Otherwise, if it cannot be played, the status of the {@link CB_AudioFile} object will get the value of {@link CB_AudioFile.FAILED}. If a {@link CB_AudioFile} object cannot be played and it is determined necessary, it will try to reload it internally (by calling the {@link CB_AudioFileCache#removeAudioFile} method). It will call the {@link CB_AudioFileCache#clearAudioFiles} method internally after finishing. Recommended to be called through a user-driven event (as onClick, onTouch, etc.).</p>","kind":"function","params":[{"type":{"names":["CB_AudioFileCache.checkPlayingAll_CALLBACK_OK"]},"optional":true,"description":"<p>A function which will be called if all the {@link CB_AudioFile} objects whose {@link CB_AudioFile#getStatus} method returned the &quot;unchecked&quot; value (which belongs to the value of the {@link CB_AudioFile#UNCHECKED} property) could finally be checked successfully and all can be played, being &quot;this&quot; the {@link CB_AudioFileCache} object itself.</p>","name":"callbackOk"},{"type":{"names":["CB_AudioFileCache.checkPlayingAll_CALLBACK_ERROR"]},"optional":true,"description":"<p>A function which will be called if not all the {@link CB_AudioFile} objects whose {@link CB_AudioFile#getStatus} method returned the &quot;unchecked&quot; value (which belongs to the value of the {@link CB_AudioFile#UNCHECKED} property) could finally be checked successfully and any cannot be played, being &quot;this&quot; the {@link CB_AudioFileCache} object itself. This function will be called immediately if the method was previously called and it is still running currently.</p>","name":"callbackError"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>Used internally as the &quot;ignoreQueue&quot; parameter when calling the {@link CB_AudioFile#checkPlaying} method of each {@link CB_AudioFile} object.</p>","name":"ignoreQueue"}],"returns":[{"type":{"names":["integer"]},"description":"<p>Returns the number of {@link CB_AudioFile} objects whose status belonged to the &quot;unchecked&quot; value (the value of the {@link CB_AudioFile#UNCHECKED} property) before the execution of this method. It will return 0 (zero) if the method is tried to be executed while there is another previous call of it still running. It will also return 0 (zero) if the status of the audio file cache is not loaded (the {@link CB_AudioFileCache#status} property does not belong to the value set in the {@link CB_AudioFileCache.LOADED} property) nor unchecked (the {@link CB_AudioFileCache#status} property does not belong to the value set in the {@link CB_AudioFileCache.UNCHECKED} property).</p>"}],"todo":["Think about implementing an \"audioFiles\" parameter."],"name":"checkPlayingAll","longname":"CB_AudioFileCache#checkPlayingAll","memberof":"CB_AudioFileCache","scope":"instance"},{"comment":"/**\r\n * Tries to play all the {@link CB_AudioFile} objects by calling their {@link CB_AudioFile#play} method internally. If a {@link CB_AudioFile} object cannot be played and it is determined necessary, it will try to reload it internally (by calling the {@link CB_AudioFileCache#removeAudioFile} method). It does not create sound instances.\r\n * @function\r\n * @param {number} [startAt=0 | {@link CB_AudioFile_API.WAAPI#lastStartAt} | {@link CB_AudioFile_API.SM2#lastStartAt} | {@link CB_AudioFile_API.ACMP#lastStartAt} | {@link CB_AudioFile_API.AAPI#lastStartAt} | stopAt] - Time in milliseconds where we want the audio to start at. If not provided or it is not a valid number, it will use zero (0) as default which belongs to the beginning of the audio. If the value provided is greater than the \"stopAt\" provided, it will use the value set in the \"lastStartAt\" property of the used audio API object (which belongs to the \"startAt\" value the last time that the \"play\" method was called). If, even using the \"lastStartAt\" value is still greater than the \"stopAt\" provided, it will use the same value as the \"stopAt\" which means it will not play and will stop immediately. Used internally as the \"startAt\" parameter to call the {@link CB_AudioFile#play} method of the {@link CB_AudioFile} object.\r\n * @param {number} [stopAt={@link CB_AudioFile_API.WAAPI#getDuration}() | {@link CB_AudioFile_API.SM2#getDuration}() | {@link CB_AudioFile_API.ACMP#getDuration}() | {@link CB_AudioFile_API.AAPI#getDuration}()] - Time in milliseconds where we want the audio to stop at. If not provided or it is not a valid number, it will use the returning value of the \"getDuration\" method of the used audio API object (which should belong to the total duration of the audio, if it was calculated correctly). Used internally as the \"stopAt\" parameter to call the {@link CB_AudioFile#play} method of the {@link CB_AudioFile} object.\r\n * @param {boolean} [loop={@link CB_AudioFile#loop}] - Sets whether we want to play the audio looping (starting again and again) or just play it once. Note that at the end of each loop the \"onStop\" function defined will not be called. Used internally as the \"loop\" parameter to call the {@link CB_AudioFile#play} method of the {@link CB_AudioFile} object.\r\n * @param {number} [volume=CB_Configuration.CrossBase.CB_AudioFile_AudioFileCache_USE_SPEAKER_VOLUME_AS_DEFAULT ? CB_Speaker.getVolume() : CB_Configuration.CrossBase.CB_Speaker_DEFAULT_VOLUME] - Desired volume to play the audio. Used internally as the \"volume\" parameter to call the {@link CB_AudioFile#setVolume} method of the {@link CB_AudioFile} object, before playing it.\r\n * @param {boolean} [avoidDelayedPlay=false] - If set to false (recommended) and the audio failed previously or was aborted (destroyed), it will try to load it correctly again automatically and play it after that if possible (this can take some time so the audio could start playing after a delay). Otherwise, if set to true and the audio failed or was aborted (destroyed), the audio will not play at all and the \"stop\" method of the audio file object will be called immediately. Used internally as the \"avoidDelayedPlay\" parameter to call the {@link CB_AudioFile#play} method of the {@link CB_AudioFile} object.\r\n * @param {boolean} [allowedRecursiveDelay={@link CB_Configuration.CrossBase.CB_AudioFile_AudioFileCache_ALLOWED_RECURSIVE_DELAY_DEFAULT}] - The maximum amount of time (in milliseconds) of delay that we accept before start playing the audio. If the amount of time is overcome, the audio will not play at all and the \"stop\" method will be called immediately. Used only when the \"avoidDelayedPlay\" parameter is set to false and the audio needs to be loaded because it failed previously or was aborted (destroyed). Used internally as the \"allowedRecursiveDelay\" parameter to call the {@link CB_AudioFile#play} method of the {@link CB_AudioFile} object.\r\n * @param {function} [onPlayStart] - Function to be called when the audio starts playing successfully. The function will be called with the following parameters (in order): \"startAt\", \"stopAt\", \"startAtNextLoop\", \"loop\", \"avoidDelayedPlay\", \"allowedRecursiveDelay\" and \"startPlayingTime\", being \"this\" the {@link CB_AudioFile} object. Used internally as the \"onPlayStart\" parameter to call the {@link CB_AudioFile#play} method of the {@link CB_AudioFile} object.\r\n * @param {function} [onStop] - Function that will be called each time that a {@link CB_AudioFile} object stops playing. Used internally as the \"callbackFunction\" parameter to call the {@link CB_AudioFile#onStop} method of the {@link CB_AudioFile} object, before playing it.\r\n * @param {boolean} [includingPlaying=false] - If set to true, it will call the {@link CB_AudioFile#play} method even for those {@link CB_AudioFile} objects which are currently playing.\r\n * @returns {integer} Returns the number of {@link CB_AudioFile} objects whose {@link CB_AudioFile#play} method did not return the value of \"-1\" (this does not mean necessarily that they could be played successfully).\r\n * @todo Think about implementing an \"audioFiles\" parameter.\r\n */","meta":{"range":[132687,134556],"filename":"CB_AudioFileCache.js","lineno":2144,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100009970","name":"CB_AudioFileCache.prototype.playAll","type":"FunctionExpression","paramnames":["startAt","stopAt","loop","volume","avoidDelayedPlay","allowedRecursiveDelay","onPlayStart","onStop","includingPlaying"]},"vars":{"this.audioFilesFree":"CB_AudioFileCache#audioFilesFree","this.audioFilesFreePointer":"CB_AudioFileCache#audioFilesFreePointer","that":"CB_AudioFileCache#playAll~that","performed":"CB_AudioFileCache#playAll~performed","":null}},"description":"<p>Tries to play all the {@link CB_AudioFile} objects by calling their {@link CB_AudioFile#play} method internally. If a {@link CB_AudioFile} object cannot be played and it is determined necessary, it will try to reload it internally (by calling the {@link CB_AudioFileCache#removeAudioFile} method). It does not create sound instances.</p>","kind":"function","params":[{"type":{"names":["number"]},"optional":true,"defaultvalue":"0 | {@link CB_AudioFile_API.WAAPI#lastStartAt} | {@link CB_AudioFile_API.SM2#lastStartAt} | {@link CB_AudioFile_API.ACMP#lastStartAt} | {@link CB_AudioFile_API.AAPI#lastStartAt} | stopAt","description":"<p>Time in milliseconds where we want the audio to start at. If not provided or it is not a valid number, it will use zero (0) as default which belongs to the beginning of the audio. If the value provided is greater than the &quot;stopAt&quot; provided, it will use the value set in the &quot;lastStartAt&quot; property of the used audio API object (which belongs to the &quot;startAt&quot; value the last time that the &quot;play&quot; method was called). If, even using the &quot;lastStartAt&quot; value is still greater than the &quot;stopAt&quot; provided, it will use the same value as the &quot;stopAt&quot; which means it will not play and will stop immediately. Used internally as the &quot;startAt&quot; parameter to call the {@link CB_AudioFile#play} method of the {@link CB_AudioFile} object.</p>","name":"startAt"},{"type":{"names":["number"]},"optional":true,"defaultvalue":"{@link CB_AudioFile_API.WAAPI#getDuration}() | {@link CB_AudioFile_API.SM2#getDuration}() | {@link CB_AudioFile_API.ACMP#getDuration}() | {@link CB_AudioFile_API.AAPI#getDuration}()","description":"<p>Time in milliseconds where we want the audio to stop at. If not provided or it is not a valid number, it will use the returning value of the &quot;getDuration&quot; method of the used audio API object (which should belong to the total duration of the audio, if it was calculated correctly). Used internally as the &quot;stopAt&quot; parameter to call the {@link CB_AudioFile#play} method of the {@link CB_AudioFile} object.</p>","name":"stopAt"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":"{@link CB_AudioFile#loop}","description":"<p>Sets whether we want to play the audio looping (starting again and again) or just play it once. Note that at the end of each loop the &quot;onStop&quot; function defined will not be called. Used internally as the &quot;loop&quot; parameter to call the {@link CB_AudioFile#play} method of the {@link CB_AudioFile} object.</p>","name":"loop"},{"type":{"names":["number"]},"optional":true,"defaultvalue":"CB_Configuration.CrossBase.CB_AudioFile_AudioFileCache_USE_SPEAKER_VOLUME_AS_DEFAULT ? CB_Speaker.getVolume() : CB_Configuration.CrossBase.CB_Speaker_DEFAULT_VOLUME","description":"<p>Desired volume to play the audio. Used internally as the &quot;volume&quot; parameter to call the {@link CB_AudioFile#setVolume} method of the {@link CB_AudioFile} object, before playing it.</p>","name":"volume"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If set to false (recommended) and the audio failed previously or was aborted (destroyed), it will try to load it correctly again automatically and play it after that if possible (this can take some time so the audio could start playing after a delay). Otherwise, if set to true and the audio failed or was aborted (destroyed), the audio will not play at all and the &quot;stop&quot; method of the audio file object will be called immediately. Used internally as the &quot;avoidDelayedPlay&quot; parameter to call the {@link CB_AudioFile#play} method of the {@link CB_AudioFile} object.</p>","name":"avoidDelayedPlay"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":"{@link CB_Configuration.CrossBase.CB_AudioFile_AudioFileCache_ALLOWED_RECURSIVE_DELAY_DEFAULT}","description":"<p>The maximum amount of time (in milliseconds) of delay that we accept before start playing the audio. If the amount of time is overcome, the audio will not play at all and the &quot;stop&quot; method will be called immediately. Used only when the &quot;avoidDelayedPlay&quot; parameter is set to false and the audio needs to be loaded because it failed previously or was aborted (destroyed). Used internally as the &quot;allowedRecursiveDelay&quot; parameter to call the {@link CB_AudioFile#play} method of the {@link CB_AudioFile} object.</p>","name":"allowedRecursiveDelay"},{"type":{"names":["function"]},"optional":true,"description":"<p>Function to be called when the audio starts playing successfully. The function will be called with the following parameters (in order): &quot;startAt&quot;, &quot;stopAt&quot;, &quot;startAtNextLoop&quot;, &quot;loop&quot;, &quot;avoidDelayedPlay&quot;, &quot;allowedRecursiveDelay&quot; and &quot;startPlayingTime&quot;, being &quot;this&quot; the {@link CB_AudioFile} object. Used internally as the &quot;onPlayStart&quot; parameter to call the {@link CB_AudioFile#play} method of the {@link CB_AudioFile} object.</p>","name":"onPlayStart"},{"type":{"names":["function"]},"optional":true,"description":"<p>Function that will be called each time that a {@link CB_AudioFile} object stops playing. Used internally as the &quot;callbackFunction&quot; parameter to call the {@link CB_AudioFile#onStop} method of the {@link CB_AudioFile} object, before playing it.</p>","name":"onStop"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If set to true, it will call the {@link CB_AudioFile#play} method even for those {@link CB_AudioFile} objects which are currently playing.</p>","name":"includingPlaying"}],"returns":[{"type":{"names":["integer"]},"description":"<p>Returns the number of {@link CB_AudioFile} objects whose {@link CB_AudioFile#play} method did not return the value of &quot;-1&quot; (this does not mean necessarily that they could be played successfully).</p>"}],"todo":["Think about implementing an \"audioFiles\" parameter."],"name":"playAll","longname":"CB_AudioFileCache#playAll","memberof":"CB_AudioFileCache","scope":"instance"},{"comment":"/**\r\n * Tries to stops all the existing {@link CB_AudioFile} objects or the desired ones (if provided), which are being played, by calling their {@link CB_AudioFile#stop} method internally.\r\n * @function\r\n * @param {array} [audioFiles={@link CB_AudioFileCache#audioFiles}] - A numeric array containing the {@link CB_AudioFile} objects that we want to affect. It should contain only {@link CB_AudioFile} objects which are already in the current audio file cache. If not provided, it will use all the {@link CB_AudioFile} objects contained in the cache.\r\n * @returns {integer} Returns the number of calls to the {@link CB_AudioFile#stop} method that were performed (which should be the same number as the {@link CB_AudioFile} objects in the \"audioFiles\" parameter).\r\n */","meta":{"range":[135335,135477],"filename":"CB_AudioFileCache.js","lineno":2203,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100010142","name":"CB_AudioFileCache.prototype.stopAll","type":"FunctionExpression","paramnames":["audioFiles"]},"vars":{"":null}},"description":"<p>Tries to stops all the existing {@link CB_AudioFile} objects or the desired ones (if provided), which are being played, by calling their {@link CB_AudioFile#stop} method internally.</p>","kind":"function","params":[{"type":{"names":["array"]},"optional":true,"defaultvalue":"{@link CB_AudioFileCache#audioFiles}","description":"<p>A numeric array containing the {@link CB_AudioFile} objects that we want to affect. It should contain only {@link CB_AudioFile} objects which are already in the current audio file cache. If not provided, it will use all the {@link CB_AudioFile} objects contained in the cache.</p>","name":"audioFiles"}],"returns":[{"type":{"names":["integer"]},"description":"<p>Returns the number of calls to the {@link CB_AudioFile#stop} method that were performed (which should be the same number as the {@link CB_AudioFile} objects in the &quot;audioFiles&quot; parameter).</p>"}],"name":"stopAll","longname":"CB_AudioFileCache#stopAll","memberof":"CB_AudioFileCache","scope":"instance"},{"comment":"/**\r\n * Plays silently and stops all {@link CB_AudioFile} objects after a desired time. It can be useful for some clients which need the {@link CB_AudioFile#play} method to be called through a user-driven event (as onClick, onTouch, etc.). Internally, it calls {@link CB_AudioFileCache#playAll}(0, null, false, 0, true, null, null, null, includingPlaying) and, after a desired delay, calls the {@link CB_AudioFileCache#stopAll} method.\r\n * @function\r\n * @param {boolean} [includingPlaying=false] - If set to true, it will call the {@link CB_AudioFile#play} method even for those {@link CB_AudioFile} objects which are currently playing.\r\n * @param {number} [delayBeforeStop=100] - Delay (in milliseconds) before stopping the audio, that will be used as the second parameter of the [setTimeout]{@link https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/setTimeout} function when calling the {@link CB_AudioFileCache#stopAll} method.\r\n * @returns {integer} Returns the number of {@link CB_AudioFile} objects whose {@link CB_AudioFile#play} method did not return the value of \"-1\" (this does not mean necessarily that they could be played successfully).\r\n * @todo Think about implementing an \"audioFiles\" parameter.\r\n */","meta":{"range":[136730,137234],"filename":"CB_AudioFileCache.js","lineno":2217,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100010166","name":"CB_AudioFileCache.prototype.playAndStopAll","type":"FunctionExpression","paramnames":["includingPlaying","delayBeforeStop"]},"vars":{"delayBeforeStop":"CB_AudioFileCache#playAndStopAll~delayBeforeStop","played":"CB_AudioFileCache#playAndStopAll~played","that":"CB_AudioFileCache#playAndStopAll~that","":null}},"description":"<p>Plays silently and stops all {@link CB_AudioFile} objects after a desired time. It can be useful for some clients which need the {@link CB_AudioFile#play} method to be called through a user-driven event (as onClick, onTouch, etc.). Internally, it calls {@link CB_AudioFileCache#playAll}(0, null, false, 0, true, null, null, null, includingPlaying) and, after a desired delay, calls the {@link CB_AudioFileCache#stopAll} method.</p>","kind":"function","params":[{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If set to true, it will call the {@link CB_AudioFile#play} method even for those {@link CB_AudioFile} objects which are currently playing.</p>","name":"includingPlaying"},{"type":{"names":["number"]},"optional":true,"defaultvalue":100,"description":"<p>Delay (in milliseconds) before stopping the audio, that will be used as the second parameter of the [setTimeout]{@link https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/setTimeout} function when calling the {@link CB_AudioFileCache#stopAll} method.</p>","name":"delayBeforeStop"}],"returns":[{"type":{"names":["integer"]},"description":"<p>Returns the number of {@link CB_AudioFile} objects whose {@link CB_AudioFile#play} method did not return the value of &quot;-1&quot; (this does not mean necessarily that they could be played successfully).</p>"}],"todo":["Think about implementing an \"audioFiles\" parameter."],"name":"playAndStopAll","longname":"CB_AudioFileCache#playAndStopAll","memberof":"CB_AudioFileCache","scope":"instance"},{"comment":"/**\r\n * Tries to pause all the existing {@link CB_AudioFile} objects or the desired ones (if provided), which are being played, by calling their {@link CB_AudioFile#pause} method internally.\r\n * @function\r\n * @param {function} [onPause] - Function without parameters to be called when the audio is paused successfully, being \"this\" the {@link CB_AudioFile} object. Used internally as the \"onPause\" parameter to call the {@link CB_AudioFile#pause} method of the {@link CB_AudioFile} object.\r\n * @param {array} [audioFiles={@link CB_AudioFileCache#audioFiles}] - A numeric array containing the {@link CB_AudioFile} objects that we want to affect. It should contain only {@link CB_AudioFile} objects which are already in the current audio file cache. If not provided, it will use all the {@link CB_AudioFile} objects contained in the cache.\r\n * @returns {integer} Returns the number of calls to the {@link CB_AudioFile#pause} method that were performed (which should be the same number as the {@link CB_AudioFile} objects in the \"audioFiles\" parameter).\r\n */","meta":{"range":[138301,138461],"filename":"CB_AudioFileCache.js","lineno":2234,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100010235","name":"CB_AudioFileCache.prototype.pauseAll","type":"FunctionExpression","paramnames":["onPause","audioFiles"]},"vars":{"":null}},"description":"<p>Tries to pause all the existing {@link CB_AudioFile} objects or the desired ones (if provided), which are being played, by calling their {@link CB_AudioFile#pause} method internally.</p>","kind":"function","params":[{"type":{"names":["function"]},"optional":true,"description":"<p>Function without parameters to be called when the audio is paused successfully, being &quot;this&quot; the {@link CB_AudioFile} object. Used internally as the &quot;onPause&quot; parameter to call the {@link CB_AudioFile#pause} method of the {@link CB_AudioFile} object.</p>","name":"onPause"},{"type":{"names":["array"]},"optional":true,"defaultvalue":"{@link CB_AudioFileCache#audioFiles}","description":"<p>A numeric array containing the {@link CB_AudioFile} objects that we want to affect. It should contain only {@link CB_AudioFile} objects which are already in the current audio file cache. If not provided, it will use all the {@link CB_AudioFile} objects contained in the cache.</p>","name":"audioFiles"}],"returns":[{"type":{"names":["integer"]},"description":"<p>Returns the number of calls to the {@link CB_AudioFile#pause} method that were performed (which should be the same number as the {@link CB_AudioFile} objects in the &quot;audioFiles&quot; parameter).</p>"}],"name":"pauseAll","longname":"CB_AudioFileCache#pauseAll","memberof":"CB_AudioFileCache","scope":"instance"},{"comment":"/**\r\n * Resumes all the existing {@link CB_AudioFile} objects or the desired ones (if provided), which are paused (and not stopped). It uses the {@link CB_AudioFileCache#play} method internally.\r\n * @function\r\n * @param {boolean} [loop={@link CB_AudioFile#loop}] - Used internally as the \"loop\" parameter to call the {@link CB_AudioFileCache#play} method.\r\n * @param {boolean} [allowedRecursiveDelay={@link CB_Configuration.CrossBase.CB_AudioFile_AudioFileCache_ALLOWED_RECURSIVE_DELAY_DEFAULT}] - Used internally as the \"allowedRecursiveDelay\" parameter to call the {@link CB_AudioFileCache#play} method.\r\n * @param {boolean} [allowedRecursiveDelaySkipping=CB_AudioFile#lastStopAt-CB_AudioFile#lastStartAt] - Used internally as the \"allowedRecursiveDelaySkipping\" parameter to call the {@link CB_AudioFileCache#play} method.\r\n * @param {function} [onPlayStart] - Used internally as the \"onPlayStart\" parameter to call the {@link CB_AudioFileCache#play} method.\r\n * @param {function} [onStop] - Used internally as the \"onStop\" parameter to call the {@link CB_AudioFileCache#play} method.\r\n * @param {array} [audioFiles={@link CB_AudioFileCache#audioFiles}] - A numeric array containing the {@link CB_AudioFile} objects that we want to affect. It should contain only {@link CB_AudioFile} objects which are already in the current audio file cache. If not provided, it will use all the {@link CB_AudioFile} objects contained in the cache.\r\n * @returns {array} Returns a numeric array containing all the return values of each internal call to the {@link CB_AudioFileCache#play} method.\r\n */","meta":{"range":[140063,142027],"filename":"CB_AudioFileCache.js","lineno":2251,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100010261","name":"CB_AudioFileCache.prototype.resumeAll","type":"FunctionExpression","paramnames":["loop","allowedRecursiveDelay","allowedRecursiveDelaySkipping","onPlayStart","onStop","audioFiles"]},"vars":{"that":"CB_AudioFileCache#resumeAll~that","startAt":"CB_AudioFileCache#resumeAll~startAt","startAtOriginal":"CB_AudioFileCache#resumeAll~startAtOriginal","soundInstances":"CB_AudioFileCache#resumeAll~soundInstances","":null}},"description":"<p>Resumes all the existing {@link CB_AudioFile} objects or the desired ones (if provided), which are paused (and not stopped). It uses the {@link CB_AudioFileCache#play} method internally.</p>","kind":"function","params":[{"type":{"names":["boolean"]},"optional":true,"defaultvalue":"{@link CB_AudioFile#loop}","description":"<p>Used internally as the &quot;loop&quot; parameter to call the {@link CB_AudioFileCache#play} method.</p>","name":"loop"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":"{@link CB_Configuration.CrossBase.CB_AudioFile_AudioFileCache_ALLOWED_RECURSIVE_DELAY_DEFAULT}","description":"<p>Used internally as the &quot;allowedRecursiveDelay&quot; parameter to call the {@link CB_AudioFileCache#play} method.</p>","name":"allowedRecursiveDelay"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":"CB_AudioFile#lastStopAt-CB_AudioFile#lastStartAt","description":"<p>Used internally as the &quot;allowedRecursiveDelaySkipping&quot; parameter to call the {@link CB_AudioFileCache#play} method.</p>","name":"allowedRecursiveDelaySkipping"},{"type":{"names":["function"]},"optional":true,"description":"<p>Used internally as the &quot;onPlayStart&quot; parameter to call the {@link CB_AudioFileCache#play} method.</p>","name":"onPlayStart"},{"type":{"names":["function"]},"optional":true,"description":"<p>Used internally as the &quot;onStop&quot; parameter to call the {@link CB_AudioFileCache#play} method.</p>","name":"onStop"},{"type":{"names":["array"]},"optional":true,"defaultvalue":"{@link CB_AudioFileCache#audioFiles}","description":"<p>A numeric array containing the {@link CB_AudioFile} objects that we want to affect. It should contain only {@link CB_AudioFile} objects which are already in the current audio file cache. If not provided, it will use all the {@link CB_AudioFile} objects contained in the cache.</p>","name":"audioFiles"}],"returns":[{"type":{"names":["array"]},"description":"<p>Returns a numeric array containing all the return values of each internal call to the {@link CB_AudioFileCache#play} method.</p>"}],"name":"resumeAll","longname":"CB_AudioFileCache#resumeAll","memberof":"CB_AudioFileCache","scope":"instance"},{"comment":"/**\r\n * Mutes all the existing {@link CB_AudioFile} objects or the desired ones (if provided). It uses the {@link CB_AudioFile#mute} method internally.\r\n * @function\r\n * @param {function} [onMute] - Callback function which will be called for each audio file if it has been possible to mute it (or at least it was possible to try it), being \"this\" the {@link CB_AudioFile} object. Used internally as the \"onMute\" parameter to call the {@link CB_AudioFile#mute} method.\r\n * @param {array} [audioFiles={@link CB_AudioFileCache#audioFiles}] - A numeric array containing the {@link CB_AudioFile} objects that we want to affect. It should contain only {@link CB_AudioFile} objects which are already in the current audio file cache. If not provided, it will use all the {@link CB_AudioFile} objects contained in the cache.\r\n * @returns {integer} Returns the number of calls to the {@link CB_AudioFile#mute} method that were performed (which should be the same number as the {@link CB_AudioFile} objects in the \"audioFiles\" parameter).\r\n */","meta":{"range":[143071,143227],"filename":"CB_AudioFileCache.js","lineno":2303,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100010413","name":"CB_AudioFileCache.prototype.muteAll","type":"FunctionExpression","paramnames":["onMute","audioFiles"]},"vars":{"":null}},"description":"<p>Mutes all the existing {@link CB_AudioFile} objects or the desired ones (if provided). It uses the {@link CB_AudioFile#mute} method internally.</p>","kind":"function","params":[{"type":{"names":["function"]},"optional":true,"description":"<p>Callback function which will be called for each audio file if it has been possible to mute it (or at least it was possible to try it), being &quot;this&quot; the {@link CB_AudioFile} object. Used internally as the &quot;onMute&quot; parameter to call the {@link CB_AudioFile#mute} method.</p>","name":"onMute"},{"type":{"names":["array"]},"optional":true,"defaultvalue":"{@link CB_AudioFileCache#audioFiles}","description":"<p>A numeric array containing the {@link CB_AudioFile} objects that we want to affect. It should contain only {@link CB_AudioFile} objects which are already in the current audio file cache. If not provided, it will use all the {@link CB_AudioFile} objects contained in the cache.</p>","name":"audioFiles"}],"returns":[{"type":{"names":["integer"]},"description":"<p>Returns the number of calls to the {@link CB_AudioFile#mute} method that were performed (which should be the same number as the {@link CB_AudioFile} objects in the &quot;audioFiles&quot; parameter).</p>"}],"name":"muteAll","longname":"CB_AudioFileCache#muteAll","memberof":"CB_AudioFileCache","scope":"instance"},{"comment":"/**\r\n * Unmutes all the existing {@link CB_AudioFile} objects or the desired ones (if provided). It uses the {@link CB_AudioFile#unmute} method internally.\r\n * @function\r\n * @param {function} [onUnmute] - Callback function which will be called for each audio file if it has been possible to unmute it (or at least it was possible to try it), being \"this\" the {@link CB_AudioFile} object. Used internally as the \"onUnmute\" parameter to call the {@link CB_AudioFile#unmute} method.\r\n * @param {array} [audioFiles={@link CB_AudioFileCache#audioFiles}] - A numeric array containing the {@link CB_AudioFile} objects that we want to affect. It should contain only {@link CB_AudioFile} objects which are already in the current audio file cache. If not provided, it will use all the {@link CB_AudioFile} objects contained in the cache.\r\n * @returns {integer} Returns the number of calls to the {@link CB_AudioFile#unmute} method that were performed (which should be the same number as the {@link CB_AudioFile} objects in the \"audioFiles\" parameter).\r\n */","meta":{"range":[144285,144449],"filename":"CB_AudioFileCache.js","lineno":2316,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100010439","name":"CB_AudioFileCache.prototype.unmuteAll","type":"FunctionExpression","paramnames":["onUnmute","audioFiles"]},"vars":{"":null}},"description":"<p>Unmutes all the existing {@link CB_AudioFile} objects or the desired ones (if provided). It uses the {@link CB_AudioFile#unmute} method internally.</p>","kind":"function","params":[{"type":{"names":["function"]},"optional":true,"description":"<p>Callback function which will be called for each audio file if it has been possible to unmute it (or at least it was possible to try it), being &quot;this&quot; the {@link CB_AudioFile} object. Used internally as the &quot;onUnmute&quot; parameter to call the {@link CB_AudioFile#unmute} method.</p>","name":"onUnmute"},{"type":{"names":["array"]},"optional":true,"defaultvalue":"{@link CB_AudioFileCache#audioFiles}","description":"<p>A numeric array containing the {@link CB_AudioFile} objects that we want to affect. It should contain only {@link CB_AudioFile} objects which are already in the current audio file cache. If not provided, it will use all the {@link CB_AudioFile} objects contained in the cache.</p>","name":"audioFiles"}],"returns":[{"type":{"names":["integer"]},"description":"<p>Returns the number of calls to the {@link CB_AudioFile#unmute} method that were performed (which should be the same number as the {@link CB_AudioFile} objects in the &quot;audioFiles&quot; parameter).</p>"}],"name":"unmuteAll","longname":"CB_AudioFileCache#unmuteAll","memberof":"CB_AudioFileCache","scope":"instance"},{"comment":"/**\r\n * Sets the same volume for all the existing {@link CB_AudioFile} objects or the desired ones (if provided). It uses the {@link CB_AudioFile#setVolume} method internally.\r\n * @function\r\n * @param {number} [volume={@link CB_Speaker.getVolume()} | {@link CB_Configuration.CrossBase.CB_Speaker_DEFAULT_VOLUME}] - Desired volume (from 0 to the maximum value, where the maximum value will be the returning value of calling the {@link CB_Speaker.getVolume} function if the {@link CB_Configuration.CrossBase.CB_AudioFile_AudioFileCache_USE_SPEAKER_VOLUME_AS_MAXIMUM} property is set to true or it will be 100 otherwise). Used internally as the \"volume\" parameter to call the {@link CB_AudioFile#setVolume} method.\r\n * @param {boolean} [forceSetVolumeProperty=false] - If set to true (not recommended), it will change the \"volume\" property of the used audio API object even when the volume was failed to be changed. Used internally as the \"forceSetVolumeProperty\" parameter to call the {@link CB_AudioFile#setVolume} method.\r\n * @param {function} [onSetVolume] - Callback function which will be called if it has been possible to set the volume (or at least it was possible to try it), being \"this\" the {@link CB_AudioFile} object. Used internally as the \"onSetVolume\" parameter to call the {@link CB_AudioFile#setVolume} method.\r\n * @param {array} [audioFiles={@link CB_AudioFileCache#audioFiles}] - A numeric array containing the {@link CB_AudioFile} objects that we want to affect. It should contain only {@link CB_AudioFile} objects which are already in the current audio file cache. If not provided, it will use all the {@link CB_AudioFile} objects contained in the cache.\r\n * @returns {integer} Returns the number of calls to the {@link CB_AudioFile#setVolume} method that were performed (which should be the same number as the {@link CB_AudioFile} objects in the \"audioFiles\" parameter).\r\n */","meta":{"range":[146358,146598],"filename":"CB_AudioFileCache.js","lineno":2331,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100010465","name":"CB_AudioFileCache.prototype.setVolumeAll","type":"FunctionExpression","paramnames":["volume","forceSetVolumeProperty","onSetVolume","audioFiles"]},"vars":{"":null}},"description":"<p>Sets the same volume for all the existing {@link CB_AudioFile} objects or the desired ones (if provided). It uses the {@link CB_AudioFile#setVolume} method internally.</p>","kind":"function","params":[{"type":{"names":["number"]},"optional":true,"defaultvalue":"{@link CB_Speaker.getVolume()} | {@link CB_Configuration.CrossBase.CB_Speaker_DEFAULT_VOLUME}","description":"<p>Desired volume (from 0 to the maximum value, where the maximum value will be the returning value of calling the {@link CB_Speaker.getVolume} function if the {@link CB_Configuration.CrossBase.CB_AudioFile_AudioFileCache_USE_SPEAKER_VOLUME_AS_MAXIMUM} property is set to true or it will be 100 otherwise). Used internally as the &quot;volume&quot; parameter to call the {@link CB_AudioFile#setVolume} method.</p>","name":"volume"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If set to true (not recommended), it will change the &quot;volume&quot; property of the used audio API object even when the volume was failed to be changed. Used internally as the &quot;forceSetVolumeProperty&quot; parameter to call the {@link CB_AudioFile#setVolume} method.</p>","name":"forceSetVolumeProperty"},{"type":{"names":["function"]},"optional":true,"description":"<p>Callback function which will be called if it has been possible to set the volume (or at least it was possible to try it), being &quot;this&quot; the {@link CB_AudioFile} object. Used internally as the &quot;onSetVolume&quot; parameter to call the {@link CB_AudioFile#setVolume} method.</p>","name":"onSetVolume"},{"type":{"names":["array"]},"optional":true,"defaultvalue":"{@link CB_AudioFileCache#audioFiles}","description":"<p>A numeric array containing the {@link CB_AudioFile} objects that we want to affect. It should contain only {@link CB_AudioFile} objects which are already in the current audio file cache. If not provided, it will use all the {@link CB_AudioFile} objects contained in the cache.</p>","name":"audioFiles"}],"returns":[{"type":{"names":["integer"]},"description":"<p>Returns the number of calls to the {@link CB_AudioFile#setVolume} method that were performed (which should be the same number as the {@link CB_AudioFile} objects in the &quot;audioFiles&quot; parameter).</p>"}],"name":"setVolumeAll","longname":"CB_AudioFileCache#setVolumeAll","memberof":"CB_AudioFileCache","scope":"instance"},{"comment":"/**\r\n * Callback function used by the {@link CB_AudioFileCache#setAudioAPIAll} method that will be called when all the process was performed successfully.\r\n * @memberof CB_AudioFileCache\r\n * @callback CB_AudioFileCache.setAudioAPIAll_CALLBACK_OK\r\n * @param {integer} objectsChangedAPI - The number of {@link CB_AudioFile} objects that actually changed its audio API.\r\n * @param {integer} performedActions - The number of {@link CB_AudioFile} objects that ended with a desired audio API, including those ones which were already using it.\r\n * @param {integer} actionsNeeded - The total number of {@link CB_AudioFile} objects that were considered to perform the action (it will be undefined if it could not be determined).\r\n */","meta":{"filename":"CB_AudioFileCache.js","lineno":2337,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{}},"description":"<p>Callback function used by the {@link CB_AudioFileCache#setAudioAPIAll} method that will be called when all the process was performed successfully.</p>","memberof":"CB_AudioFileCache","kind":"typedef","name":"setAudioAPIAll_CALLBACK_OK","type":{"names":["function"]},"params":[{"type":{"names":["integer"]},"description":"<p>The number of {@link CB_AudioFile} objects that actually changed its audio API.</p>","name":"objectsChangedAPI"},{"type":{"names":["integer"]},"description":"<p>The number of {@link CB_AudioFile} objects that ended with a desired audio API, including those ones which were already using it.</p>","name":"performedActions"},{"type":{"names":["integer"]},"description":"<p>The total number of {@link CB_AudioFile} objects that were considered to perform the action (it will be undefined if it could not be determined).</p>","name":"actionsNeeded"}],"longname":"CB_AudioFileCache.setAudioAPIAll_CALLBACK_OK","scope":"static"},{"comment":"/**\r\n * Callback function used by the {@link CB_AudioFileCache#setAudioAPIAll} method that will be called when any error happened.\r\n * @memberof CB_AudioFileCache\r\n * @callback CB_AudioFileCache.setAudioAPIAll_CALLBACK_ERROR\r\n * @param {string} error - A string describing the error, if it was possible to be determined.\r\n * @param {integer} errorsHappened - The number of errors that happened, which could be greater than 1 if more than one internal call to the {@link CB_AudioFile#setAudioAPI} method failed.\r\n * @param {integer} objectsChangedAPI - The number of {@link CB_AudioFile} objects that actually changed its audio API.\r\n * @param {integer} performedActions - The number of {@link CB_AudioFile} objects that ended with a desired audio API, including those ones which were already using it.\r\n * @param {integer} actionsNeeded - The total number of {@link CB_AudioFile} objects that were considered to perform the action (it will be undefined if it could not be determined).\r\n */","meta":{"filename":"CB_AudioFileCache.js","lineno":2346,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{}},"description":"<p>Callback function used by the {@link CB_AudioFileCache#setAudioAPIAll} method that will be called when any error happened.</p>","memberof":"CB_AudioFileCache","kind":"typedef","name":"setAudioAPIAll_CALLBACK_ERROR","type":{"names":["function"]},"params":[{"type":{"names":["string"]},"description":"<p>A string describing the error, if it was possible to be determined.</p>","name":"error"},{"type":{"names":["integer"]},"description":"<p>The number of errors that happened, which could be greater than 1 if more than one internal call to the {@link CB_AudioFile#setAudioAPI} method failed.</p>","name":"errorsHappened"},{"type":{"names":["integer"]},"description":"<p>The number of {@link CB_AudioFile} objects that actually changed its audio API.</p>","name":"objectsChangedAPI"},{"type":{"names":["integer"]},"description":"<p>The number of {@link CB_AudioFile} objects that ended with a desired audio API, including those ones which were already using it.</p>","name":"performedActions"},{"type":{"names":["integer"]},"description":"<p>The total number of {@link CB_AudioFile} objects that were considered to perform the action (it will be undefined if it could not be determined).</p>","name":"actionsNeeded"}],"longname":"CB_AudioFileCache.setAudioAPIAll_CALLBACK_ERROR","scope":"static"},{"comment":"/**\r\n * Tries to change the audio API for all the existing {@link CB_AudioFile} objects or the desired ones (if provided). Uses the {@link CB_AudioFile#setAudioAPI} method internally. This method is not allowed to be called if a previous call to it did not finish yet. The function defined in the \"callbackError\" parameter, if any, will be called immediately if the method was previously called and it is still running currently.\r\n * @function\r\n * @param {array|string} preferredAPIs - Array of strings with the preferred audio API or audio APIs, in order of preference. It also accepts a string with only one audio API. If more than one audio API is provided and setting an audio API fails for a {@link CB_AudioFile} object, it will try setting the next one and so on (this means that some of the {@link CB_AudioFile} objects could end with a different audio API). Possible audio APIs are \"WAAPI\" ([HTML5 Web Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API}), \"SM2\" ([SoundManager 2]{@link http://schillmania.com/projects/soundmanager2/}), \"ACMP\" ([Apache Cordova Media Plugin]{@link https://github.com/apache/cordova-plugin-media}) or \"AAPI\" ([HTML5 Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/audio}).\r\n * @param {CB_AudioFileCache.setAudioAPIAll_CALLBACK_OK} [callbackOk] - Function that will be called when all the process was performed successfully, being \"this\" the {@link CB_AudioFileCache} object.\r\n * @param {CB_AudioFileCache.setAudioAPIAll_CALLBACK_ERROR} [callbackError] - Function that will be called when any error happened, being \"this\" the {@link CB_AudioFileCache} object. This function will be called immediately if the method was previously called and it is still running currently.\r\n * @param {boolean} [mandatory=false] - If set to true and any {@link CB_AudioFile} object could not perform successfully any call to its {@link CB_AudioFile#setAudioAPI} method for all desired audio APIs provided in the \"preferredAPIs\" parameter (this means that, internally, all the {@link CB_AudioFile#setAudioAPI} calls, one per desired audio API, have fired an error by calling the function defined in its \"callbackError\" parameter), the audio file cache will be set as \"FAILED\" (the {@link CB_AudioFileCache#status} property will be set to the value of {@link CB_AudioFileCache.FAILED}).\r\n * @param {string} [forceReload=false] - Used internally as the \"forceReload\" parameter when calling the {@link CB_AudioFile#setAudioAPI} method internally.\r\n * @param {array} [audioFiles={@link CB_AudioFileCache#audioFiles}] - A numeric array containing the {@link CB_AudioFile} objects that we want to affect. It should contain only {@link CB_AudioFile} objects which are already in the current audio file cache. If not provided, it will use all the {@link CB_AudioFile} objects contained in the cache.\r\n * @returns {integer} Returns the number of calls to the {@link CB_AudioFile#setAudioAPI} method that were performed (which should be the same number as the {@link CB_AudioFile} objects in the \"audioFiles\" parameter).\r\n */","meta":{"range":[151443,161718],"filename":"CB_AudioFileCache.js","lineno":2368,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100010495","name":"CB_AudioFileCache.prototype.setAudioAPIAll","type":"FunctionExpression","paramnames":["preferredAPIs","callbackOk","callbackError","mandatory","forceReload","audioFiles"]},"vars":{"this._settingAPI":"CB_AudioFileCache#_settingAPI","that":"CB_AudioFileCache#setAudioAPIAll~that","objectsChangedAPI":"CB_AudioFileCache#setAudioAPIAll~objectsChangedAPI","errorsHappened":"CB_AudioFileCache#setAudioAPIAll~errorsHappened","errorFunction":"CB_AudioFileCache#setAudioAPIAll~errorFunction","":null,"performedActions":"CB_AudioFileCache#setAudioAPIAll~performedActions","actionsNeeded":"CB_AudioFileCache#setAudioAPIAll~actionsNeeded","preferredAPIs":"CB_AudioFileCache#setAudioAPIAll~preferredAPIs","audioFiles":"CB_AudioFileCache#setAudioAPIAll~audioFiles","this.status":"CB_AudioFileCache#status","audioFilesLength":"CB_AudioFileCache#setAudioAPIAll~audioFilesLength","x":"CB_AudioFileCache#setAudioAPIAll~x","callbackOkFunction":"CB_AudioFileCache#setAudioAPIAll~callbackOkFunction","callbackErrorFunction":"CB_AudioFileCache#setAudioAPIAll~callbackErrorFunction","setAPIEach":"CB_AudioFileCache#setAudioAPIAll~setAPIEach"}},"description":"<p>Tries to change the audio API for all the existing {@link CB_AudioFile} objects or the desired ones (if provided). Uses the {@link CB_AudioFile#setAudioAPI} method internally. This method is not allowed to be called if a previous call to it did not finish yet. The function defined in the &quot;callbackError&quot; parameter, if any, will be called immediately if the method was previously called and it is still running currently.</p>","kind":"function","params":[{"type":{"names":["array","string"]},"description":"<p>Array of strings with the preferred audio API or audio APIs, in order of preference. It also accepts a string with only one audio API. If more than one audio API is provided and setting an audio API fails for a {@link CB_AudioFile} object, it will try setting the next one and so on (this means that some of the {@link CB_AudioFile} objects could end with a different audio API). Possible audio APIs are &quot;WAAPI&quot; ([HTML5 Web Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API}), &quot;SM2&quot; ([SoundManager 2]{@link http://schillmania.com/projects/soundmanager2/}), &quot;ACMP&quot; ([Apache Cordova Media Plugin]{@link https://github.com/apache/cordova-plugin-media}) or &quot;AAPI&quot; ([HTML5 Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/audio}).</p>","name":"preferredAPIs"},{"type":{"names":["CB_AudioFileCache.setAudioAPIAll_CALLBACK_OK"]},"optional":true,"description":"<p>Function that will be called when all the process was performed successfully, being &quot;this&quot; the {@link CB_AudioFileCache} object.</p>","name":"callbackOk"},{"type":{"names":["CB_AudioFileCache.setAudioAPIAll_CALLBACK_ERROR"]},"optional":true,"description":"<p>Function that will be called when any error happened, being &quot;this&quot; the {@link CB_AudioFileCache} object. This function will be called immediately if the method was previously called and it is still running currently.</p>","name":"callbackError"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If set to true and any {@link CB_AudioFile} object could not perform successfully any call to its {@link CB_AudioFile#setAudioAPI} method for all desired audio APIs provided in the &quot;preferredAPIs&quot; parameter (this means that, internally, all the {@link CB_AudioFile#setAudioAPI} calls, one per desired audio API, have fired an error by calling the function defined in its &quot;callbackError&quot; parameter), the audio file cache will be set as &quot;FAILED&quot; (the {@link CB_AudioFileCache#status} property will be set to the value of {@link CB_AudioFileCache.FAILED}).</p>","name":"mandatory"},{"type":{"names":["string"]},"optional":true,"defaultvalue":false,"description":"<p>Used internally as the &quot;forceReload&quot; parameter when calling the {@link CB_AudioFile#setAudioAPI} method internally.</p>","name":"forceReload"},{"type":{"names":["array"]},"optional":true,"defaultvalue":"{@link CB_AudioFileCache#audioFiles}","description":"<p>A numeric array containing the {@link CB_AudioFile} objects that we want to affect. It should contain only {@link CB_AudioFile} objects which are already in the current audio file cache. If not provided, it will use all the {@link CB_AudioFile} objects contained in the cache.</p>","name":"audioFiles"}],"returns":[{"type":{"names":["integer"]},"description":"<p>Returns the number of calls to the {@link CB_AudioFile#setAudioAPI} method that were performed (which should be the same number as the {@link CB_AudioFile} objects in the &quot;audioFiles&quot; parameter).</p>"}],"name":"setAudioAPIAll","longname":"CB_AudioFileCache#setAudioAPIAll","memberof":"CB_AudioFileCache","scope":"instance"},{"comment":"/**\r\n * Tells whether any of the {@link CB_AudioFile} objects is playing or not. It uses the {@link CB_AudioFile#isPlaying} method internally.\r\n * @function\r\n * @returns {boolean} Returns whether any of the {@link CB_AudioFile} objects is playing or not.\r\n */","meta":{"range":[161987,162329],"filename":"CB_AudioFileCache.js","lineno":2646,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100011431","name":"CB_AudioFileCache.prototype.isPlaying","type":"FunctionExpression","paramnames":[]},"vars":{"audioFilesLength":"CB_AudioFileCache#isPlaying~audioFilesLength","x":"CB_AudioFileCache#isPlaying~x"}},"description":"<p>Tells whether any of the {@link CB_AudioFile} objects is playing or not. It uses the {@link CB_AudioFile#isPlaying} method internally.</p>","kind":"function","returns":[{"type":{"names":["boolean"]},"description":"<p>Returns whether any of the {@link CB_AudioFile} objects is playing or not.</p>"}],"name":"isPlaying","longname":"CB_AudioFileCache#isPlaying","memberof":"CB_AudioFileCache","scope":"instance"},{"comment":"/**\r\n * Tells the current number of free {@link CB_AudioFile} objects (the number of objects which are available and ready to use).\r\n * @function\r\n * @returns {integer} Returns the current number of free {@link CB_AudioFile} objects (the number of objects which are available and ready to use).\r\n */","meta":{"range":[162638,162749],"filename":"CB_AudioFileCache.js","lineno":2665,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100011493","name":"CB_AudioFileCache.prototype.getAudioFilesFreeNumber","type":"FunctionExpression","paramnames":[]}},"description":"<p>Tells the current number of free {@link CB_AudioFile} objects (the number of objects which are available and ready to use).</p>","kind":"function","returns":[{"type":{"names":["integer"]},"description":"<p>Returns the current number of free {@link CB_AudioFile} objects (the number of objects which are available and ready to use).</p>"}],"name":"getAudioFilesFreeNumber","longname":"CB_AudioFileCache#getAudioFilesFreeNumber","memberof":"CB_AudioFileCache","scope":"instance"},{"comment":"/**\r\n * Gets an array with all the {@link CB_AudioFile} objects.\r\n * @function\r\n * @param {boolean} [copy=false] - If set to true, instead of returning the {@link CB_AudioFileCache#audioFiles} property directly, it will return a new copy of it.\r\n * @returns {array} Returns an array with all the {@link CB_AudioFile} objects.\r\n */","meta":{"range":[163090,163513],"filename":"CB_AudioFileCache.js","lineno":2677,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100011508","name":"CB_AudioFileCache.prototype.getAudioFiles","type":"FunctionExpression","paramnames":["copy"]},"vars":{"audioFiles":"CB_AudioFileCache#getAudioFiles~audioFiles","audioFilesLength":"CB_AudioFileCache#getAudioFiles~audioFilesLength","y":"CB_AudioFileCache#getAudioFiles~y","x":"CB_AudioFileCache#getAudioFiles~x","audioFiles[undefined]":"CB_AudioFileCache#getAudioFiles~audioFiles.undefined]"}},"description":"<p>Gets an array with all the {@link CB_AudioFile} objects.</p>","kind":"function","params":[{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If set to true, instead of returning the {@link CB_AudioFileCache#audioFiles} property directly, it will return a new copy of it.</p>","name":"copy"}],"returns":[{"type":{"names":["array"]},"description":"<p>Returns an array with all the {@link CB_AudioFile} objects.</p>"}],"name":"getAudioFiles","longname":"CB_AudioFileCache#getAudioFiles","memberof":"CB_AudioFileCache","scope":"instance"},{"comment":"/**\r\n * Gets an array with the free {@link CB_AudioFile} objects (the objects which are available and ready to use).\r\n * @function\r\n * @returns {array} Returns an array with the free {@link CB_AudioFile} objects (the objects which are available and ready to use).\r\n */","meta":{"range":[163791,164208],"filename":"CB_AudioFileCache.js","lineno":2702,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100011584","name":"CB_AudioFileCache.prototype.getAudioFilesFree","type":"FunctionExpression","paramnames":[]},"vars":{"audioFiles":"CB_AudioFileCache#getAudioFilesFree~audioFiles","audioFilesLength":"CB_AudioFileCache#getAudioFilesFree~audioFilesLength","y":"CB_AudioFileCache#getAudioFilesFree~y","x":"CB_AudioFileCache#getAudioFilesFree~x","audioFiles[undefined]":"CB_AudioFileCache#getAudioFilesFree~audioFiles.undefined]"}},"description":"<p>Gets an array with the free {@link CB_AudioFile} objects (the objects which are available and ready to use).</p>","kind":"function","returns":[{"type":{"names":["array"]},"description":"<p>Returns an array with the free {@link CB_AudioFile} objects (the objects which are available and ready to use).</p>"}],"name":"getAudioFilesFree","longname":"CB_AudioFileCache#getAudioFilesFree","memberof":"CB_AudioFileCache","scope":"instance"},{"comment":"/**\r\n * Gets an array with the busy {@link CB_AudioFile} objects (the objects which are not available and ready to use).\r\n * @function\r\n * @returns {array} Returns an array with the busy {@link CB_AudioFile} objects (the objects which are not available and ready to use).\r\n */","meta":{"range":[164494,164912],"filename":"CB_AudioFileCache.js","lineno":2723,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100011657","name":"CB_AudioFileCache.prototype.getAudioFilesBusy","type":"FunctionExpression","paramnames":[]},"vars":{"audioFiles":"CB_AudioFileCache#getAudioFilesBusy~audioFiles","audioFilesLength":"CB_AudioFileCache#getAudioFilesBusy~audioFilesLength","y":"CB_AudioFileCache#getAudioFilesBusy~y","x":"CB_AudioFileCache#getAudioFilesBusy~x","audioFiles[undefined]":"CB_AudioFileCache#getAudioFilesBusy~audioFiles.undefined]"}},"description":"<p>Gets an array with the busy {@link CB_AudioFile} objects (the objects which are not available and ready to use).</p>","kind":"function","returns":[{"type":{"names":["array"]},"description":"<p>Returns an array with the busy {@link CB_AudioFile} objects (the objects which are not available and ready to use).</p>"}],"name":"getAudioFilesBusy","longname":"CB_AudioFileCache#getAudioFilesBusy","memberof":"CB_AudioFileCache","scope":"instance"},{"comment":"/**\r\n * Tells the number of {@link CB_AudioFile} objects created.\r\n * @function\r\n * @param {boolean} [real=false] - If set to true, instead of returning the value of the {@link CB_AudioFileCache#audioFilesCreated} property, it will return the value of the \"length\" property of the {@link CB_AudioFileCache#audioFiles} array which are the real number of {@link CB_AudioFile} objects used. If all went well, the returning value should be always the same regardless of this parameter.\r\n * @returns {integer} Returns the number of {@link CB_AudioFile} objects created.\r\n */","meta":{"range":[165492,165651],"filename":"CB_AudioFileCache.js","lineno":2745,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100011731","name":"CB_AudioFileCache.prototype.getAudioFilesNumber","type":"FunctionExpression","paramnames":["real"]}},"description":"<p>Tells the number of {@link CB_AudioFile} objects created.</p>","kind":"function","params":[{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If set to true, instead of returning the value of the {@link CB_AudioFileCache#audioFilesCreated} property, it will return the value of the &quot;length&quot; property of the {@link CB_AudioFileCache#audioFiles} array which are the real number of {@link CB_AudioFile} objects used. If all went well, the returning value should be always the same regardless of this parameter.</p>","name":"real"}],"returns":[{"type":{"names":["integer"]},"description":"<p>Returns the number of {@link CB_AudioFile} objects created.</p>"}],"name":"getAudioFilesNumber","longname":"CB_AudioFileCache#getAudioFilesNumber","memberof":"CB_AudioFileCache","scope":"instance"},{"comment":"/**\r\n * Tells the duration (minimum or maximum) of the sound stored (in milliseconds). Although the audio file cache should always be used to cache the same sound only, the duration might not always be the same due the usage of different formats, file paths, etc. So this method returns either the minimum or the maximum duration found among all the {@link CB_AudioFile} objects.\r\n * @function\r\n * @param {boolean} [maximum=false] - If set to true, instead of returning the value of the {@link CB_AudioFileCache#duration} property (which belongs to the minimum duration found among all the {@link CB_AudioFile} objects), it will return the value of {@link CB_AudioFileCache#durationMaximum} property (which belongs to the maximum duration found among all the {@link CB_AudioFile} objects).\r\n * @returns {number} Returns the duration (minimum or maximum) of the sound stored (in milliseconds). Although the audio file cache should always be used to cache the same sound only, the duration might not always be the same due the usage of different formats, file paths, etc. So this method returns either the minimum or the maximum duration found among all the {@link CB_AudioFile} objects.\r\n */","meta":{"range":[166852,166998],"filename":"CB_AudioFileCache.js","lineno":2758,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100011755","name":"CB_AudioFileCache.prototype.getDuration","type":"FunctionExpression","paramnames":["maximum"]}},"description":"<p>Tells the duration (minimum or maximum) of the sound stored (in milliseconds). Although the audio file cache should always be used to cache the same sound only, the duration might not always be the same due the usage of different formats, file paths, etc. So this method returns either the minimum or the maximum duration found among all the {@link CB_AudioFile} objects.</p>","kind":"function","params":[{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If set to true, instead of returning the value of the {@link CB_AudioFileCache#duration} property (which belongs to the minimum duration found among all the {@link CB_AudioFile} objects), it will return the value of {@link CB_AudioFileCache#durationMaximum} property (which belongs to the maximum duration found among all the {@link CB_AudioFile} objects).</p>","name":"maximum"}],"returns":[{"type":{"names":["number"]},"description":"<p>Returns the duration (minimum or maximum) of the sound stored (in milliseconds). Although the audio file cache should always be used to cache the same sound only, the duration might not always be the same due the usage of different formats, file paths, etc. So this method returns either the minimum or the maximum duration found among all the {@link CB_AudioFile} objects.</p>"}],"name":"getDuration","longname":"CB_AudioFileCache#getDuration","memberof":"CB_AudioFileCache","scope":"instance"},{"comment":"/**\r\n * Returns a number representing the percentage of the loading progress for the audio file cache (from 0 to 100, being 100 a complete loading progress). The way to calculate it internally may differ from one audio API to another and it is not totally reliable.\r\n * @function\r\n * @param {boolean} [countLoadedObjects=false] - If set to true, it will count the {@link CB_AudioFile} objects whose {@link CB_AudioFile#getStatus} method returns \"LOADED\" (the value of the {@link CB_AudioFile#LOADED} property), instead of just using the array's \"length\" of the {@link CB_AudioFileCache#audioFiles} property.\r\n * @param {boolean} [alsoUncheckedAndCheckingObjects=false] - If set to true and the \"countLoadedObjects\" parameter is also true, it will also count the {@link CB_AudioFile} objects whose {@link CB_AudioFile#getStatus} method returns \"UNCHECKED\" (the value of the {@link CB_AudioFile#UNCHECKED} property) or \"CHECKING\" (the value of the {@link CB_AudioFile#CHECKING} property). If the \"countLoadedObjects\" parameter is false, this parameter will be ignored.\r\n * @returns {number} Returns a number representing the percentage of the loading progress for the audio file cache (from 0 to 100, being 100 a complete loading progress). The way to calculate it internally may differ from one audio API to another and it is not totally reliable.\r\n * @todo Although it would be more accurate, it does not use the {@link CB_AudioFile#getProgress} method internally because the {@link CB_AudioFile} objects are not added to the {@link CB_AudioFileCache#audioFiles} property until they are loaded. It would be nice to code a way to be able to use it (perhaps a property where the {@link CB_AudioFile} objects loading are kept temporarily).\r\n */","meta":{"range":[168752,171002],"filename":"CB_AudioFileCache.js","lineno":2773,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100011777","name":"CB_AudioFileCache.prototype.getProgress","type":"FunctionExpression","paramnames":["countLoadedObjects","alsoUncheckedAndCheckingObjects"]},"vars":{"objectsLoaded":"CB_AudioFileCache#getProgress~objectsLoaded","audioFilesLength":"CB_AudioFileCache#getProgress~audioFilesLength","objectsReallyLoaded":"CB_AudioFileCache#getProgress~objectsReallyLoaded","x":"CB_AudioFileCache#getProgress~x","objectsNeeded":"CB_AudioFileCache#getProgress~objectsNeeded","progress":"CB_AudioFileCache#getProgress~progress"}},"description":"<p>Returns a number representing the percentage of the loading progress for the audio file cache (from 0 to 100, being 100 a complete loading progress). The way to calculate it internally may differ from one audio API to another and it is not totally reliable.</p>","kind":"function","params":[{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If set to true, it will count the {@link CB_AudioFile} objects whose {@link CB_AudioFile#getStatus} method returns &quot;LOADED&quot; (the value of the {@link CB_AudioFile#LOADED} property), instead of just using the array's &quot;length&quot; of the {@link CB_AudioFileCache#audioFiles} property.</p>","name":"countLoadedObjects"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If set to true and the &quot;countLoadedObjects&quot; parameter is also true, it will also count the {@link CB_AudioFile} objects whose {@link CB_AudioFile#getStatus} method returns &quot;UNCHECKED&quot; (the value of the {@link CB_AudioFile#UNCHECKED} property) or &quot;CHECKING&quot; (the value of the {@link CB_AudioFile#CHECKING} property). If the &quot;countLoadedObjects&quot; parameter is false, this parameter will be ignored.</p>","name":"alsoUncheckedAndCheckingObjects"}],"returns":[{"type":{"names":["number"]},"description":"<p>Returns a number representing the percentage of the loading progress for the audio file cache (from 0 to 100, being 100 a complete loading progress). The way to calculate it internally may differ from one audio API to another and it is not totally reliable.</p>"}],"todo":["Although it would be more accurate, it does not use the {@link CB_AudioFile#getProgress} method internally because the {@link CB_AudioFile} objects are not added to the {@link CB_AudioFileCache#audioFiles} property until they are loaded. It would be nice to code a way to be able to use it (perhaps a property where the {@link CB_AudioFile} objects loading are kept temporarily)."],"name":"getProgress","longname":"CB_AudioFileCache#getProgress","memberof":"CB_AudioFileCache","scope":"instance"},{"comment":"/**\r\n * Gets the current status of the audio file cache.\r\n * @function\r\n * @returns {number} Returns the current status of the audio file cache. It is a number, which should match the value of the {@link CB_AudioFileCache.UNLOADED} (still unloaded), {@link CB_AudioFileCache.LOADING} (loading), {@link CB_AudioFileCache.UNCHECKED} (not checked by calling the {@link CB_AudioFileCache#checkPlayingAll} method yet), {@link CB_AudioFileCache.CHECKING} (being checked by the {@link CB_AudioFileCache#checkPlayingAll} method), {@link CB_AudioFileCache.LOADED} (loaded), {@link CB_AudioFileCache.FAILED} (failed loading or failed to play or by any other reason) or {@link CB_AudioFileCache.ABORTED} (aborted because it was destroyed with the \"destructor\" method) property.\r\n */","meta":{"range":[171783,171861],"filename":"CB_AudioFileCache.js","lineno":2827,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100011951","name":"CB_AudioFileCache.prototype.getStatus","type":"FunctionExpression","paramnames":[]}},"description":"<p>Gets the current status of the audio file cache.</p>","kind":"function","returns":[{"type":{"names":["number"]},"description":"<p>Returns the current status of the audio file cache. It is a number, which should match the value of the {@link CB_AudioFileCache.UNLOADED} (still unloaded), {@link CB_AudioFileCache.LOADING} (loading), {@link CB_AudioFileCache.UNCHECKED} (not checked by calling the {@link CB_AudioFileCache#checkPlayingAll} method yet), {@link CB_AudioFileCache.CHECKING} (being checked by the {@link CB_AudioFileCache#checkPlayingAll} method), {@link CB_AudioFileCache.LOADED} (loaded), {@link CB_AudioFileCache.FAILED} (failed loading or failed to play or by any other reason) or {@link CB_AudioFileCache.ABORTED} (aborted because it was destroyed with the &quot;destructor&quot; method) property.</p>"}],"name":"getStatus","longname":"CB_AudioFileCache#getStatus","memberof":"CB_AudioFileCache","scope":"instance"},{"comment":"/**\r\n * Gets the current status of the audio file cache, as a string.\r\n * @function\r\n * @returns {string} Returns the current status of the audio file cache, as a string. Possible return values are \"UNLOADED\", \"LOADING\", \"UNCHECKED\", \"CHECKING\", \"LOADED\", \"FAILED\", \"ABORTED\" or \"UNKNOWN (UNKNOWN_STATUS)\" (where \"UNKNOWN_STATUS\" will be a value from the {@link CB_AudioFileCache#status} property not recognized as any possible status).\r\n */","meta":{"range":[172312,172630],"filename":"CB_AudioFileCache.js","lineno":2838,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100011964","name":"CB_AudioFileCache.prototype.getStatusString","type":"FunctionExpression","paramnames":[]},"vars":{"status":"CB_AudioFileCache#getStatusString~status","statuses":"CB_AudioFileCache#getStatusString~statuses"}},"description":"<p>Gets the current status of the audio file cache, as a string.</p>","kind":"function","returns":[{"type":{"names":["string"]},"description":"<p>Returns the current status of the audio file cache, as a string. Possible return values are &quot;UNLOADED&quot;, &quot;LOADING&quot;, &quot;UNCHECKED&quot;, &quot;CHECKING&quot;, &quot;LOADED&quot;, &quot;FAILED&quot;, &quot;ABORTED&quot; or &quot;UNKNOWN (UNKNOWN_STATUS)&quot; (where &quot;UNKNOWN_STATUS&quot; will be a value from the {@link CB_AudioFileCache#status} property not recognized as any possible status).</p>"}],"name":"getStatusString","longname":"CB_AudioFileCache#getStatusString","memberof":"CB_AudioFileCache","scope":"instance"},{"comment":"/**\r\n * Calls the error function which should be set in the {@link CB_AudioFileCache#onError} property (if any), being \"this\" the {@link CB_AudioFileCache} object itself. Internal usage only recommended.\r\n * @function\r\n * @param {string} [message] - The message describing the error that will be sent to the set {@link CB_AudioFileCache#onError} function (if any) as the first and unique parameter.\r\n * @param {boolean} [avoidFailing=false] - If set to true, it will not set the {@link CB_AudioFileCache#status} property to \"FAILED\" (the value of the {@link CB_AudioFile#FAILED} property).\r\n * @returns {boolean} Returns true if the {@link CB_AudioFileCache#onError} function could be called or false otherwise.\r\n */","meta":{"range":[173358,173614],"filename":"CB_AudioFileCache.js","lineno":2854,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100012010","name":"CB_AudioFileCache.prototype.errorFunction","type":"FunctionExpression","paramnames":["message","avoidFailing"]},"vars":{"this.status":"CB_AudioFileCache#status"}},"description":"<p>Calls the error function which should be set in the {@link CB_AudioFileCache#onError} property (if any), being &quot;this&quot; the {@link CB_AudioFileCache} object itself. Internal usage only recommended.</p>","kind":"function","params":[{"type":{"names":["string"]},"optional":true,"description":"<p>The message describing the error that will be sent to the set {@link CB_AudioFileCache#onError} function (if any) as the first and unique parameter.</p>","name":"message"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If set to true, it will not set the {@link CB_AudioFileCache#status} property to &quot;FAILED&quot; (the value of the {@link CB_AudioFile#FAILED} property).</p>","name":"avoidFailing"}],"returns":[{"type":{"names":["boolean"]},"description":"<p>Returns true if the {@link CB_AudioFileCache#onError} function could be called or false otherwise.</p>"}],"name":"errorFunction","longname":"CB_AudioFileCache#errorFunction","memberof":"CB_AudioFileCache","scope":"instance"},{"comment":"/**\r\n * @file Audio sprites management. Contains the {@link CB_AudioFileSprites} class.\r\n * @author Joan Alba Maldonado <workindalian@gmail.com>\r\n */","meta":{"filename":"CB_AudioFileSprites.js","lineno":1,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{}},"name":"CrossBase/audiovisual/audio/CB_AudioFileSprites.js","kind":"file","description":"<p>Audio sprites management. Contains the {@link CB_AudioFileSprites} class.</p>","preserveName":true,"author":["Joan Alba Maldonado <workindalian@gmail.com>"],"longname":"CrossBase/audiovisual/audio/CB_AudioFileSprites.js","scope":"global"},{"comment":"/**\r\n * An object representing an audio sprite which can contain, optionally, the \"startAt\" and \"stopAt\" properties with a numeric value (representing when the audio sprite starts and when it stops, respectively). If not set, the default \"startAt\" value will be 0 (zero) and the default \"stopAt\" value will be null (which means it will not stop until the end of the audio is reached unless it is paused or stopped before). The \"fake\" property should never be used as it is used internally to distinguish real sprites from fake ones (generated and returned by the {@link CB_AudioFileSprites#getSprite} method when a requested sprite is not found).\r\n * @example { startAt: 10, stopAt: 20 }\r\n * @memberof CB_AudioFileSprites\r\n * @typedef {Object} CB_AudioFileSprites.SPRITE_OBJECT\r\n * @property {number} [startAt=0] - The time (in milliseconds) of the audio file where the audio sprite starts. If not provided, it will use the value of 0 (zero) which means that it will start from the beginning.\r\n * @property {number} [stopAt={@link CB_AudioFile_API.WAAPI#getDuration}() | {@link CB_AudioFile_API.SM2#getDuration}() | {@link CB_AudioFile_API.ACMP#getDuration}() | {@link CB_AudioFile_API.AAPI#getDuration}()] - The time (in milliseconds) of the audio file where the audio sprite stops. If not provided (not recommended), it will use the whole duration of the file (which means until it reaches its end). NOTE: Due to some possible problems between clients with different audio APIs calculating the duration of an audio file, it is recommended to always set the \"stopAt\" property even when we want it to stop at the end of the audio.\r\n */","meta":{"filename":"CB_AudioFileSprites.js","lineno":7,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{}},"description":"<p>An object representing an audio sprite which can contain, optionally, the &quot;startAt&quot; and &quot;stopAt&quot; properties with a numeric value (representing when the audio sprite starts and when it stops, respectively). If not set, the default &quot;startAt&quot; value will be 0 (zero) and the default &quot;stopAt&quot; value will be null (which means it will not stop until the end of the audio is reached unless it is paused or stopped before). The &quot;fake&quot; property should never be used as it is used internally to distinguish real sprites from fake ones (generated and returned by the {@link CB_AudioFileSprites#getSprite} method when a requested sprite is not found).</p>","examples":["{ startAt: 10, stopAt: 20 }\r "],"memberof":"CB_AudioFileSprites","kind":"typedef","name":"SPRITE_OBJECT","type":{"names":["Object"]},"properties":[{"type":{"names":["number"]},"optional":true,"defaultvalue":0,"description":"<p>The time (in milliseconds) of the audio file where the audio sprite starts. If not provided, it will use the value of 0 (zero) which means that it will start from the beginning.</p>","name":"startAt"},{"type":{"names":["number"]},"optional":true,"defaultvalue":"{@link CB_AudioFile_API.WAAPI#getDuration}() | {@link CB_AudioFile_API.SM2#getDuration}() | {@link CB_AudioFile_API.ACMP#getDuration}() | {@link CB_AudioFile_API.AAPI#getDuration}()","description":"<p>The time (in milliseconds) of the audio file where the audio sprite stops. If not provided (not recommended), it will use the whole duration of the file (which means until it reaches its end). NOTE: Due to some possible problems between clients with different audio APIs calculating the duration of an audio file, it is recommended to always set the &quot;stopAt&quot; property even when we want it to stop at the end of the audio.</p>","name":"stopAt"}],"longname":"CB_AudioFileSprites.SPRITE_OBJECT","scope":"static"},{"comment":"/**\r\n * Object whose property names the identifiers of each sprite (a case-sensitive string) and their value is a {@link CB_AudioFileSprites.SPRITE_OBJECT} object.\r\n * @example\r\n * {\r\n *\t\"whole_audio\" : {},\r\n *\t\"first_sprite\" : { stopAt: 10 },\r\n *\t\"second_sprite\" : { startAt: 10, stopAt: 20 },\r\n *\t\"third_sprite\" : { startAt: 20 },\r\n *\t...\r\n * }\r\n * @memberof CB_AudioFileSprites\r\n * @typedef {Object} CB_AudioFileSprites.SPRITES_OBJECT\r\n * @property {CB_AudioFileSprites.SPRITE_OBJECT} spriteInformation - Being the name of each property the identifier of a sprite (a string which cannot be \"_WITHOUT_SPRITE_ASSOCIATED\" as it is a reserved name), the value will always be a {@link CB_AudioFileSprites.SPRITE_OBJECT} object.\r\n */","meta":{"filename":"CB_AudioFileSprites.js","lineno":17,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{}},"description":"<p>Object whose property names the identifiers of each sprite (a case-sensitive string) and their value is a {@link CB_AudioFileSprites.SPRITE_OBJECT} object.</p>","examples":["{\r\t\"whole_audio\" : {},\r\t\"first_sprite\" : { stopAt: 10 },\r\t\"second_sprite\" : { startAt: 10, stopAt: 20 },\r\t\"third_sprite\" : { startAt: 20 },\r\t...\r}\r "],"memberof":"CB_AudioFileSprites","kind":"typedef","name":"SPRITES_OBJECT","type":{"names":["Object"]},"properties":[{"type":{"names":["CB_AudioFileSprites.SPRITE_OBJECT"]},"description":"<p>Being the name of each property the identifier of a sprite (a string which cannot be &quot;_WITHOUT_SPRITE_ASSOCIATED&quot; as it is a reserved name), the value will always be a {@link CB_AudioFileSprites.SPRITE_OBJECT} object.</p>","name":"spriteInformation"}],"longname":"CB_AudioFileSprites.SPRITES_OBJECT","scope":"static"},{"comment":"/**\r\n * Object with the desired data and options for the audio sprites. It is almost identical to the {@link CB_AudioFileCache.DATA_OBJECT} but adding a \"sprites\" property.\r\n * @memberof CB_AudioFileSprites\r\n * @typedef {Object} CB_AudioFileSprites.DATA_OBJECT\r\n * @property {CB_AudioFileCache.URIS_OBJECT} URIs - Object whose property names audio formats and their value is an array of strings with the URIs (audio file paths or audio data URIs) of the audio files in order of preference. The best audio format for the current client will be tried to be calculated and it will use the first working URI (audio file path or data URI). The more audio formats and URIs provided the better, as it will help to maximize the compatibility with as many clients as possible (as some audio APIs and client just support some formats, or use absolute paths instead of relative ones, etc.). Even with different formats, all provided URIs should belong to the same audio (this means same sound or same music, with same length, etc.). NOTE: Only some clients with some audio APIs will support data URIs. If a valid value is given, this will be added to the {@link CB_AudioFileCache#URIs} property.\r\n * @property {CB_AudioFileSprites.SPRITES_OBJECT} [sprites] Object with the desired sprites. It will be used as the first parameter to call the {@link CB_AudioFileSprites#insertSprites} method internally. It will be added (after being processed) to the {@link CB_AudioFileCache#sprites} property.\r\n * @property {string} [id=\"\"] - Desired identifier for the audio file sprites object. Internal usage only recommended. If a valid value is given, this will be added to the {@link CB_AudioFileSprites#id} property as well as to the {@link CB_AudioFileCache#id} property of the internally-created {@link CB_AudioFileCache} object.\r\n * @property {array} [preferredAPIs={@link CB_Configuration.CrossBase.CB_AudioFileCache_PREFERRED_AUDIO_APIS}] - Array of strings with the preferred audio API or audio APIs, in order of preference. Possible audio APIs are \"WAAPI\" ([HTML5 Web Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API}), \"SM2\" ([SoundManager 2]{@link http://schillmania.com/projects/soundmanager2/}), \"ACMP\" ([Apache Cordova Media Plugin]{@link https://github.com/apache/cordova-plugin-media}) or \"AAPI\" ([HTML5 Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/audio}). It will try to calculate and use the best one for the current client. If a valid value is given, this will be added to the {@link CB_AudioFileCache#preferredAPIs} property.\r\n * @property {array} [preferredFormats={@link CB_Configuration.CrossBase.CB_AudioFileCache_PREFERRED_AUDIO_FORMATS}] - Array of strings with the preferred audio format or audio formats (they can include just the format as 'audio/ogg' or also the codec as for example 'audio/ogg; codecs=\"vorbis\"'), in order of preference. It will try to calculate and use the best one for the current client. If a valid value is given, this will be added to the {@link CB_AudioFileCache#preferredFormats} property.\r\n * @property {integer} [minimumAudioFiles={@link CB_AudioFileCache.minimumAudioFiles_DEFAULT}] - Minimum {@link CB_AudioFile} objects to create internally. It must be an integer being 1 the minimum. If a valid value is given, this will be added to the {@link CB_AudioFileCache#minimumAudioFiles} property.\r\n * @property {integer} [maximumAudioFiles={@link CB_AudioFileCache.maximumAudioFiles_DEFAULT}] - Maximum {@link CB_AudioFile} objects that are to be created internally. If it is set to null, there will not be a maximum (it will be unlimited). If an integer is provided, it must be the same number or greater than the value set in the {@link CB_AudioFileCache#minimumAudioFiles} property (also provided by the \"minimumAudioFiles\" of this object), allowing 1 minimum. If a valid value is given, this will be added to the {@link CB_AudioFileCache#maximumAudioFiles} property.\r\n * @property {integer} [minimumAudioFilesFree=parseInt({@link CB_AudioFileCache#minimumAudioFiles} * 0.25 + 0.5)] - New {@link CB_AudioFile} objects will be created internally when the number of free {@link CB_AudioFile} objects reaches this limit. If provided, it must be an integer being 0 (zero) the minimum. It will end using a 25% of the {@link CB_AudioFileCache#minimumAudioFiles} by default, rounded to ceil, allowing 0 (zero) minimum. If a valid value is given, this will be added to the {@link CB_AudioFileCache#minimumAudioFilesFree} property.\r\n * @property {integer} [newAudioFilesWhenNeeded=Math.min(parseInt({@link CB_AudioFileCache#minimumAudioFiles} * 0.1 + 0.5), 1)] - Number of new {@link CB_AudioFile} objects to create internally when the minimum limit of free {@link CB_AudioFile} objects ({@link CB_AudioFileCache#minimumAudioFilesFree}) is reached. If provided, it must be an integer being 0 (zero) the minimum. It will end using a 10% of the {@link CB_AudioFileCache#minimumAudioFiles} by default, rounded to ceil, allowing 1 minimum. If a valid value is given, this will be added to the {@link CB_AudioFileCache#newAudioFilesWhenNeeded} property.\r\n * @property {integer} [retries={@link CB_AudioFileCache.retries_DEFAULT}] - Number of retries to try to load a {@link CB_AudioFile} object internally before trying to load the next possible one internally (if any). It must be an integer being 0 the minimum. If a valid value is given, this will be added to the {@link CB_AudioFileCache#retries} property.\r\n * @property {boolean} [checkManually={@link CB_AudioFileCache.checkManually_DEFAULT}] - Tells whether the {@link CB_AudioFile} objects must be checked automatically or not (manually) by default. If a valid value is given, this will be added to the {@link CB_AudioFileCache#checkManually} property.\r\n * @property {boolean} [checkManuallyOnNeededCreated={@link CB_AudioFileCache.checkManuallyOnNeededCreated_DEFAULT}] - Tells whether the {@link CB_AudioFile} objects must be checked automatically or not (manually) when creates a new {@link CB_AudioFile} object needed. If a valid value is given, this will be added to the {@link CB_AudioFileCache#checkManuallyOnNeededCreated} property.\r\n * @property {boolean} [checkManuallyOnPlayingFailed={@link CB_AudioFileCache.checkManuallyOnPlayingFailed_DEFAULT}] - Tells whether the {@link CB_AudioFile} objects must be checked automatically or not (manually) when playing one has failed and tries to reload it. If a valid value is given, this will be added to the {@link CB_AudioFileCache#checkManuallyOnPlayingFailed} property.\r\n * @property {boolean} [checkManuallyOnCheckingFailed={@link CB_AudioFileCache.checkManuallyOnCheckingFailed_DEFAULT}] - Tells whether the {@link CB_AudioFile} objects must be checked automatically or not (manually) when checking one has failed and tries to reload it. If a valid value is given, this will be added to the {@link CB_AudioFileCache#checkManuallyOnCheckingFailed} property.\r\n * @property {function} [onLoad] - Desired function to be called once the cache has been loaded. The first and unique parameter will be an integer with the {@link CB_AudioFile} objects that still need to be checked, if any, being \"this\" the current {@link CB_AudioFileCache} object. If a valid value is given, this will be added to the {@link CB_AudioFileCache#onLoad} property.\r\n * @property {function} [onError] - Desired function to be called when any kind of error happens. The first and unique parameter will be a string with the error description (if it could be determined), being \"this\" the current {@link CB_AudioFileCache} object. If a valid value is given, this will be added to the {@link CB_AudioFileCache#onError} property.\r\n * @property {boolean} [disableAutoLoad=false] - If set to true, it will not create automatically the {@link CB_AudioFile} objects by calling the {@link CB_AudioFileCache#createAudioFiles} method internally. Internal usage only recommended.\r\n */","meta":{"filename":"CB_AudioFileSprites.js","lineno":33,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{}},"description":"<p>Object with the desired data and options for the audio sprites. It is almost identical to the {@link CB_AudioFileCache.DATA_OBJECT} but adding a &quot;sprites&quot; property.</p>","memberof":"CB_AudioFileSprites","kind":"typedef","name":"DATA_OBJECT","type":{"names":["Object"]},"properties":[{"type":{"names":["CB_AudioFileCache.URIS_OBJECT"]},"description":"<p>Object whose property names audio formats and their value is an array of strings with the URIs (audio file paths or audio data URIs) of the audio files in order of preference. The best audio format for the current client will be tried to be calculated and it will use the first working URI (audio file path or data URI). The more audio formats and URIs provided the better, as it will help to maximize the compatibility with as many clients as possible (as some audio APIs and client just support some formats, or use absolute paths instead of relative ones, etc.). Even with different formats, all provided URIs should belong to the same audio (this means same sound or same music, with same length, etc.). NOTE: Only some clients with some audio APIs will support data URIs. If a valid value is given, this will be added to the {@link CB_AudioFileCache#URIs} property.</p>","name":"URIs"},{"type":{"names":["CB_AudioFileSprites.SPRITES_OBJECT"]},"optional":true,"description":"<p>Object with the desired sprites. It will be used as the first parameter to call the {@link CB_AudioFileSprites#insertSprites} method internally. It will be added (after being processed) to the {@link CB_AudioFileCache#sprites} property.</p>","name":"sprites"},{"type":{"names":["string"]},"optional":true,"defaultvalue":"\"\"","description":"<p>Desired identifier for the audio file sprites object. Internal usage only recommended. If a valid value is given, this will be added to the {@link CB_AudioFileSprites#id} property as well as to the {@link CB_AudioFileCache#id} property of the internally-created {@link CB_AudioFileCache} object.</p>","name":"id"},{"type":{"names":["array"]},"optional":true,"defaultvalue":"{@link CB_Configuration.CrossBase.CB_AudioFileCache_PREFERRED_AUDIO_APIS}","description":"<p>Array of strings with the preferred audio API or audio APIs, in order of preference. Possible audio APIs are &quot;WAAPI&quot; ([HTML5 Web Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API}), &quot;SM2&quot; ([SoundManager 2]{@link http://schillmania.com/projects/soundmanager2/}), &quot;ACMP&quot; ([Apache Cordova Media Plugin]{@link https://github.com/apache/cordova-plugin-media}) or &quot;AAPI&quot; ([HTML5 Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/audio}). It will try to calculate and use the best one for the current client. If a valid value is given, this will be added to the {@link CB_AudioFileCache#preferredAPIs} property.</p>","name":"preferredAPIs"},{"type":{"names":["array"]},"optional":true,"defaultvalue":"{@link CB_Configuration.CrossBase.CB_AudioFileCache_PREFERRED_AUDIO_FORMATS}","description":"<p>Array of strings with the preferred audio format or audio formats (they can include just the format as 'audio/ogg' or also the codec as for example 'audio/ogg; codecs=&quot;vorbis&quot;'), in order of preference. It will try to calculate and use the best one for the current client. If a valid value is given, this will be added to the {@link CB_AudioFileCache#preferredFormats} property.</p>","name":"preferredFormats"},{"type":{"names":["integer"]},"optional":true,"defaultvalue":"{@link CB_AudioFileCache.minimumAudioFiles_DEFAULT}","description":"<p>Minimum {@link CB_AudioFile} objects to create internally. It must be an integer being 1 the minimum. If a valid value is given, this will be added to the {@link CB_AudioFileCache#minimumAudioFiles} property.</p>","name":"minimumAudioFiles"},{"type":{"names":["integer"]},"optional":true,"defaultvalue":"{@link CB_AudioFileCache.maximumAudioFiles_DEFAULT}","description":"<p>Maximum {@link CB_AudioFile} objects that are to be created internally. If it is set to null, there will not be a maximum (it will be unlimited). If an integer is provided, it must be the same number or greater than the value set in the {@link CB_AudioFileCache#minimumAudioFiles} property (also provided by the &quot;minimumAudioFiles&quot; of this object), allowing 1 minimum. If a valid value is given, this will be added to the {@link CB_AudioFileCache#maximumAudioFiles} property.</p>","name":"maximumAudioFiles"},{"type":{"names":["integer"]},"optional":true,"defaultvalue":"parseInt({@link CB_AudioFileCache#minimumAudioFiles} * 0.25 + 0.5)","description":"<p>New {@link CB_AudioFile} objects will be created internally when the number of free {@link CB_AudioFile} objects reaches this limit. If provided, it must be an integer being 0 (zero) the minimum. It will end using a 25% of the {@link CB_AudioFileCache#minimumAudioFiles} by default, rounded to ceil, allowing 0 (zero) minimum. If a valid value is given, this will be added to the {@link CB_AudioFileCache#minimumAudioFilesFree} property.</p>","name":"minimumAudioFilesFree"},{"type":{"names":["integer"]},"optional":true,"defaultvalue":"Math.min(parseInt({@link CB_AudioFileCache#minimumAudioFiles} * 0.1 + 0.5), 1)","description":"<p>Number of new {@link CB_AudioFile} objects to create internally when the minimum limit of free {@link CB_AudioFile} objects ({@link CB_AudioFileCache#minimumAudioFilesFree}) is reached. If provided, it must be an integer being 0 (zero) the minimum. It will end using a 10% of the {@link CB_AudioFileCache#minimumAudioFiles} by default, rounded to ceil, allowing 1 minimum. If a valid value is given, this will be added to the {@link CB_AudioFileCache#newAudioFilesWhenNeeded} property.</p>","name":"newAudioFilesWhenNeeded"},{"type":{"names":["integer"]},"optional":true,"defaultvalue":"{@link CB_AudioFileCache.retries_DEFAULT}","description":"<p>Number of retries to try to load a {@link CB_AudioFile} object internally before trying to load the next possible one internally (if any). It must be an integer being 0 the minimum. If a valid value is given, this will be added to the {@link CB_AudioFileCache#retries} property.</p>","name":"retries"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":"{@link CB_AudioFileCache.checkManually_DEFAULT}","description":"<p>Tells whether the {@link CB_AudioFile} objects must be checked automatically or not (manually) by default. If a valid value is given, this will be added to the {@link CB_AudioFileCache#checkManually} property.</p>","name":"checkManually"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":"{@link CB_AudioFileCache.checkManuallyOnNeededCreated_DEFAULT}","description":"<p>Tells whether the {@link CB_AudioFile} objects must be checked automatically or not (manually) when creates a new {@link CB_AudioFile} object needed. If a valid value is given, this will be added to the {@link CB_AudioFileCache#checkManuallyOnNeededCreated} property.</p>","name":"checkManuallyOnNeededCreated"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":"{@link CB_AudioFileCache.checkManuallyOnPlayingFailed_DEFAULT}","description":"<p>Tells whether the {@link CB_AudioFile} objects must be checked automatically or not (manually) when playing one has failed and tries to reload it. If a valid value is given, this will be added to the {@link CB_AudioFileCache#checkManuallyOnPlayingFailed} property.</p>","name":"checkManuallyOnPlayingFailed"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":"{@link CB_AudioFileCache.checkManuallyOnCheckingFailed_DEFAULT}","description":"<p>Tells whether the {@link CB_AudioFile} objects must be checked automatically or not (manually) when checking one has failed and tries to reload it. If a valid value is given, this will be added to the {@link CB_AudioFileCache#checkManuallyOnCheckingFailed} property.</p>","name":"checkManuallyOnCheckingFailed"},{"type":{"names":["function"]},"optional":true,"description":"<p>Desired function to be called once the cache has been loaded. The first and unique parameter will be an integer with the {@link CB_AudioFile} objects that still need to be checked, if any, being &quot;this&quot; the current {@link CB_AudioFileCache} object. If a valid value is given, this will be added to the {@link CB_AudioFileCache#onLoad} property.</p>","name":"onLoad"},{"type":{"names":["function"]},"optional":true,"description":"<p>Desired function to be called when any kind of error happens. The first and unique parameter will be a string with the error description (if it could be determined), being &quot;this&quot; the current {@link CB_AudioFileCache} object. If a valid value is given, this will be added to the {@link CB_AudioFileCache#onError} property.</p>","name":"onError"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If set to true, it will not create automatically the {@link CB_AudioFile} objects by calling the {@link CB_AudioFileCache#createAudioFiles} method internally. Internal usage only recommended.</p>","name":"disableAutoLoad"}],"longname":"CB_AudioFileSprites.DATA_OBJECT","scope":"static"},{"comment":"/**\r\n * The constructor is recommended to be called through a user-driven event (as onClick, onTouch, etc.), as some clients may need this at least the first time in order to be able to play the audio.\r\n * @class\r\n * @classdesc Class to manage audio sprites of a {@link CB_AudioFileCache} object (used internally).\r\n * @param {CB_AudioFileSprites.DATA_OBJECT} [dataObject] - Object with the desired data and options for the audio sprites. Although it can contain a \"sprites\" property, it will also be used as the first and unique parameter when calling the constructor of the {@link CB_AudioFileCache} object internally.\r\n * @returns {CB_AudioFileSprites} Returns a new {@link CB_AudioFileSprites} object.\r\n * @todo Do not allow to create one object with an \"id\" which has already been used (unless the value is undefined, null...).\r\n * @todo Think about using wrapper to replace \"this\" in callbacks (callbackOk, callbackError) to point to the {@link CB_AudioFileSprites} object itself.\r\n * @todo Method getCopy and static method filterProperties (similar to the ones from {@link CB_GraphicSprites} and {@link CB_GraphicSpritesScene}).\r\n */","meta":{"range":[11663,16452],"filename":"CB_AudioFileSprites.js","lineno":67,"columnno":4,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100012056","name":"CB_AudioFileSprites","type":"FunctionExpression"},"vars":{"this.id":"CB_AudioFileSprites#id","this.sprites":"CB_AudioFileSprites#sprites","this.spriteSoundInstances":"CB_AudioFileSprites#spriteSoundInstances","CB_AudioFileSprites._audioFileCachePrototype":"CB_AudioFileSprites._audioFileCachePrototype","":null,"this.audioFileCache":"CB_AudioFileSprites#audioFileCache"}},"description":"<p>The constructor is recommended to be called through a user-driven event (as onClick, onTouch, etc.), as some clients may need this at least the first time in order to be able to play the audio.</p>","kind":"class","classdesc":"<p>Class to manage audio sprites of a {@link CB_AudioFileCache} object (used internally).</p>","params":[{"type":{"names":["CB_AudioFileSprites.DATA_OBJECT"]},"optional":true,"description":"<p>Object with the desired data and options for the audio sprites. Although it can contain a &quot;sprites&quot; property, it will also be used as the first and unique parameter when calling the constructor of the {@link CB_AudioFileCache} object internally.</p>","name":"dataObject"}],"returns":[{"type":{"names":["CB_AudioFileSprites"]},"description":"<p>Returns a new {@link CB_AudioFileSprites} object.</p>"}],"todo":["Do not allow to create one object with an \"id\" which has already been used (unless the value is undefined, null...).","Think about using wrapper to replace \"this\" in callbacks (callbackOk, callbackError) to point to the {@link CB_AudioFileSprites} object itself.","Method getCopy and static method filterProperties (similar to the ones from {@link CB_GraphicSprites} and {@link CB_GraphicSpritesScene})."],"name":"CB_AudioFileSprites","longname":"CB_AudioFileSprites","scope":"global"},{"comment":"/**\r\n * Destroys the audio file sprites object (removing all sprites, etc.), including the internal audio file cache object, and frees memory. By default, unless the \"preventAbortedStatus\" is set to true, sets the current status of the {@link CB_AudioFileCache} object as ABORTED ({@link CB_AudioFileCache.ABORTED} value).\r\n * @function\r\n * @param {boolean} [stopSounds=false] - Used as the \"stopSounds\" parameter when calling internally the {@link CB_AudioFileCache#destructor} method of the {@link CB_AudioFileCache} object.\r\n * @param {boolean} [preventAbortedStatus=false] - If set to true (not recommended), it will not assign the status of \"ABORTED\" (it will not assign the value of {@link CB_AudioFileCache.ABORTED} to the {@link CB_AudioFileCache#status} property).\r\n */","meta":{"range":[18180,18590],"filename":"CB_AudioFileSprites.js","lineno":238,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100012440","name":"CB_AudioFileSprites.prototype.destructor","type":"FunctionExpression","paramnames":["stopSounds","preventAbortedStatus"]},"vars":{"this.sprites":"CB_AudioFileSprites#sprites","this.spriteSoundInstances":"CB_AudioFileSprites#spriteSoundInstances","this.audioFileCache":"CB_AudioFileSprites#audioFileCache"}},"description":"<p>Destroys the audio file sprites object (removing all sprites, etc.), including the internal audio file cache object, and frees memory. By default, unless the &quot;preventAbortedStatus&quot; is set to true, sets the current status of the {@link CB_AudioFileCache} object as ABORTED ({@link CB_AudioFileCache.ABORTED} value).</p>","kind":"function","params":[{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>Used as the &quot;stopSounds&quot; parameter when calling internally the {@link CB_AudioFileCache#destructor} method of the {@link CB_AudioFileCache} object.</p>","name":"stopSounds"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If set to true (not recommended), it will not assign the status of &quot;ABORTED&quot; (it will not assign the value of {@link CB_AudioFileCache.ABORTED} to the {@link CB_AudioFileCache#status} property).</p>","name":"preventAbortedStatus"}],"name":"destructor","longname":"CB_AudioFileSprites#destructor","memberof":"CB_AudioFileSprites","scope":"instance"},{"comment":"/**\r\n * Loads the audio file sprites with the desired data given. This method is called by the constructor automatically. Recommended to be called through a user-driven event (as onClick, onTouch, etc.), as some clients may need this at least the first time in order to be able to play the audio.\r\n * @function\r\n * @param {CB_AudioFileSprites.DATA_OBJECT} dataObject - Object with the desired data and options for the audio file sprites.\r\n * @returns {CB_AudioFileSprites|null} If a \"dataObject\" is given, it returns the current {@link CB_AudioFileSprites} object. Otherwise, it returns null.\r\n */","meta":{"range":[19198,19905],"filename":"CB_AudioFileSprites.js","lineno":256,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100012482","name":"CB_AudioFileSprites.prototype.load","type":"FunctionExpression","paramnames":["dataObject"]},"vars":{"dataObject.id":"dataObject.id","this.id":"CB_AudioFileSprites#id","this.audioFileCache":"CB_AudioFileSprites#audioFileCache"}},"description":"<p>Loads the audio file sprites with the desired data given. This method is called by the constructor automatically. Recommended to be called through a user-driven event (as onClick, onTouch, etc.), as some clients may need this at least the first time in order to be able to play the audio.</p>","kind":"function","params":[{"type":{"names":["CB_AudioFileSprites.DATA_OBJECT"]},"description":"<p>Object with the desired data and options for the audio file sprites.</p>","name":"dataObject"}],"returns":[{"type":{"names":["CB_AudioFileSprites","null"]},"description":"<p>If a &quot;dataObject&quot; is given, it returns the current {@link CB_AudioFileSprites} object. Otherwise, it returns null.</p>"}],"name":"load","longname":"CB_AudioFileSprites#load","memberof":"CB_AudioFileSprites","scope":"instance"},{"comment":"/**\r\n * Alias for {@link CB_AudioFileSprites#removeSprites}.\r\n * @function CB_AudioFileSprites#removeSpritesAll\r\n * @see {@link CB_AudioFileSprites#removeSprites}\r\n */","meta":{"filename":"CB_AudioFileSprites.js","lineno":283,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{}},"description":"<p>Alias for {@link CB_AudioFileSprites#removeSprites}.</p>","kind":"function","name":"removeSpritesAll","see":["{@link CB_AudioFileSprites#removeSprites}"],"memberof":"CB_AudioFileSprites","longname":"CB_AudioFileSprites#removeSpritesAll","scope":"instance"},{"comment":"/**\r\n * Removes all the sprites by clearing the {@link CB_AudioFileSprites#sprites} property.\r\n * @function\r\n */","meta":{"range":[20198,20330],"filename":"CB_AudioFileSprites.js","lineno":292,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100012573","name":"CB_AudioFileSprites.prototype.removeSprites","type":"AssignmentExpression","value":"CB_AudioFileSprites.prototype.removeSpritesAll","paramnames":[]}},"description":"<p>Removes all the sprites by clearing the {@link CB_AudioFileSprites#sprites} property.</p>","kind":"function","name":"removeSprites","longname":"CB_AudioFileSprites#removeSprites","memberof":"CB_AudioFileSprites","scope":"instance"},{"comment":"/**\r\n * Inserts the given sprites. It will keep the existing ones. If a sprite identifier already existed and it is given again (not recommended), it will be replaced by the new one (but keeping its current sound instances, if any).\r\n * @function\r\n * @param {CB_AudioFileSprites.SPRITES_OBJECT} sprites - Object with the desired sprites.\r\n * @returns {integer} Returns the number of sprites inserted.\r\n */","meta":{"range":[20746,21062],"filename":"CB_AudioFileSprites.js","lineno":304,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100012594","name":"CB_AudioFileSprites.prototype.insertSprites","type":"FunctionExpression","paramnames":["sprites"]},"vars":{"inserted":"CB_AudioFileSprites#insertSprites~inserted","spriteId":"CB_AudioFileSprites#insertSprites~spriteId"}},"description":"<p>Inserts the given sprites. It will keep the existing ones. If a sprite identifier already existed and it is given again (not recommended), it will be replaced by the new one (but keeping its current sound instances, if any).</p>","kind":"function","params":[{"type":{"names":["CB_AudioFileSprites.SPRITES_OBJECT"]},"description":"<p>Object with the desired sprites.</p>","name":"sprites"}],"returns":[{"type":{"names":["integer"]},"description":"<p>Returns the number of sprites inserted.</p>"}],"name":"insertSprites","longname":"CB_AudioFileSprites#insertSprites","memberof":"CB_AudioFileSprites","scope":"instance"},{"comment":"/**\r\n * Inserts the given sprite. It will keep the existing ones. If a sprite identifier already existed and it is given again (not recommended), it will be replaced by the new one (but keeping its current sound instances, if any).\r\n * @function\r\n * @param {CB_AudioFileSprites.SPRITE_OBJECT} sprite - Object with the desired sprite.\r\n * @param {string} spriteId - The identifier for the sprite.\r\n * @returns {boolean} Returns true if the sprite has been inserted or false otherwise.\r\n */","meta":{"range":[21562,22152],"filename":"CB_AudioFileSprites.js","lineno":326,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100012639","name":"CB_AudioFileSprites.prototype.insertSprite","type":"FunctionExpression","paramnames":["sprite","spriteId"]},"vars":{"this.sprites[undefined]":"CB_AudioFileSprites#sprites[undefined]","this.spriteSoundInstances[undefined]":"CB_AudioFileSprites#spriteSoundInstances[undefined]"}},"description":"<p>Inserts the given sprite. It will keep the existing ones. If a sprite identifier already existed and it is given again (not recommended), it will be replaced by the new one (but keeping its current sound instances, if any).</p>","kind":"function","params":[{"type":{"names":["CB_AudioFileSprites.SPRITE_OBJECT"]},"description":"<p>Object with the desired sprite.</p>","name":"sprite"},{"type":{"names":["string"]},"description":"<p>The identifier for the sprite.</p>","name":"spriteId"}],"returns":[{"type":{"names":["boolean"]},"description":"<p>Returns true if the sprite has been inserted or false otherwise.</p>"}],"name":"insertSprite","longname":"CB_AudioFileSprites#insertSprite","memberof":"CB_AudioFileSprites","scope":"instance"},{"comment":"/**\r\n * Sets when a sprite begins (stored in its \"startAt\" property), by sprite identifier.\r\n * @function\r\n * @param {string} spriteId - The identifier for the sprite.\r\n * @param {number} startAt - The time (in milliseconds) of the audio file where the audio sprite starts.\r\n * @returns {boolean} Returns true if the sprite has been modified or false otherwise.\r\n */","meta":{"range":[22530,22988],"filename":"CB_AudioFileSprites.js","lineno":351,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100012732","name":"CB_AudioFileSprites.prototype.setStartAtSprite","type":"FunctionExpression","paramnames":["spriteId","startAt"]},"vars":{"this.sprites[undefined].startAt":"CB_AudioFileSprites#sprites[undefined].startAt"}},"description":"<p>Sets when a sprite begins (stored in its &quot;startAt&quot; property), by sprite identifier.</p>","kind":"function","params":[{"type":{"names":["string"]},"description":"<p>The identifier for the sprite.</p>","name":"spriteId"},{"type":{"names":["number"]},"description":"<p>The time (in milliseconds) of the audio file where the audio sprite starts.</p>","name":"startAt"}],"returns":[{"type":{"names":["boolean"]},"description":"<p>Returns true if the sprite has been modified or false otherwise.</p>"}],"name":"setStartAtSprite","longname":"CB_AudioFileSprites#setStartAtSprite","memberof":"CB_AudioFileSprites","scope":"instance"},{"comment":"/**\r\n * Sets when a sprite ends (stored in its \"stopAt\" property), by sprite identifier.\r\n * @function\r\n * @param {string} spriteId - The identifier for the sprite.\r\n * @param {number} stopAt - The time (in milliseconds) of the audio file where the audio sprite ends.\r\n * @returns {boolean} Returns true if the sprite has been modified or false otherwise.\r\n */","meta":{"range":[23360,23838],"filename":"CB_AudioFileSprites.js","lineno":373,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100012816","name":"CB_AudioFileSprites.prototype.setStopAtSprite","type":"FunctionExpression","paramnames":["spriteId","stopAt"]},"vars":{"this.sprites[undefined].stopAt":"CB_AudioFileSprites#sprites[undefined].stopAt"}},"description":"<p>Sets when a sprite ends (stored in its &quot;stopAt&quot; property), by sprite identifier.</p>","kind":"function","params":[{"type":{"names":["string"]},"description":"<p>The identifier for the sprite.</p>","name":"spriteId"},{"type":{"names":["number"]},"description":"<p>The time (in milliseconds) of the audio file where the audio sprite ends.</p>","name":"stopAt"}],"returns":[{"type":{"names":["boolean"]},"description":"<p>Returns true if the sprite has been modified or false otherwise.</p>"}],"name":"setStopAtSprite","longname":"CB_AudioFileSprites#setStopAtSprite","memberof":"CB_AudioFileSprites","scope":"instance"},{"comment":"/**\r\n * Removes a sprite by its ID.\r\n * @function\r\n * @param {string} spriteId - The identifier for the sprite.\r\n * @returns {boolean} Returns true if the sprite has been deleted or false otherwise.\r\n */","meta":{"range":[24052,24576],"filename":"CB_AudioFileSprites.js","lineno":394,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100012906","name":"CB_AudioFileSprites.prototype.removeSprite","type":"FunctionExpression","paramnames":["spriteId"]},"vars":{"this.sprites[undefined]":"CB_AudioFileSprites#sprites[undefined]","sprites":"CB_AudioFileSprites#removeSprite~sprites","deleted":"CB_AudioFileSprites#removeSprite~deleted","sprites[undefined]":"CB_AudioFileSprites#removeSprite~sprites.undefined]","this.sprites":"CB_AudioFileSprites#sprites"}},"description":"<p>Removes a sprite by its ID.</p>","kind":"function","params":[{"type":{"names":["string"]},"description":"<p>The identifier for the sprite.</p>","name":"spriteId"}],"returns":[{"type":{"names":["boolean"]},"description":"<p>Returns true if the sprite has been deleted or false otherwise.</p>"}],"name":"removeSprite","longname":"CB_AudioFileSprites#removeSprite","memberof":"CB_AudioFileSprites","scope":"instance"},{"comment":"/**\r\n * Returns a sprite by its ID.\r\n * @function\r\n * @param {string} spriteId - The identifier for the sprite.\r\n * @returns {CB_AudioFileSprites.SPRITE_OBJECT} Returns the desired sprite or a fake object if it was not found. The fake object will be this one: { \"startAt\" : 0, \"stopAt\" : null, \"fake\" : true }.\r\n */","meta":{"range":[24902,25124],"filename":"CB_AudioFileSprites.js","lineno":422,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100012998","name":"CB_AudioFileSprites.prototype.getSprite","type":"FunctionExpression","paramnames":["spriteId"]}},"description":"<p>Returns a sprite by its ID.</p>","kind":"function","params":[{"type":{"names":["string"]},"description":"<p>The identifier for the sprite.</p>","name":"spriteId"}],"returns":[{"type":{"names":["CB_AudioFileSprites.SPRITE_OBJECT"]},"description":"<p>Returns the desired sprite or a fake object if it was not found. The fake object will be this one: { &quot;startAt&quot; : 0, &quot;stopAt&quot; : null, &quot;fake&quot; : true }.</p>"}],"name":"getSprite","longname":"CB_AudioFileSprites#getSprite","memberof":"CB_AudioFileSprites","scope":"instance"},{"comment":"/**\r\n * Returns an object with the sprites (and includes \"_WITHOUT_SPRITE_ASSOCIATED\" if we want to).\r\n * @function\r\n * @param {boolean} [includeWithoutSpriteAssociated=false] - If set to true, the returning object will also contain a property called \"_WITHOUT_SPRITE_ASSOCIATED\" whose value will be an empty object (unless the property existed before in the object stored in the {@link CB_AudioFileSprites#sprites} property and had a value which is not an empty object). If set to false, the returning object will not contain the \"_WITHOUT_SPRITE_ASSOCIATED\" property unless the property existed before in the object stored in the {@link CB_AudioFileSprites#sprites} property.\r\n * @returns {CB_AudioFileSprites.SPRITES_OBJECT} Returns an object with the sprites (and includes \"_WITHOUT_SPRITE_ASSOCIATED\" if we want to).\r\n */","meta":{"range":[25961,26312],"filename":"CB_AudioFileSprites.js","lineno":438,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100013032","name":"CB_AudioFileSprites.prototype.getSprites","type":"FunctionExpression","paramnames":["includeWithoutSpriteAssociated"]},"vars":{"sprites":"CB_AudioFileSprites#getSprites~sprites","sprites[\"_WITHOUT_SPRITE_ASSOCIATED\"]":"CB_AudioFileSprites#getSprites~sprites.\"_WITHOUT_SPRITE_ASSOCIATED\"]","spriteId":"CB_AudioFileSprites#getSprites~spriteId","sprites[undefined]":"CB_AudioFileSprites#getSprites~sprites.undefined]"}},"description":"<p>Returns an object with the sprites (and includes &quot;_WITHOUT_SPRITE_ASSOCIATED&quot; if we want to).</p>","kind":"function","params":[{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If set to true, the returning object will also contain a property called &quot;_WITHOUT_SPRITE_ASSOCIATED&quot; whose value will be an empty object (unless the property existed before in the object stored in the {@link CB_AudioFileSprites#sprites} property and had a value which is not an empty object). If set to false, the returning object will not contain the &quot;_WITHOUT_SPRITE_ASSOCIATED&quot; property unless the property existed before in the object stored in the {@link CB_AudioFileSprites#sprites} property.</p>","name":"includeWithoutSpriteAssociated"}],"returns":[{"type":{"names":["CB_AudioFileSprites.SPRITES_OBJECT"]},"description":"<p>Returns an object with the sprites (and includes &quot;_WITHOUT_SPRITE_ASSOCIATED&quot; if we want to).</p>"}],"name":"getSprites","longname":"CB_AudioFileSprites#getSprites","memberof":"CB_AudioFileSprites","scope":"instance"},{"comment":"/**\r\n * Returns an array of the sound instance identifiers (created by the {@link CB_AudioFileSprites#play} method) used by the given sprite identifier.\r\n * @function\r\n * @param {string} spriteId - The identifier for the sprite.\r\n * @returns {array} Returns a numeric array of the sound instances (created by the {@link CB_AudioFileSprites#play} method) used by the given sprite identifier.\r\n */","meta":{"range":[26718,26939],"filename":"CB_AudioFileSprites.js","lineno":460,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100013081","name":"CB_AudioFileSprites.prototype.getSoundInstancesIdBySpriteId","type":"FunctionExpression","paramnames":["spriteId"]}},"description":"<p>Returns an array of the sound instance identifiers (created by the {@link CB_AudioFileSprites#play} method) used by the given sprite identifier.</p>","kind":"function","params":[{"type":{"names":["string"]},"description":"<p>The identifier for the sprite.</p>","name":"spriteId"}],"returns":[{"type":{"names":["array"]},"description":"<p>Returns a numeric array of the sound instances (created by the {@link CB_AudioFileSprites#play} method) used by the given sprite identifier.</p>"}],"name":"getSoundInstancesIdBySpriteId","longname":"CB_AudioFileSprites#getSoundInstancesIdBySpriteId","memberof":"CB_AudioFileSprites","scope":"instance"},{"comment":"/**\r\n * Returns the sound instances (their ID) used (stored in the {@link CB_AudioFileSprites#spriteSoundInstances} property).\r\n * @function\r\n * @param {boolean} [oneDimension=false] - If set to true, it will return the {@link CB_AudioFileSprites#spriteSoundInstances} property directly (which includes the \"_WITHOUT_SPRITE_ASSOCIATED\" property for sound instances without a sprite associated). Otherwise, if it is set to true, it will return a numeric array whose values are the sound instance IDs.\r\n * @param {boolean} [includeWithoutSpriteAssociated=false] - If set to true, it will also return the sound instance identifiers which are not associated to any sprite. Used as the \"includeWithoutSpriteAssociated\" parameter when calling the {@link CB_AudioFileSprites#getSprites} method internally. Only used when the \"oneDimension\" parameter is set to true.\r\n * @returns {Object|array} Returns the sound instances (their ID) used (stored in the {@link CB_AudioFileSprites#spriteSoundInstances} property). If the \"oneDimension\" parameter is set to false, the property names of the returning object are the sprite identifiers (strings), including one called \"_WITHOUT_SPRITE_ASSOCIATED\" for sound instances without a sprite associated, and their values are an array containing the sound instance IDs. If the \"oneDimension\" parameter is set to true, it will return a numeric array whose values are the sound instance identifiers (if the \"includeWithoutSpriteAssociated\" parameter it set to true, it will also include the sound instances which are not associated to any sprite).\r\n */","meta":{"range":[28531,29231],"filename":"CB_AudioFileSprites.js","lineno":477,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100013109","name":"CB_AudioFileSprites.prototype.getSoundInstancesId","type":"FunctionExpression","paramnames":["oneDimension","includeWithoutSpriteAssociated"]},"vars":{"soundInstances":"CB_AudioFileSprites#getSoundInstancesId~soundInstances","soundInstancesSprite":"CB_AudioFileSprites#getSoundInstancesId~soundInstancesSprite","soundInstancesSpriteLength":"CB_AudioFileSprites#getSoundInstancesId~soundInstancesSpriteLength","y":"CB_AudioFileSprites#getSoundInstancesId~y","x":"CB_AudioFileSprites#getSoundInstancesId~x","sprites":"CB_AudioFileSprites#getSoundInstancesId~sprites","spriteId":"CB_AudioFileSprites#getSoundInstancesId~spriteId","soundInstances[undefined]":"CB_AudioFileSprites#getSoundInstancesId~soundInstances.undefined]"}},"description":"<p>Returns the sound instances (their ID) used (stored in the {@link CB_AudioFileSprites#spriteSoundInstances} property).</p>","kind":"function","params":[{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If set to true, it will return the {@link CB_AudioFileSprites#spriteSoundInstances} property directly (which includes the &quot;_WITHOUT_SPRITE_ASSOCIATED&quot; property for sound instances without a sprite associated). Otherwise, if it is set to true, it will return a numeric array whose values are the sound instance IDs.</p>","name":"oneDimension"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If set to true, it will also return the sound instance identifiers which are not associated to any sprite. Used as the &quot;includeWithoutSpriteAssociated&quot; parameter when calling the {@link CB_AudioFileSprites#getSprites} method internally. Only used when the &quot;oneDimension&quot; parameter is set to true.</p>","name":"includeWithoutSpriteAssociated"}],"returns":[{"type":{"names":["Object","array"]},"description":"<p>Returns the sound instances (their ID) used (stored in the {@link CB_AudioFileSprites#spriteSoundInstances} property). If the &quot;oneDimension&quot; parameter is set to false, the property names of the returning object are the sprite identifiers (strings), including one called &quot;_WITHOUT_SPRITE_ASSOCIATED&quot; for sound instances without a sprite associated, and their values are an array containing the sound instance IDs. If the &quot;oneDimension&quot; parameter is set to true, it will return a numeric array whose values are the sound instance identifiers (if the &quot;includeWithoutSpriteAssociated&quot; parameter it set to true, it will also include the sound instances which are not associated to any sprite).</p>"}],"name":"getSoundInstancesId","longname":"CB_AudioFileSprites#getSoundInstancesId","memberof":"CB_AudioFileSprites","scope":"instance"},{"comment":"/**\r\n * Returns an array of the {@link CB_AudioFile} objects used by the sound instances that belong to a given sprite identifier.\r\n * @function\r\n * @param {string} spriteId - The identifier for the sprite.\r\n * @param {boolean} [avoidCancelled=false] - If set to true, it will not return the {@link CB_AudioFile} objects whose sound instance has been cancelled. Used as the \"avoidCancelled\" parameter when calling the {@link CB_AudioFileSprites#getAudioFileBySoundInstanceId} method internally.\r\n * @returns {array} Returns an array of the {@link CB_AudioFile} objects used by the sound instances that belong to the given sprite identifier.\r\n */","meta":{"range":[29888,30415],"filename":"CB_AudioFileSprites.js","lineno":512,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100013196","name":"CB_AudioFileSprites.prototype.getAudioFilesUsedBySpriteId","type":"FunctionExpression","paramnames":["spriteId","avoidCancelled"]},"vars":{"soundInstances":"CB_AudioFileSprites#getAudioFilesUsedBySpriteId~soundInstances","audioFiles":"CB_AudioFileSprites#getAudioFilesUsedBySpriteId~audioFiles","y":"CB_AudioFileSprites#getAudioFilesUsedBySpriteId~y","soundInstancesLength":"CB_AudioFileSprites#getAudioFilesUsedBySpriteId~soundInstancesLength","currentObject":"CB_AudioFileSprites#getAudioFilesUsedBySpriteId~currentObject","x":"CB_AudioFileSprites#getAudioFilesUsedBySpriteId~x","audioFiles[undefined]":"CB_AudioFileSprites#getAudioFilesUsedBySpriteId~audioFiles.undefined]"}},"description":"<p>Returns an array of the {@link CB_AudioFile} objects used by the sound instances that belong to a given sprite identifier.</p>","kind":"function","params":[{"type":{"names":["string"]},"description":"<p>The identifier for the sprite.</p>","name":"spriteId"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If set to true, it will not return the {@link CB_AudioFile} objects whose sound instance has been cancelled. Used as the &quot;avoidCancelled&quot; parameter when calling the {@link CB_AudioFileSprites#getAudioFileBySoundInstanceId} method internally.</p>","name":"avoidCancelled"}],"returns":[{"type":{"names":["array"]},"description":"<p>Returns an array of the {@link CB_AudioFile} objects used by the sound instances that belong to the given sprite identifier.</p>"}],"name":"getAudioFilesUsedBySpriteId","longname":"CB_AudioFileSprites#getAudioFilesUsedBySpriteId","memberof":"CB_AudioFileSprites","scope":"instance"},{"comment":"/**\r\n * Object returned by the {@link CB_AudioFileSprites#getAudioFilesUsed} method. Each property names will be the sprites identifiers except the \"_WITHOUT_SPRITE_ASSOCIATED\" property for sound instances without a sprite associated (if we wanted to include them).\r\n * @memberof CB_AudioFileSprites\r\n * @typedef {Object} CB_AudioFileSprites.getAudioFilesUsed_OBJECT\r\n * @property {CB_AudioFile} spriteId - Each property name will be a sprite identifier (it can be \"_WITHOUT_SPRITE_ASSOCIATED\" for sound instances without a sprite associated, if we wanted to include them). The value will be a numeric array with the {@link CB_AudioFile} objects used.\r\n */","meta":{"filename":"CB_AudioFileSprites.js","lineno":530,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{}},"description":"<p>Object returned by the {@link CB_AudioFileSprites#getAudioFilesUsed} method. Each property names will be the sprites identifiers except the &quot;_WITHOUT_SPRITE_ASSOCIATED&quot; property for sound instances without a sprite associated (if we wanted to include them).</p>","memberof":"CB_AudioFileSprites","kind":"typedef","name":"getAudioFilesUsed_OBJECT","type":{"names":["Object"]},"properties":[{"type":{"names":["CB_AudioFile"]},"description":"<p>Each property name will be a sprite identifier (it can be &quot;_WITHOUT_SPRITE_ASSOCIATED&quot; for sound instances without a sprite associated, if we wanted to include them). The value will be a numeric array with the {@link CB_AudioFile} objects used.</p>","name":"spriteId"}],"longname":"CB_AudioFileSprites.getAudioFilesUsed_OBJECT","scope":"static"},{"comment":"/**\r\n * Returns the {@link CB_AudioFile} objects used by all the sounds instances currently created.\r\n * @function\r\n * @param {boolean} [oneDimension=false] - If set to false, it will return an object whose property names are the sprite identifiers (including the \"_WITHOUT_SPRITE_ASSOCIATED\" property for sound instances without a sprite associated, if the \"includeWithoutSpriteAssociated\" is set to true) and their value will be a numeric array with the {@link CB_AudioFile} objects used. Otherwise, if set to true, it will return a numeric array with the {@link CB_AudioFile} objects used (if the \"includeWithoutSpriteAssociated\" parameter is set to true, it will also contain the {@link CB_AudioFile} objects whose sound instance ID is not associated to any sprite).\r\n * @param {boolean} [includeWithoutSpriteAssociated=false] - If set to true, it will also return the {@link CB_AudioFile} objects whose sound instance ID is not associated to any sprite. Used as the \"includeWithoutSpriteAssociated\" parameter when calling the {@link CB_AudioFileSprites#getSprites} method internally.\r\n * @param {boolean} [avoidCancelled=false] - If set to true, it will not return the {@link CB_AudioFile} objects whose sound instance has been cancelled. Used as the \"avoidCancelled\" parameter when calling the {@link CB_AudioFileSprites#getAudioFilesUsedBySpriteId} method internally.\r\n * @returns {CB_AudioFileSprites.getAudioFilesUsed_OBJECT|array} Returns the {@link CB_AudioFile} objects used by all the sounds instances currently created. If the \"oneDimension\" parameter is set to false, it will return a {@link CB_AudioFileSprites.getAudioFilesUsed_OBJECT} object whose property names are the sprite identifiers (including the \"_WITHOUT_SPRITE_ASSOCIATED\" property for sound instances without a sprite associated, if the \"includeWithoutSpriteAssociated\" is set to true) and their value will be a numeric array with the {@link CB_AudioFile} objects used. Otherwise, if the \"oneDimension\" parameter set to true, it will return a numeric array with the {@link CB_AudioFile} objects used (if the \"includeWithoutSpriteAssociated\" parameter is set to true, it will also contain the {@link CB_AudioFile} objects whose sound instance ID is not associated to any sprite).\r\n */","meta":{"range":[33354,34167],"filename":"CB_AudioFileSprites.js","lineno":545,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100013269","name":"CB_AudioFileSprites.prototype.getAudioFilesUsed","type":"FunctionExpression","paramnames":["oneDimension","includeWithoutSpriteAssociated","avoidCancelled"]},"vars":{"audioFiles":"CB_AudioFileSprites#getAudioFilesUsed~audioFiles","sprites":"CB_AudioFileSprites#getAudioFilesUsed~sprites","spriteId":"CB_AudioFileSprites#getAudioFilesUsed~spriteId","audioFiles[undefined]":"CB_AudioFileSprites#getAudioFilesUsed~audioFiles.undefined]","audioFilesSprite":"CB_AudioFileSprites#getAudioFilesUsed~audioFilesSprite","audioFilesSpriteLength":"CB_AudioFileSprites#getAudioFilesUsed~audioFilesSpriteLength","y":"CB_AudioFileSprites#getAudioFilesUsed~y","x":"CB_AudioFileSprites#getAudioFilesUsed~x"}},"description":"<p>Returns the {@link CB_AudioFile} objects used by all the sounds instances currently created.</p>","kind":"function","params":[{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If set to false, it will return an object whose property names are the sprite identifiers (including the &quot;_WITHOUT_SPRITE_ASSOCIATED&quot; property for sound instances without a sprite associated, if the &quot;includeWithoutSpriteAssociated&quot; is set to true) and their value will be a numeric array with the {@link CB_AudioFile} objects used. Otherwise, if set to true, it will return a numeric array with the {@link CB_AudioFile} objects used (if the &quot;includeWithoutSpriteAssociated&quot; parameter is set to true, it will also contain the {@link CB_AudioFile} objects whose sound instance ID is not associated to any sprite).</p>","name":"oneDimension"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If set to true, it will also return the {@link CB_AudioFile} objects whose sound instance ID is not associated to any sprite. Used as the &quot;includeWithoutSpriteAssociated&quot; parameter when calling the {@link CB_AudioFileSprites#getSprites} method internally.</p>","name":"includeWithoutSpriteAssociated"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If set to true, it will not return the {@link CB_AudioFile} objects whose sound instance has been cancelled. Used as the &quot;avoidCancelled&quot; parameter when calling the {@link CB_AudioFileSprites#getAudioFilesUsedBySpriteId} method internally.</p>","name":"avoidCancelled"}],"returns":[{"type":{"names":["CB_AudioFileSprites.getAudioFilesUsed_OBJECT","array"]},"description":"<p>Returns the {@link CB_AudioFile} objects used by all the sounds instances currently created. If the &quot;oneDimension&quot; parameter is set to false, it will return a {@link CB_AudioFileSprites.getAudioFilesUsed_OBJECT} object whose property names are the sprite identifiers (including the &quot;_WITHOUT_SPRITE_ASSOCIATED&quot; property for sound instances without a sprite associated, if the &quot;includeWithoutSpriteAssociated&quot; is set to true) and their value will be a numeric array with the {@link CB_AudioFile} objects used. Otherwise, if the &quot;oneDimension&quot; parameter set to true, it will return a numeric array with the {@link CB_AudioFile} objects used (if the &quot;includeWithoutSpriteAssociated&quot; parameter is set to true, it will also contain the {@link CB_AudioFile} objects whose sound instance ID is not associated to any sprite).</p>"}],"name":"getAudioFilesUsed","longname":"CB_AudioFileSprites#getAudioFilesUsed","memberof":"CB_AudioFileSprites","scope":"instance"},{"comment":"/**\r\n * Alias for {@link CB_AudioFileSprites#executeFunctionAllSprite}.\r\n * @function CB_AudioFileSprites#executeAllSprite\r\n * @see {@link CB_AudioFileSprites#executeFunctionAllSprite}\r\n */","meta":{"filename":"CB_AudioFileSprites.js","lineno":578,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{}},"description":"<p>Alias for {@link CB_AudioFileSprites#executeFunctionAllSprite}.</p>","kind":"function","name":"executeAllSprite","see":["{@link CB_AudioFileSprites#executeFunctionAllSprite}"],"memberof":"CB_AudioFileSprites","longname":"CB_AudioFileSprites#executeAllSprite","scope":"instance"},{"comment":"/**\r\n * Alias for {@link CB_AudioFileSprites#executeFunctionAllSprite}.\r\n * @function CB_AudioFileSprites#forEachSpriteById\r\n * @see {@link CB_AudioFileSprites#executeFunctionAllSprite}\r\n */","meta":{"filename":"CB_AudioFileSprites.js","lineno":583,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{}},"description":"<p>Alias for {@link CB_AudioFileSprites#executeFunctionAllSprite}.</p>","kind":"function","name":"forEachSpriteById","see":["{@link CB_AudioFileSprites#executeFunctionAllSprite}"],"memberof":"CB_AudioFileSprites","longname":"CB_AudioFileSprites#forEachSpriteById","scope":"instance"},{"comment":"/**\r\n * Executes a desired function for all the {@link CB_AudioFile} objects used by the sound instances currently created that belong to a given sprite (by its ID). It calls the {@link CB_AudioFileSprites#executeFunctionAll} method internally and returns its returning value.\r\n * @function\r\n * @param {string} spriteId - The identifier for the sprite.\r\n * @param {CB_Arrays.executeFunctionAll_ON_LOOP_CALLBACK} functionEach - Used as the \"functionEach\" parameter when calling the {@link CB_AudioFileSprites#executeFunctionAll} method internally.\r\n * @param {number|CB_Arrays.executeFunctionAll_ON_LOOP_CALLBACK} [delayBetweenEach=0] - Used as the \"delayBetweenEach\" parameter when calling the {@link CB_AudioFileSprites#executeFunctionAll} method internally.\r\n * @param {boolean} [avoidCancelled=false] - If set to true, it will not affect the {@link CB_AudioFile} objects whose sound instance has been cancelled. Used as the \"avoidCancelled\" parameter when calling the {@link CB_AudioFileSprites#getAudioFilesUsedBySpriteId} method internally.\r\n * @param {boolean} [returnSetTimeoutsArray=false] - Used as the \"returnSetTimeoutsArray\" parameter when calling the {@link CB_AudioFileSprites#executeFunctionAll} method internally.\r\n * @param {boolean} [delayBetweenEachAffectsFirst=false] - Used as the \"delayBetweenEachAffectsFirst\" parameter when calling the {@link CB_AudioFileSprites#executeFunctionAll} method internally.\r\n * @param {CB_Arrays.executeFunctionAll_ON_FINISH_CALLBACK} [functionFinish] - Function that will be called for when it has finished looping all the items. The first parameter will be the array which was looped, the second parameter will be the number of times that the \"functionEach\" callback was called (the most likely, matches the number of elements unless they are undefined or null), and the third parameter will be the maximum \"delay\" used, being \"this\" the array itself.\r\n * @returns {integer|array} If the \"returnSetTimeoutsArray\" parameter is set to false, it will return the number of calls to the \"functionEach\" function that were performed (which should be the same number as the {@link CB_AudioFile} objects used by the sound instances that belong to the given sprite identifier). Otherwise, if the \"returnSetTimeoutsArray\" is set to true, it will return a numeric array with a {@link CB_AudioFileCache.executeFunctionAll_OBJECT} object for each {@link CB_AudioFile} given. The length of this array will also be the number of calls to the \"functionEach\" function that were performed. Note that if a value greater than 0 (zero) for the \"delayBetweenEach\" parameter has been provided, perhaps not all calls of the \"functionEach\" function will have been performed yet when exiting this method because of the asynchronous nature of the [setTimeout]{@link https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/setTimeout} function.\r\n */","meta":{"range":[37466,37960],"filename":"CB_AudioFileSprites.js","lineno":600,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100013378","name":"CB_AudioFileSprites.prototype.executeFunctionAllSprite","type":"AssignmentExpression","value":"CB_AudioFileSprites.prototype.executeAllSprite","paramnames":[]}},"description":"<p>Executes a desired function for all the {@link CB_AudioFile} objects used by the sound instances currently created that belong to a given sprite (by its ID). It calls the {@link CB_AudioFileSprites#executeFunctionAll} method internally and returns its returning value.</p>","kind":"function","params":[{"type":{"names":["string"]},"description":"<p>The identifier for the sprite.</p>","name":"spriteId"},{"type":{"names":["CB_Arrays.executeFunctionAll_ON_LOOP_CALLBACK"]},"description":"<p>Used as the &quot;functionEach&quot; parameter when calling the {@link CB_AudioFileSprites#executeFunctionAll} method internally.</p>","name":"functionEach"},{"type":{"names":["number","CB_Arrays.executeFunctionAll_ON_LOOP_CALLBACK"]},"optional":true,"defaultvalue":0,"description":"<p>Used as the &quot;delayBetweenEach&quot; parameter when calling the {@link CB_AudioFileSprites#executeFunctionAll} method internally.</p>","name":"delayBetweenEach"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If set to true, it will not affect the {@link CB_AudioFile} objects whose sound instance has been cancelled. Used as the &quot;avoidCancelled&quot; parameter when calling the {@link CB_AudioFileSprites#getAudioFilesUsedBySpriteId} method internally.</p>","name":"avoidCancelled"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>Used as the &quot;returnSetTimeoutsArray&quot; parameter when calling the {@link CB_AudioFileSprites#executeFunctionAll} method internally.</p>","name":"returnSetTimeoutsArray"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>Used as the &quot;delayBetweenEachAffectsFirst&quot; parameter when calling the {@link CB_AudioFileSprites#executeFunctionAll} method internally.</p>","name":"delayBetweenEachAffectsFirst"},{"type":{"names":["CB_Arrays.executeFunctionAll_ON_FINISH_CALLBACK"]},"optional":true,"description":"<p>Function that will be called for when it has finished looping all the items. The first parameter will be the array which was looped, the second parameter will be the number of times that the &quot;functionEach&quot; callback was called (the most likely, matches the number of elements unless they are undefined or null), and the third parameter will be the maximum &quot;delay&quot; used, being &quot;this&quot; the array itself.</p>","name":"functionFinish"}],"returns":[{"type":{"names":["integer","array"]},"description":"<p>If the &quot;returnSetTimeoutsArray&quot; parameter is set to false, it will return the number of calls to the &quot;functionEach&quot; function that were performed (which should be the same number as the {@link CB_AudioFile} objects used by the sound instances that belong to the given sprite identifier). Otherwise, if the &quot;returnSetTimeoutsArray&quot; is set to true, it will return a numeric array with a {@link CB_AudioFileCache.executeFunctionAll_OBJECT} object for each {@link CB_AudioFile} given. The length of this array will also be the number of calls to the &quot;functionEach&quot; function that were performed. Note that if a value greater than 0 (zero) for the &quot;delayBetweenEach&quot; parameter has been provided, perhaps not all calls of the &quot;functionEach&quot; function will have been performed yet when exiting this method because of the asynchronous nature of the [setTimeout]{@link https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/setTimeout} function.</p>"}],"name":"executeFunctionAllSprite","longname":"CB_AudioFileSprites#executeFunctionAllSprite","memberof":"CB_AudioFileSprites","scope":"instance"},{"comment":"/**\r\n * Alias for {@link CB_AudioFileSprites#executeFunctionAllSprites}.\r\n * @function CB_AudioFileSprites#executeAllSprites\r\n * @see {@link CB_AudioFileSprites#executeFunctionAllSprites}\r\n */","meta":{"filename":"CB_AudioFileSprites.js","lineno":606,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{}},"description":"<p>Alias for {@link CB_AudioFileSprites#executeFunctionAllSprites}.</p>","kind":"function","name":"executeAllSprites","see":["{@link CB_AudioFileSprites#executeFunctionAllSprites}"],"memberof":"CB_AudioFileSprites","longname":"CB_AudioFileSprites#executeAllSprites","scope":"instance"},{"comment":"/**\r\n * Alias for {@link CB_AudioFileSprites#executeFunctionAllSprites}.\r\n * @function CB_AudioFileSprites#forEachSprite\r\n * @see {@link CB_AudioFileSprites#executeFunctionAllSprites}\r\n */","meta":{"filename":"CB_AudioFileSprites.js","lineno":611,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{}},"description":"<p>Alias for {@link CB_AudioFileSprites#executeFunctionAllSprites}.</p>","kind":"function","name":"forEachSprite","see":["{@link CB_AudioFileSprites#executeFunctionAllSprites}"],"memberof":"CB_AudioFileSprites","longname":"CB_AudioFileSprites#forEachSprite","scope":"instance"},{"comment":"/**\r\n * Executes a desired function for all the {@link CB_AudioFile} objects used by all the sound instances currently created. It calls the {@link CB_AudioFileSprites#executeFunctionAll} method internally and returns its returning value.\r\n * @function\r\n * @param {CB_Arrays.executeFunctionAll_ON_LOOP_CALLBACK} functionEach - Used as the \"functionEach\" parameter when calling the {@link CB_AudioFileSprites#executeFunctionAll} method internally.\r\n * @param {number|CB_Arrays.executeFunctionAll_ON_LOOP_CALLBACK} [delayBetweenEach=0] - Used as the \"delayBetweenEach\" parameter when calling the {@link CB_AudioFileSprites#executeFunctionAll} method internally.\r\n * @param {boolean} [includeWithoutSpriteAssociated=false] - If set to true, it will also affect the {@link CB_AudioFile} objects whose sound instance ID is not associated to any sprite. Used as the \"includeWithoutSpriteAssociated\" parameter when calling the {@link CB_AudioFileSprites#getAudioFilesUsed} method internally.\r\n * @param {boolean} [avoidCancelled=false] - If set to true, it will not affect the {@link CB_AudioFile} objects whose sound instance has been cancelled. Used as the \"avoidCancelled\" parameter when calling the {@link CB_AudioFileSprites#getAudioFilesUsed} method internally.\r\n * @param {boolean} [returnSetTimeoutsArray=false] - Used as the \"returnSetTimeoutsArray\" parameter when calling the {@link CB_AudioFileSprites#executeFunctionAll} method internally.\r\n * @param {boolean} [delayBetweenEachAffectsFirst=false] - Used as the \"delayBetweenEachAffectsFirst\" parameter when calling the {@link CB_AudioFileSprites#executeFunctionAll} method internally.\r\n * @param {CB_Arrays.executeFunctionAll_ON_FINISH_CALLBACK} [functionFinish] - Function that will be called for when it has finished looping all the items. The first parameter will be the array which was looped, the second parameter will be the number of times that the \"functionEach\" callback was called (the most likely, matches the number of elements unless they are undefined or null), and the third parameter will be the maximum \"delay\" used, being \"this\" the array itself.\r\n * @returns {integer|array} If the \"returnSetTimeoutsArray\" parameter is set to false, it will return the number of calls to the \"functionEach\" function that were performed (which should be the same number as the {@link CB_AudioFile} objects used by the sound instances that belong to the sprites). Otherwise, if the \"returnSetTimeoutsArray\" is set to true, it will return a numeric array with a {@link CB_AudioFileCache.executeFunctionAll_OBJECT} object for each {@link CB_AudioFile} given. The length of this array will also be the number of calls to the \"functionEach\" function that were performed. Note that if a value greater than 0 (zero) for the \"delayBetweenEach\" parameter has been provided, perhaps not all calls of the \"functionEach\" function will have been performed yet when exiting this method because of the asynchronous nature of the [setTimeout]{@link https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/setTimeout} function.\r\n */","meta":{"range":[41459,41991],"filename":"CB_AudioFileSprites.js","lineno":628,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100013422","name":"CB_AudioFileSprites.prototype.executeFunctionAllSprites","type":"AssignmentExpression","value":"CB_AudioFileSprites.prototype.executeAllSprites","paramnames":[]}},"description":"<p>Executes a desired function for all the {@link CB_AudioFile} objects used by all the sound instances currently created. It calls the {@link CB_AudioFileSprites#executeFunctionAll} method internally and returns its returning value.</p>","kind":"function","params":[{"type":{"names":["CB_Arrays.executeFunctionAll_ON_LOOP_CALLBACK"]},"description":"<p>Used as the &quot;functionEach&quot; parameter when calling the {@link CB_AudioFileSprites#executeFunctionAll} method internally.</p>","name":"functionEach"},{"type":{"names":["number","CB_Arrays.executeFunctionAll_ON_LOOP_CALLBACK"]},"optional":true,"defaultvalue":0,"description":"<p>Used as the &quot;delayBetweenEach&quot; parameter when calling the {@link CB_AudioFileSprites#executeFunctionAll} method internally.</p>","name":"delayBetweenEach"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If set to true, it will also affect the {@link CB_AudioFile} objects whose sound instance ID is not associated to any sprite. Used as the &quot;includeWithoutSpriteAssociated&quot; parameter when calling the {@link CB_AudioFileSprites#getAudioFilesUsed} method internally.</p>","name":"includeWithoutSpriteAssociated"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If set to true, it will not affect the {@link CB_AudioFile} objects whose sound instance has been cancelled. Used as the &quot;avoidCancelled&quot; parameter when calling the {@link CB_AudioFileSprites#getAudioFilesUsed} method internally.</p>","name":"avoidCancelled"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>Used as the &quot;returnSetTimeoutsArray&quot; parameter when calling the {@link CB_AudioFileSprites#executeFunctionAll} method internally.</p>","name":"returnSetTimeoutsArray"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>Used as the &quot;delayBetweenEachAffectsFirst&quot; parameter when calling the {@link CB_AudioFileSprites#executeFunctionAll} method internally.</p>","name":"delayBetweenEachAffectsFirst"},{"type":{"names":["CB_Arrays.executeFunctionAll_ON_FINISH_CALLBACK"]},"optional":true,"description":"<p>Function that will be called for when it has finished looping all the items. The first parameter will be the array which was looped, the second parameter will be the number of times that the &quot;functionEach&quot; callback was called (the most likely, matches the number of elements unless they are undefined or null), and the third parameter will be the maximum &quot;delay&quot; used, being &quot;this&quot; the array itself.</p>","name":"functionFinish"}],"returns":[{"type":{"names":["integer","array"]},"description":"<p>If the &quot;returnSetTimeoutsArray&quot; parameter is set to false, it will return the number of calls to the &quot;functionEach&quot; function that were performed (which should be the same number as the {@link CB_AudioFile} objects used by the sound instances that belong to the sprites). Otherwise, if the &quot;returnSetTimeoutsArray&quot; is set to true, it will return a numeric array with a {@link CB_AudioFileCache.executeFunctionAll_OBJECT} object for each {@link CB_AudioFile} given. The length of this array will also be the number of calls to the &quot;functionEach&quot; function that were performed. Note that if a value greater than 0 (zero) for the &quot;delayBetweenEach&quot; parameter has been provided, perhaps not all calls of the &quot;functionEach&quot; function will have been performed yet when exiting this method because of the asynchronous nature of the [setTimeout]{@link https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/setTimeout} function.</p>"}],"name":"executeFunctionAllSprites","longname":"CB_AudioFileSprites#executeFunctionAllSprites","memberof":"CB_AudioFileSprites","scope":"instance"},{"comment":"/**\r\n * Tells whether a given sprite (by its ID) is playing or not. Note that there could be more than one sound instance (with a {@CB_AudioFile} object) by each sprite with different status (paused, stopped, etc.) and this method will return true if any of them is playing.\r\n * @function\r\n * @param {string} spriteId - The identifier for the sprite.\r\n * @returns {boolean} Returns whether a given sprite (by its ID) is playing or not.\r\n */","meta":{"range":[42442,42741],"filename":"CB_AudioFileSprites.js","lineno":640,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100013467","name":"CB_AudioFileSprites.prototype.isPlayingSprite","type":"FunctionExpression","paramnames":["spriteId"]},"vars":{"audioFiles":"CB_AudioFileSprites#isPlayingSprite~audioFiles","audioFilesLength":"CB_AudioFileSprites#isPlayingSprite~audioFilesLength","x":"CB_AudioFileSprites#isPlayingSprite~x"}},"description":"<p>Tells whether a given sprite (by its ID) is playing or not. Note that there could be more than one sound instance (with a {@CB_AudioFile} object) by each sprite with different status (paused, stopped, etc.) and this method will return true if any of them is playing.</p>","kind":"function","params":[{"type":{"names":["string"]},"description":"<p>The identifier for the sprite.</p>","name":"spriteId"}],"returns":[{"type":{"names":["boolean"]},"description":"<p>Returns whether a given sprite (by its ID) is playing or not.</p>"}],"name":"isPlayingSprite","longname":"CB_AudioFileSprites#isPlayingSprite","memberof":"CB_AudioFileSprites","scope":"instance"},{"comment":"/**\r\n * Tells whether a given sprite (by its ID) is paused or not. Note that there could be more than one sound instance (with a {@CB_AudioFile} object) by each sprite with different status (paused, stopped, etc.) and this method will return true if any of them is paused.\r\n * @function\r\n * @param {string} spriteId - The identifier for the sprite.\r\n * @returns {boolean} Returns whether a given sprite (by its ID) is paused or not.\r\n */","meta":{"range":[43189,43486],"filename":"CB_AudioFileSprites.js","lineno":658,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100013514","name":"CB_AudioFileSprites.prototype.isPausedSprite","type":"FunctionExpression","paramnames":["spriteId"]},"vars":{"audioFiles":"CB_AudioFileSprites#isPausedSprite~audioFiles","audioFilesLength":"CB_AudioFileSprites#isPausedSprite~audioFilesLength","x":"CB_AudioFileSprites#isPausedSprite~x"}},"description":"<p>Tells whether a given sprite (by its ID) is paused or not. Note that there could be more than one sound instance (with a {@CB_AudioFile} object) by each sprite with different status (paused, stopped, etc.) and this method will return true if any of them is paused.</p>","kind":"function","params":[{"type":{"names":["string"]},"description":"<p>The identifier for the sprite.</p>","name":"spriteId"}],"returns":[{"type":{"names":["boolean"]},"description":"<p>Returns whether a given sprite (by its ID) is paused or not.</p>"}],"name":"isPausedSprite","longname":"CB_AudioFileSprites#isPausedSprite","memberof":"CB_AudioFileSprites","scope":"instance"},{"comment":"/**\r\n * Tells whether a given sprite (by its ID) is stopped or not. Note that there could be more than one sound instance (with a {@CB_AudioFile} object) by each sprite with different status (paused, stopped, etc.) and this method will only return true if all of them are stopped.\r\n * @function\r\n * @param {string} spriteId - The identifier for the sprite.\r\n * @param {boolean} [checkAudioFileObjects=false] - If set to true, it will check all the {@CB_AudioFile} objects associated to the sprite. Doing so, as internally all stopped {@CB_AudioFile} objects are disassociated from their sound instances, this method should return false normally (unless something went wrong).\r\n * @returns {boolean} Returns whether a given sprite (by its ID) is stopped or not. As internally all stopped {@CB_AudioFile} objects are disassociated from their sound instances, this method should return false normally (unless something went wrong).\r\n */","meta":{"range":[44433,44939],"filename":"CB_AudioFileSprites.js","lineno":678,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100013561","name":"CB_AudioFileSprites.prototype.isStoppedSprite","type":"FunctionExpression","paramnames":["spriteId","checkAudioFileObjects"]},"vars":{"audioFiles":"CB_AudioFileSprites#isStoppedSprite~audioFiles","audioFilesLength":"CB_AudioFileSprites#isStoppedSprite~audioFilesLength","x":"CB_AudioFileSprites#isStoppedSprite~x"}},"description":"<p>Tells whether a given sprite (by its ID) is stopped or not. Note that there could be more than one sound instance (with a {@CB_AudioFile} object) by each sprite with different status (paused, stopped, etc.) and this method will only return true if all of them are stopped.</p>","kind":"function","params":[{"type":{"names":["string"]},"description":"<p>The identifier for the sprite.</p>","name":"spriteId"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If set to true, it will check all the {@CB_AudioFile} objects associated to the sprite. Doing so, as internally all stopped {@CB_AudioFile} objects are disassociated from their sound instances, this method should return false normally (unless something went wrong).</p>","name":"checkAudioFileObjects"}],"returns":[{"type":{"names":["boolean"]},"description":"<p>Returns whether a given sprite (by its ID) is stopped or not. As internally all stopped {@CB_AudioFile} objects are disassociated from their sound instances, this method should return false normally (unless something went wrong).</p>"}],"name":"isStoppedSprite","longname":"CB_AudioFileSprites#isStoppedSprite","memberof":"CB_AudioFileSprites","scope":"instance"},{"comment":"/**\r\n * Plays a sprite by its ID. If the sprite is found, uses the {@link CB_AudioFileSprites#play} method internally and returns its returning value.\r\n * @function\r\n * @param {string} spriteId - The identifier for the sprite. Used as the \"spriteId\" parameter when calling the {@link CB_AudioFileSprites#play} method internally.\r\n * @param {boolean} [loop={@link CB_AudioFile#loop}] - Used as the \"loop\" parameter when calling the {@link CB_AudioFileSprites#play} method internally.\r\n * @param {number} [volume=CB_Configuration.CrossBase.CB_AudioFile_AudioFileCache_USE_SPEAKER_VOLUME_AS_DEFAULT ? CB_Speaker.getVolume() : CB_Configuration.CrossBase.CB_Speaker_DEFAULT_VOLUME] - Used as the \"volume\" parameter when calling the {@link CB_AudioFileSprites#play} method internally.\r\n * @param {boolean} [allowedRecursiveDelay={@link CB_Configuration.CrossBase.CB_AudioFile_AudioFileCache_ALLOWED_RECURSIVE_DELAY_DEFAULT}] - Used as the \"allowedRecursiveDelay\" parameter when calling the {@link CB_AudioFileSprites#play} method internally.\r\n * @param {boolean} [allowedRecursiveDelaySkipping=stopAt-startAt] - Used as the \"allowedRecursiveDelaySkipping\" parameter when calling the {@link CB_AudioFileSprites#play} method internally.\r\n * @param {function} [onPlayStart] - Used as the \"onPlayStart\" parameter when calling the {@link CB_AudioFileSprites#play} method internally.\r\n * @param {function} [onStop] - Used as the \"onStop\" parameter when calling the {@link CB_AudioFileSprites#play} method internally.\r\n * @returns {integer|null} Returns null if the sprite was not found. Otherwise, returns the sound instance ID used if there was one free or null otherwise. To get a sound instance returned does not mean necessarily that the sound started playing so it is necessary to use a callback function as the \"onPlayStart\" parameter for checking this. The sound instance created (if any), will be cancelled automatically once the sound is stopped.\r\n */","meta":{"range":[46906,47290],"filename":"CB_AudioFileSprites.js","lineno":711,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100013618","name":"CB_AudioFileSprites.prototype.playSprite","type":"FunctionExpression","paramnames":["spriteId","loop","volume","allowedRecursiveDelay","allowedRecursiveDelaySkipping","onPlayStart","onStop"]},"vars":{"sprite":"CB_AudioFileSprites#playSprite~sprite","soundInstance":"CB_AudioFileSprites#playSprite~soundInstance"}},"description":"<p>Plays a sprite by its ID. If the sprite is found, uses the {@link CB_AudioFileSprites#play} method internally and returns its returning value.</p>","kind":"function","params":[{"type":{"names":["string"]},"description":"<p>The identifier for the sprite. Used as the &quot;spriteId&quot; parameter when calling the {@link CB_AudioFileSprites#play} method internally.</p>","name":"spriteId"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":"{@link CB_AudioFile#loop}","description":"<p>Used as the &quot;loop&quot; parameter when calling the {@link CB_AudioFileSprites#play} method internally.</p>","name":"loop"},{"type":{"names":["number"]},"optional":true,"defaultvalue":"CB_Configuration.CrossBase.CB_AudioFile_AudioFileCache_USE_SPEAKER_VOLUME_AS_DEFAULT ? CB_Speaker.getVolume() : CB_Configuration.CrossBase.CB_Speaker_DEFAULT_VOLUME","description":"<p>Used as the &quot;volume&quot; parameter when calling the {@link CB_AudioFileSprites#play} method internally.</p>","name":"volume"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":"{@link CB_Configuration.CrossBase.CB_AudioFile_AudioFileCache_ALLOWED_RECURSIVE_DELAY_DEFAULT}","description":"<p>Used as the &quot;allowedRecursiveDelay&quot; parameter when calling the {@link CB_AudioFileSprites#play} method internally.</p>","name":"allowedRecursiveDelay"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":"stopAt-startAt","description":"<p>Used as the &quot;allowedRecursiveDelaySkipping&quot; parameter when calling the {@link CB_AudioFileSprites#play} method internally.</p>","name":"allowedRecursiveDelaySkipping"},{"type":{"names":["function"]},"optional":true,"description":"<p>Used as the &quot;onPlayStart&quot; parameter when calling the {@link CB_AudioFileSprites#play} method internally.</p>","name":"onPlayStart"},{"type":{"names":["function"]},"optional":true,"description":"<p>Used as the &quot;onStop&quot; parameter when calling the {@link CB_AudioFileSprites#play} method internally.</p>","name":"onStop"}],"returns":[{"type":{"names":["integer","null"]},"description":"<p>Returns null if the sprite was not found. Otherwise, returns the sound instance ID used if there was one free or null otherwise. To get a sound instance returned does not mean necessarily that the sound started playing so it is necessary to use a callback function as the &quot;onPlayStart&quot; parameter for checking this. The sound instance created (if any), will be cancelled automatically once the sound is stopped.</p>"}],"name":"playSprite","longname":"CB_AudioFileSprites#playSprite","memberof":"CB_AudioFileSprites","scope":"instance"},{"comment":"/**\r\n * Stops all the {@link CB_AudioFile} objects that belong to the sound instances (created by the {@link CB_AudioFileSprites#play} or the {@link CB_AudioFileSprites#playSprite} methods) which are playing used by a given sprite identifier. Uses the {@link CB_AudioFileSprites#stopAll} method internally and returns its returning value.\r\n * @function\r\n * @param {string} spriteId - The identifier for the sprite.\r\n * @returns {integer} Returns the number of calls to the {@link CB_AudioFile#stop} method that were performed internally.\r\n */","meta":{"range":[47843,47977],"filename":"CB_AudioFileSprites.js","lineno":725,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100013664","name":"CB_AudioFileSprites.prototype.stopSprite","type":"FunctionExpression","paramnames":["spriteId"]}},"description":"<p>Stops all the {@link CB_AudioFile} objects that belong to the sound instances (created by the {@link CB_AudioFileSprites#play} or the {@link CB_AudioFileSprites#playSprite} methods) which are playing used by a given sprite identifier. Uses the {@link CB_AudioFileSprites#stopAll} method internally and returns its returning value.</p>","kind":"function","params":[{"type":{"names":["string"]},"description":"<p>The identifier for the sprite.</p>","name":"spriteId"}],"returns":[{"type":{"names":["integer"]},"description":"<p>Returns the number of calls to the {@link CB_AudioFile#stop} method that were performed internally.</p>"}],"name":"stopSprite","longname":"CB_AudioFileSprites#stopSprite","memberof":"CB_AudioFileSprites","scope":"instance"},{"comment":"/**\r\n * Pauses all the {@link CB_AudioFile} objects that belong to the sound instances (created by the {@link CB_AudioFileSprites#play} or the {@link CB_AudioFileSprites#playSprite} methods) which are playing used by a given sprite identifier. Uses the {@link CB_AudioFileSprites#pauseAll} method internally and returns its returning value.\r\n * @function\r\n * @param {string} spriteId - The identifier for the sprite.\r\n * @param {function} [onPause] - Function without parameters to be called when the audio is paused successfully, being \"this\" the {@link CB_AudioFile} object. Used internally as the \"onPause\" parameter to call the {@link CB_AudioFileSprites#pauseAll} method.\r\n * @returns {integer} Returns the number of calls to the {@link CB_AudioFile#pause} method that were performed internally.\r\n */","meta":{"range":[48794,48948],"filename":"CB_AudioFileSprites.js","lineno":738,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100013684","name":"CB_AudioFileSprites.prototype.pauseSprite","type":"FunctionExpression","paramnames":["spriteId","onPause"]}},"description":"<p>Pauses all the {@link CB_AudioFile} objects that belong to the sound instances (created by the {@link CB_AudioFileSprites#play} or the {@link CB_AudioFileSprites#playSprite} methods) which are playing used by a given sprite identifier. Uses the {@link CB_AudioFileSprites#pauseAll} method internally and returns its returning value.</p>","kind":"function","params":[{"type":{"names":["string"]},"description":"<p>The identifier for the sprite.</p>","name":"spriteId"},{"type":{"names":["function"]},"optional":true,"description":"<p>Function without parameters to be called when the audio is paused successfully, being &quot;this&quot; the {@link CB_AudioFile} object. Used internally as the &quot;onPause&quot; parameter to call the {@link CB_AudioFileSprites#pauseAll} method.</p>","name":"onPause"}],"returns":[{"type":{"names":["integer"]},"description":"<p>Returns the number of calls to the {@link CB_AudioFile#pause} method that were performed internally.</p>"}],"name":"pauseSprite","longname":"CB_AudioFileSprites#pauseSprite","memberof":"CB_AudioFileSprites","scope":"instance"},{"comment":"/**\r\n * Resumes all the {@link CB_AudioFile} objects that belong to the sound instances (created by the {@link CB_AudioFileSprites#play} or the {@link CB_AudioFileSprites#playSprite} methods) used by a given sprite identifier. Uses the {@link CB_AudioFileSprites#resumeAll} method internally and returns its returning value.\r\n * @function\r\n * @param {string} spriteId - Used as the \"spriteId\" parameter when calling the {@link CB_AudioFileSprites#resumeAll} method internally.\r\n * @param {boolean} [loop={@link CB_AudioFile#loop}] - Used as the \"loop\" parameter when calling the {@link CB_AudioFileSprites#resumeAll} method internally.\r\n * @param {boolean} [allowedRecursiveDelay={@link CB_Configuration.CrossBase.CB_AudioFile_AudioFileCache_ALLOWED_RECURSIVE_DELAY_DEFAULT}] - Used as the \"allowedRecursiveDelay\" parameter when calling the {@link CB_AudioFileSprites#resumeAll} method internally.\r\n * @param {boolean} [allowedRecursiveDelaySkipping=stopAt-startAt] - Used as the \"allowedRecursiveDelaySkipping\" parameter when calling the {@link CB_AudioFileSprites#resumeAll} method internally.\r\n * @param {function} [onPlayStart] - Used as the \"onPlayStart\" parameter when calling the {@link CB_AudioFileSprites#resumeAll} method internally.\r\n * @param {function} [onStop] - Used as the \"onStop\" parameter when calling the {@link CB_AudioFileSprites#resumeAll} method internally.\r\n * @returns {array} Returns null if the sprite identifier given could not be found. Otherwise, returns a numeric array containing all the return values of each internal call to the {@link CB_AudioFileCache#play} method (called through {@link CB_AudioFileSprites#resumeAll}).\r\n */","meta":{"range":[50626,50936],"filename":"CB_AudioFileSprites.js","lineno":755,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100013706","name":"CB_AudioFileSprites.prototype.resumeSprite","type":"FunctionExpression","paramnames":["spriteId","loop","allowedRecursiveDelay","allowedRecursiveDelaySkipping","onPlayStart","onStop"]}},"description":"<p>Resumes all the {@link CB_AudioFile} objects that belong to the sound instances (created by the {@link CB_AudioFileSprites#play} or the {@link CB_AudioFileSprites#playSprite} methods) used by a given sprite identifier. Uses the {@link CB_AudioFileSprites#resumeAll} method internally and returns its returning value.</p>","kind":"function","params":[{"type":{"names":["string"]},"description":"<p>Used as the &quot;spriteId&quot; parameter when calling the {@link CB_AudioFileSprites#resumeAll} method internally.</p>","name":"spriteId"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":"{@link CB_AudioFile#loop}","description":"<p>Used as the &quot;loop&quot; parameter when calling the {@link CB_AudioFileSprites#resumeAll} method internally.</p>","name":"loop"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":"{@link CB_Configuration.CrossBase.CB_AudioFile_AudioFileCache_ALLOWED_RECURSIVE_DELAY_DEFAULT}","description":"<p>Used as the &quot;allowedRecursiveDelay&quot; parameter when calling the {@link CB_AudioFileSprites#resumeAll} method internally.</p>","name":"allowedRecursiveDelay"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":"stopAt-startAt","description":"<p>Used as the &quot;allowedRecursiveDelaySkipping&quot; parameter when calling the {@link CB_AudioFileSprites#resumeAll} method internally.</p>","name":"allowedRecursiveDelaySkipping"},{"type":{"names":["function"]},"optional":true,"description":"<p>Used as the &quot;onPlayStart&quot; parameter when calling the {@link CB_AudioFileSprites#resumeAll} method internally.</p>","name":"onPlayStart"},{"type":{"names":["function"]},"optional":true,"description":"<p>Used as the &quot;onStop&quot; parameter when calling the {@link CB_AudioFileSprites#resumeAll} method internally.</p>","name":"onStop"}],"returns":[{"type":{"names":["array"]},"description":"<p>Returns null if the sprite identifier given could not be found. Otherwise, returns a numeric array containing all the return values of each internal call to the {@link CB_AudioFileCache#play} method (called through {@link CB_AudioFileSprites#resumeAll}).</p>"}],"name":"resumeSprite","longname":"CB_AudioFileSprites#resumeSprite","memberof":"CB_AudioFileSprites","scope":"instance"},{"comment":"/**\r\n * Mutes all the {@link CB_AudioFile} objects that belong to the sound instances (created by the {@link CB_AudioFileSprites#play} or the {@link CB_AudioFileSprites#playSprite} methods) used by a given sprite identifier. Uses the {@link CB_AudioFileSprites#muteAll} method internally and returns its returning value.\r\n * @function\r\n * @param {string} spriteId - The identifier for the sprite.\r\n * @param {function} [onMute] - Callback function which will be called for each audio file if it has been possible to mute it (or at least it was possible to try it), being \"this\" the {@link CB_AudioFile} object. Used internally as the \"onMute\" parameter to call the {@link CB_AudioFileSprites#muteAll} method.\r\n * @returns {integer} Returns the number of calls to the {@link CB_AudioFile#mute} method that were performed internally.\r\n */","meta":{"range":[51784,51934],"filename":"CB_AudioFileSprites.js","lineno":768,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100013737","name":"CB_AudioFileSprites.prototype.muteSprite","type":"FunctionExpression","paramnames":["spriteId","onMute"]}},"description":"<p>Mutes all the {@link CB_AudioFile} objects that belong to the sound instances (created by the {@link CB_AudioFileSprites#play} or the {@link CB_AudioFileSprites#playSprite} methods) used by a given sprite identifier. Uses the {@link CB_AudioFileSprites#muteAll} method internally and returns its returning value.</p>","kind":"function","params":[{"type":{"names":["string"]},"description":"<p>The identifier for the sprite.</p>","name":"spriteId"},{"type":{"names":["function"]},"optional":true,"description":"<p>Callback function which will be called for each audio file if it has been possible to mute it (or at least it was possible to try it), being &quot;this&quot; the {@link CB_AudioFile} object. Used internally as the &quot;onMute&quot; parameter to call the {@link CB_AudioFileSprites#muteAll} method.</p>","name":"onMute"}],"returns":[{"type":{"names":["integer"]},"description":"<p>Returns the number of calls to the {@link CB_AudioFile#mute} method that were performed internally.</p>"}],"name":"muteSprite","longname":"CB_AudioFileSprites#muteSprite","memberof":"CB_AudioFileSprites","scope":"instance"},{"comment":"/**\r\n * Unmutes all the {@link CB_AudioFile} objects that belong to the sound instances (created by the {@link CB_AudioFileSprites#play} or the {@link CB_AudioFileSprites#playSprite} methods) used by a given sprite identifier. Uses the {@link CB_AudioFileSprites#unmuteAll} method internally and returns its returning value.\r\n * @function\r\n * @param {string} spriteId - The identifier for the sprite.\r\n * @param {function} [onUnmute] - Used internally as the \"onUnmute\" parameter to call the {@link CB_AudioFileSprites#unmuteAll} method.\r\n * @returns {integer} Returns the number of calls to the {@link CB_AudioFile#unmute} method that were performed internally.\r\n */","meta":{"range":[52613,52771],"filename":"CB_AudioFileSprites.js","lineno":781,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100013759","name":"CB_AudioFileSprites.prototype.unmuteSprite","type":"FunctionExpression","paramnames":["spriteId","onUnmute"]}},"description":"<p>Unmutes all the {@link CB_AudioFile} objects that belong to the sound instances (created by the {@link CB_AudioFileSprites#play} or the {@link CB_AudioFileSprites#playSprite} methods) used by a given sprite identifier. Uses the {@link CB_AudioFileSprites#unmuteAll} method internally and returns its returning value.</p>","kind":"function","params":[{"type":{"names":["string"]},"description":"<p>The identifier for the sprite.</p>","name":"spriteId"},{"type":{"names":["function"]},"optional":true,"description":"<p>Used internally as the &quot;onUnmute&quot; parameter to call the {@link CB_AudioFileSprites#unmuteAll} method.</p>","name":"onUnmute"}],"returns":[{"type":{"names":["integer"]},"description":"<p>Returns the number of calls to the {@link CB_AudioFile#unmute} method that were performed internally.</p>"}],"name":"unmuteSprite","longname":"CB_AudioFileSprites#unmuteSprite","memberof":"CB_AudioFileSprites","scope":"instance"},{"comment":"/**\r\n * Sets the same desired volume to all the {@link CB_AudioFile} objects that belong to the sound instances (created by the {@link CB_AudioFileSprites#play} or the {@link CB_AudioFileSprites#playSprite} methods) used by a given sprite identifier. Uses the {@link CB_AudioFileSprites#setVolumeAll} method internally and returns its returning value.\r\n * @function\r\n * @param {string} spriteId - The identifier for the sprite.\r\n * @param {number} [volume={@link CB_Speaker.getVolume()} | {@link CB_Configuration.CrossBase.CB_Speaker_DEFAULT_VOLUME}] - Used as the \"volume\" parameter when calling the {@link CB_AudioFileSprites#setVolumeAll} method internally.\r\n * @param {boolean} [forceSetVolumeProperty=false] - Used as the \"forceSetVolumeProperty\" parameter when calling the {@link CB_AudioFileSprites#setVolumeAll} method internally.\r\n * @param {function} [onSetVolume] - Used as the \"onSetVolume\" parameter when calling the {@link CB_AudioFileSprites#setVolumeAll} method internally.\r\n * @returns {integer} Returns the number of calls to the {@link CB_AudioFile#setVolume} method that were performed internally.\r\n */","meta":{"range":[53907,54141],"filename":"CB_AudioFileSprites.js","lineno":796,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100013781","name":"CB_AudioFileSprites.prototype.setVolumeSprite","type":"FunctionExpression","paramnames":["spriteId","volume","forceSetVolumeProperty","onSetVolume"]}},"description":"<p>Sets the same desired volume to all the {@link CB_AudioFile} objects that belong to the sound instances (created by the {@link CB_AudioFileSprites#play} or the {@link CB_AudioFileSprites#playSprite} methods) used by a given sprite identifier. Uses the {@link CB_AudioFileSprites#setVolumeAll} method internally and returns its returning value.</p>","kind":"function","params":[{"type":{"names":["string"]},"description":"<p>The identifier for the sprite.</p>","name":"spriteId"},{"type":{"names":["number"]},"optional":true,"defaultvalue":"{@link CB_Speaker.getVolume()} | {@link CB_Configuration.CrossBase.CB_Speaker_DEFAULT_VOLUME}","description":"<p>Used as the &quot;volume&quot; parameter when calling the {@link CB_AudioFileSprites#setVolumeAll} method internally.</p>","name":"volume"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>Used as the &quot;forceSetVolumeProperty&quot; parameter when calling the {@link CB_AudioFileSprites#setVolumeAll} method internally.</p>","name":"forceSetVolumeProperty"},{"type":{"names":["function"]},"optional":true,"description":"<p>Used as the &quot;onSetVolume&quot; parameter when calling the {@link CB_AudioFileSprites#setVolumeAll} method internally.</p>","name":"onSetVolume"}],"returns":[{"type":{"names":["integer"]},"description":"<p>Returns the number of calls to the {@link CB_AudioFile#setVolume} method that were performed internally.</p>"}],"name":"setVolumeSprite","longname":"CB_AudioFileSprites#setVolumeSprite","memberof":"CB_AudioFileSprites","scope":"instance"},{"comment":"/**\r\n * Tries to change the desired audio API of the {@link CB_AudioFile} objects that belong to the sound instances (created by the {@link CB_AudioFileSprites#play} or the {@link CB_AudioFileSprites#playSprite} methods) used by a given sprite identifier. Uses the {@link CB_AudioFileSprites#setAudioAPIAll} method internally and returns its returning value.\r\n * @function\r\n * @param {string} spriteId - The identifier for the sprite.\r\n * @param {array} preferredAPIs - Used as the \"preferredAPIs\" parameter when calling the {@link CB_AudioFileSprites#setAudioAPIAll} method internally.\r\n * @param {CB_AudioFileCache.setAudioAPIAll_CALLBACK_OK} [callbackOk] - Used as the \"callbackOk\" parameter when calling the {@link CB_AudioFileSprites#setAudioAPIAll} method internally.\r\n * @param {CB_AudioFileCache.setAudioAPIAll_CALLBACK_ERROR} [callbackError] - Used as the \"callbackError\" parameter when calling the {@link CB_AudioFileSprites#setAudioAPIAll} method internally.\r\n * @param {boolean} [mandatory=false] - Used as the \"mandatory\" parameter when calling the {@link CB_AudioFileSprites#setAudioAPIAll} method internally.\r\n * @param {string} [forceReload=false] - Used as the \"forceReload\" parameter when calling the {@link CB_AudioFileSprites#setAudioAPIAll} method internally.\r\n * @returns {integer} Returns the number of calls to the {@link CB_AudioFile#setAudioAPI} method that were performed internally.\r\n */","meta":{"range":[55572,55852],"filename":"CB_AudioFileSprites.js","lineno":813,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100013807","name":"CB_AudioFileSprites.prototype.setAudioAPISprite","type":"FunctionExpression","paramnames":["spriteId","preferredAPIs","callbackOk","callbackError","mandatory","forceReload"]}},"description":"<p>Tries to change the desired audio API of the {@link CB_AudioFile} objects that belong to the sound instances (created by the {@link CB_AudioFileSprites#play} or the {@link CB_AudioFileSprites#playSprite} methods) used by a given sprite identifier. Uses the {@link CB_AudioFileSprites#setAudioAPIAll} method internally and returns its returning value.</p>","kind":"function","params":[{"type":{"names":["string"]},"description":"<p>The identifier for the sprite.</p>","name":"spriteId"},{"type":{"names":["array"]},"description":"<p>Used as the &quot;preferredAPIs&quot; parameter when calling the {@link CB_AudioFileSprites#setAudioAPIAll} method internally.</p>","name":"preferredAPIs"},{"type":{"names":["CB_AudioFileCache.setAudioAPIAll_CALLBACK_OK"]},"optional":true,"description":"<p>Used as the &quot;callbackOk&quot; parameter when calling the {@link CB_AudioFileSprites#setAudioAPIAll} method internally.</p>","name":"callbackOk"},{"type":{"names":["CB_AudioFileCache.setAudioAPIAll_CALLBACK_ERROR"]},"optional":true,"description":"<p>Used as the &quot;callbackError&quot; parameter when calling the {@link CB_AudioFileSprites#setAudioAPIAll} method internally.</p>","name":"callbackError"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>Used as the &quot;mandatory&quot; parameter when calling the {@link CB_AudioFileSprites#setAudioAPIAll} method internally.</p>","name":"mandatory"},{"type":{"names":["string"]},"optional":true,"defaultvalue":false,"description":"<p>Used as the &quot;forceReload&quot; parameter when calling the {@link CB_AudioFileSprites#setAudioAPIAll} method internally.</p>","name":"forceReload"}],"returns":[{"type":{"names":["integer"]},"description":"<p>Returns the number of calls to the {@link CB_AudioFile#setAudioAPI} method that were performed internally.</p>"}],"name":"setAudioAPISprite","longname":"CB_AudioFileSprites#setAudioAPISprite","memberof":"CB_AudioFileSprites","scope":"instance"},{"comment":"/**\r\n * Creates the desired number of internal {@link CB_AudioFile} objects (inside the {@link CB_AudioFileCache#audioFiles} property). Recommended to be called through a user-driven event (as onClick, onTouch, etc.), as some clients may need this at least the first time in order to be able to play the audio. Uses the {@link CB_AudioFileCache#createAudioFiles} method internally and returns its returning value.\r\n * @function\r\n * @param {integer} minimumAudioFiles - Used as the \"minimumAudioFiles\" parameter when calling the {@link CB_AudioFileCache#createAudioFiles} method internally.\r\n * @returns {integer} Returns the number of {@link CB_AudioFile} objects which are intended to be created (they could fail).\r\n */","meta":{"range":[56583,56731],"filename":"CB_AudioFileSprites.js","lineno":825,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100013837","name":"CB_AudioFileSprites.prototype.createAudioFiles","type":"FunctionExpression","paramnames":["minimumAudioFiles"]}},"description":"<p>Creates the desired number of internal {@link CB_AudioFile} objects (inside the {@link CB_AudioFileCache#audioFiles} property). Recommended to be called through a user-driven event (as onClick, onTouch, etc.), as some clients may need this at least the first time in order to be able to play the audio. Uses the {@link CB_AudioFileCache#createAudioFiles} method internally and returns its returning value.</p>","kind":"function","params":[{"type":{"names":["integer"]},"description":"<p>Used as the &quot;minimumAudioFiles&quot; parameter when calling the {@link CB_AudioFileCache#createAudioFiles} method internally.</p>","name":"minimumAudioFiles"}],"returns":[{"type":{"names":["integer"]},"description":"<p>Returns the number of {@link CB_AudioFile} objects which are intended to be created (they could fail).</p>"}],"name":"createAudioFiles","longname":"CB_AudioFileSprites#createAudioFiles","memberof":"CB_AudioFileSprites","scope":"instance"},{"comment":"/**\r\n * Creates one internal {@link CB_AudioFile} object (inside the {@link CB_AudioFileCache#audioFiles} property). Recommended to be called through a user-driven event (as onClick, onTouch, etc.), as some clients may need this at least the first time in order to be able to play the audio. Uses the {@link CB_AudioFileCache#createAudioFile} method internally and returns its returning value. Internal usage only recommended.\r\n * @function\r\n * @param {CB_AudioFileCache.URIS_OBJECT} [URIs={@link CB_AudioFileCache#URIs}] - Used as the \"URIs\" parameter when calling the {@link CB_AudioFileCache#createAudioFile} method internally.\r\n * @param {array} [preferredAPIs={@link CB_AudioFileCache#preferredAPIs}] - Used as the \"preferredAPIs\" parameter when calling the {@link CB_AudioFileCache#createAudioFile} method internally.\r\n * @param {array} [preferredFormats={@link CB_AudioFileCache#preferredFormats}] - Used as the \"preferredFormats\" parameter when calling the {@link CB_AudioFileCache#createAudioFile} method internally.\r\n * @param {CB_AudioFile} [audioObject] - Used as the \"audioObject\" parameter when calling the {@link CB_AudioFileCache#createAudioFile} method internally.\r\n * @param {function} [callbackOk] - Used as the \"callbackOk\" parameter when calling the {@link CB_AudioFileCache#createAudioFile} method internally.\r\n * @param {function} [callbackError] - Used as the \"callbackError\" parameter when calling the {@link CB_AudioFileCache#createAudioFile} method internally.\r\n * @param {boolean} [storeURIsList=false] - Used as the \"storeURIsList\" parameter when calling the {@link CB_AudioFileCache#createAudioFile} method internally.\r\n * @param {boolean} [checkAutomatically=false] - Used as the \"checkAutomatically\" parameter when calling the {@link CB_AudioFileCache#createAudioFile} method internally.\r\n * @returns {CB_AudioFile|null} If it fails, it returns null. Otherwise, returns the {@link CB_AudioFile} that has been created or reused.\r\n */","meta":{"range":[58713,59049],"filename":"CB_AudioFileSprites.js","lineno":844,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100013855","name":"CB_AudioFileSprites.prototype.createAudioFile","type":"FunctionExpression","paramnames":["URIs","preferredAPIs","preferredFormats","audioObject","callbackOk","callbackError","storeURIsList","checkAutomatically"]}},"description":"<p>Creates one internal {@link CB_AudioFile} object (inside the {@link CB_AudioFileCache#audioFiles} property). Recommended to be called through a user-driven event (as onClick, onTouch, etc.), as some clients may need this at least the first time in order to be able to play the audio. Uses the {@link CB_AudioFileCache#createAudioFile} method internally and returns its returning value. Internal usage only recommended.</p>","kind":"function","params":[{"type":{"names":["CB_AudioFileCache.URIS_OBJECT"]},"optional":true,"defaultvalue":"{@link CB_AudioFileCache#URIs}","description":"<p>Used as the &quot;URIs&quot; parameter when calling the {@link CB_AudioFileCache#createAudioFile} method internally.</p>","name":"URIs"},{"type":{"names":["array"]},"optional":true,"defaultvalue":"{@link CB_AudioFileCache#preferredAPIs}","description":"<p>Used as the &quot;preferredAPIs&quot; parameter when calling the {@link CB_AudioFileCache#createAudioFile} method internally.</p>","name":"preferredAPIs"},{"type":{"names":["array"]},"optional":true,"defaultvalue":"{@link CB_AudioFileCache#preferredFormats}","description":"<p>Used as the &quot;preferredFormats&quot; parameter when calling the {@link CB_AudioFileCache#createAudioFile} method internally.</p>","name":"preferredFormats"},{"type":{"names":["CB_AudioFile"]},"optional":true,"description":"<p>Used as the &quot;audioObject&quot; parameter when calling the {@link CB_AudioFileCache#createAudioFile} method internally.</p>","name":"audioObject"},{"type":{"names":["function"]},"optional":true,"description":"<p>Used as the &quot;callbackOk&quot; parameter when calling the {@link CB_AudioFileCache#createAudioFile} method internally.</p>","name":"callbackOk"},{"type":{"names":["function"]},"optional":true,"description":"<p>Used as the &quot;callbackError&quot; parameter when calling the {@link CB_AudioFileCache#createAudioFile} method internally.</p>","name":"callbackError"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>Used as the &quot;storeURIsList&quot; parameter when calling the {@link CB_AudioFileCache#createAudioFile} method internally.</p>","name":"storeURIsList"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>Used as the &quot;checkAutomatically&quot; parameter when calling the {@link CB_AudioFileCache#createAudioFile} method internally.</p>","name":"checkAutomatically"}],"returns":[{"type":{"names":["CB_AudioFile","null"]},"description":"<p>If it fails, it returns null. Otherwise, returns the {@link CB_AudioFile} that has been created or reused.</p>"}],"name":"createAudioFile","longname":"CB_AudioFileSprites#createAudioFile","memberof":"CB_AudioFileSprites","scope":"instance"},{"comment":"/**\r\n * Cleans the array of the {@link CB_AudioFile} objects (taking off the undefined or null ones) which is in the {@link CB_AudioFileCache#audioFiles} property, just keeping the valid ones and clearing (destroying and removing) the others. For performance purposes. Uses the {@link CB_AudioFileCache#clearAudioFiles} method internally and returns its returning value. Internal usage only recommended.\r\n * @function\r\n * @param {boolean} [avoidCallingCheckCacheLoaded=false] - Used as the \"avoidCallingCheckCacheLoaded\" parameter when calling the {@link CB_AudioFileCache#clearAudioFiles} method internally.\r\n * @returns {array} Returns the value of the {@link CB_AudioFileCache#audioFiles} property.\r\n */","meta":{"range":[59766,59934],"filename":"CB_AudioFileSprites.js","lineno":856,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100013887","name":"CB_AudioFileSprites.prototype.clearAudioFiles","type":"FunctionExpression","paramnames":["avoidCallingCheckCacheLoaded"]}},"description":"<p>Cleans the array of the {@link CB_AudioFile} objects (taking off the undefined or null ones) which is in the {@link CB_AudioFileCache#audioFiles} property, just keeping the valid ones and clearing (destroying and removing) the others. For performance purposes. Uses the {@link CB_AudioFileCache#clearAudioFiles} method internally and returns its returning value. Internal usage only recommended.</p>","kind":"function","params":[{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>Used as the &quot;avoidCallingCheckCacheLoaded&quot; parameter when calling the {@link CB_AudioFileCache#clearAudioFiles} method internally.</p>","name":"avoidCallingCheckCacheLoaded"}],"returns":[{"type":{"names":["array"]},"description":"<p>Returns the value of the {@link CB_AudioFileCache#audioFiles} property.</p>"}],"name":"clearAudioFiles","longname":"CB_AudioFileSprites#clearAudioFiles","memberof":"CB_AudioFileSprites","scope":"instance"},{"comment":"/**\r\n * If found, takes a given {@link CB_AudioFile} object off the {@link CB_AudioFileCache#audioFiles} property (and reloads it if we want to). NOTE: It does neither destroy nor remove the {@link CB_AudioFile} object so it can be used for other purposes (and if a {@link CB_AudioFile} object is given, it will be tried to be reused by the {@link CB_AudioFileCache#createAudioFile} method internally if it is called). Uses the {@link CB_AudioFileCache#removeAudioFile} method internally and returns its returning value. Internal usage only recommended.\r\n * @function\r\n * @param {CB_AudioFile|string} audioObjectOrId - Used as the \"audioObjectOrId\" parameter when calling the {@link CB_AudioFileCache#removeAudioFile} method internally.\r\n * @param {boolean} [reload=false] - Used as the \"reload\" parameter when calling the {@link CB_AudioFileCache#removeAudioFile} method internally.\r\n * @param {boolean} [checkManually=false] - Used as the \"checkManually\" parameter when calling the {@link CB_AudioFileCache#removeAudioFile} method internally.\r\n * @returns {boolean|CB_AudioFile|null} Returns null if the given \"audioObjectOrId\" parameter is not a valid {@link CB_AudioFile} object or its {@link CB_AudioFile#id} property is not set or when the \"audioObjectOrId\" parameter is an empty string. Returns a {@link CB_AudioFile} object, the given one through the \"audioObjectOrId\" parameter of the first one removed (it should be the first and unique one removed as the ID must be unique), if the {@link CB_AudioFileCache#createAudioFile} method is called internally (it will reuse this {@link CB_AudioFile} object). Otherwise, returns true if all goes well.\r\n */","meta":{"range":[61606,61794],"filename":"CB_AudioFileSprites.js","lineno":870,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100013905","name":"CB_AudioFileSprites.prototype.removeAudioFile","type":"FunctionExpression","paramnames":["audioObjectOrId","reload","checkManually"]}},"description":"<p>If found, takes a given {@link CB_AudioFile} object off the {@link CB_AudioFileCache#audioFiles} property (and reloads it if we want to). NOTE: It does neither destroy nor remove the {@link CB_AudioFile} object so it can be used for other purposes (and if a {@link CB_AudioFile} object is given, it will be tried to be reused by the {@link CB_AudioFileCache#createAudioFile} method internally if it is called). Uses the {@link CB_AudioFileCache#removeAudioFile} method internally and returns its returning value. Internal usage only recommended.</p>","kind":"function","params":[{"type":{"names":["CB_AudioFile","string"]},"description":"<p>Used as the &quot;audioObjectOrId&quot; parameter when calling the {@link CB_AudioFileCache#removeAudioFile} method internally.</p>","name":"audioObjectOrId"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>Used as the &quot;reload&quot; parameter when calling the {@link CB_AudioFileCache#removeAudioFile} method internally.</p>","name":"reload"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>Used as the &quot;checkManually&quot; parameter when calling the {@link CB_AudioFileCache#removeAudioFile} method internally.</p>","name":"checkManually"}],"returns":[{"type":{"names":["boolean","CB_AudioFile","null"]},"description":"<p>Returns null if the given &quot;audioObjectOrId&quot; parameter is not a valid {@link CB_AudioFile} object or its {@link CB_AudioFile#id} property is not set or when the &quot;audioObjectOrId&quot; parameter is an empty string. Returns a {@link CB_AudioFile} object, the given one through the &quot;audioObjectOrId&quot; parameter of the first one removed (it should be the first and unique one removed as the ID must be unique), if the {@link CB_AudioFileCache#createAudioFile} method is called internally (it will reuse this {@link CB_AudioFile} object). Otherwise, returns true if all goes well.</p>"}],"name":"removeAudioFile","longname":"CB_AudioFileSprites#removeAudioFile","memberof":"CB_AudioFileSprites","scope":"instance"},{"comment":"/**\r\n * Tries to purge the audio file cache until it reaches a desired number of {@link CB_AudioFile} objects internally (set in the {@link CB_AudioFileCache#audioFiles} property), by removing and destroying some of the current {@link CB_AudioFile} objects. For performance purposes. Uses the {@link CB_AudioFileCache#purge} method internally and returns its returning value.\r\n * @function\r\n * @param {integer} desiredNumber - Used as the \"desiredNumber\" parameter when calling the {@link CB_AudioFileCache#purge} method internally.\r\n * @param {boolean} [setAsMinimumAudioFiles=false] - Used as the \"setAsMinimumAudioFiles\" parameter when calling the {@link CB_AudioFileCache#purge} method internally.\r\n * @param {boolean} [includePlaying=false] - Used as the \"includePlaying\" parameter when calling the {@link CB_AudioFileCache#purge} method internally.\r\n * @param {boolean} [stopSounds=false] - Used as the \"stopSounds\" parameter when calling the {@link CB_AudioFileCache#purge} method internally.\r\n * @param {array} [statuses=Array({@link CB_AudioFile.LOADING}, {@link CB_AudioFile.UNCHECKED}, {@link CB_AudioFile.CHECKING}, {@link CB_AudioFile.LOADED})] - Used as the \"statuses\" parameter when calling the {@link CB_AudioFileCache#purge} method internally.\r\n * @returns {integer} Returns the number of {@link CB_AudioFile} objects removed.\r\n */","meta":{"range":[63157,63399],"filename":"CB_AudioFileSprites.js","lineno":886,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100013927","name":"CB_AudioFileSprites.prototype.purge","type":"FunctionExpression","paramnames":["desiredNumber","setAsMinimumAudioFiles","includePlaying","stopSounds","statuses"]}},"description":"<p>Tries to purge the audio file cache until it reaches a desired number of {@link CB_AudioFile} objects internally (set in the {@link CB_AudioFileCache#audioFiles} property), by removing and destroying some of the current {@link CB_AudioFile} objects. For performance purposes. Uses the {@link CB_AudioFileCache#purge} method internally and returns its returning value.</p>","kind":"function","params":[{"type":{"names":["integer"]},"description":"<p>Used as the &quot;desiredNumber&quot; parameter when calling the {@link CB_AudioFileCache#purge} method internally.</p>","name":"desiredNumber"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>Used as the &quot;setAsMinimumAudioFiles&quot; parameter when calling the {@link CB_AudioFileCache#purge} method internally.</p>","name":"setAsMinimumAudioFiles"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>Used as the &quot;includePlaying&quot; parameter when calling the {@link CB_AudioFileCache#purge} method internally.</p>","name":"includePlaying"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>Used as the &quot;stopSounds&quot; parameter when calling the {@link CB_AudioFileCache#purge} method internally.</p>","name":"stopSounds"},{"type":{"names":["array"]},"optional":true,"defaultvalue":"Array({@link CB_AudioFile.LOADING}, {@link CB_AudioFile.UNCHECKED}, {@link CB_AudioFile.CHECKING}, {@link CB_AudioFile.LOADED})","description":"<p>Used as the &quot;statuses&quot; parameter when calling the {@link CB_AudioFileCache#purge} method internally.</p>","name":"statuses"}],"returns":[{"type":{"names":["integer"]},"description":"<p>Returns the number of {@link CB_AudioFile} objects removed.</p>"}],"name":"purge","longname":"CB_AudioFileSprites#purge","memberof":"CB_AudioFileSprites","scope":"instance"},{"comment":"/**\r\n * Returns a free {@link CB_AudioFile} object, if any (from the {@link CB_AudioFileCache#audioFilesFree} property). Note that this will call the internal {@link CB_AudioFileCache#_createNewAudioFilesIfNeeded} method that could end creating a new {@link CB_AudioFile} object if needed. Uses the {@link CB_AudioFileCache#getFreeAudioFile} method internally and returns its returning value.\r\n * @function\r\n * @param {boolean} [popIt=false] - Used as the \"popIt\" parameter when calling the {@link CB_AudioFileCache#getFreeAudioFile} method internally.\r\n * @returns {CB_AudioFileCache.getFreeAudioFile_OBJECT} Returns a {@link CB_AudioFileCache.getFreeAudioFile_OBJECT} object.\r\n */","meta":{"range":[64092,64216],"filename":"CB_AudioFileSprites.js","lineno":898,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100013953","name":"CB_AudioFileSprites.prototype.getFreeAudioFile","type":"FunctionExpression","paramnames":["popIt"]}},"description":"<p>Returns a free {@link CB_AudioFile} object, if any (from the {@link CB_AudioFileCache#audioFilesFree} property). Note that this will call the internal {@link CB_AudioFileCache#_createNewAudioFilesIfNeeded} method that could end creating a new {@link CB_AudioFile} object if needed. Uses the {@link CB_AudioFileCache#getFreeAudioFile} method internally and returns its returning value.</p>","kind":"function","params":[{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>Used as the &quot;popIt&quot; parameter when calling the {@link CB_AudioFileCache#getFreeAudioFile} method internally.</p>","name":"popIt"}],"returns":[{"type":{"names":["CB_AudioFileCache.getFreeAudioFile_OBJECT"]},"description":"<p>Returns a {@link CB_AudioFileCache.getFreeAudioFile_OBJECT} object.</p>"}],"name":"getFreeAudioFile","longname":"CB_AudioFileSprites#getFreeAudioFile","memberof":"CB_AudioFileSprites","scope":"instance"},{"comment":"/**\r\n * Tells whether a desired {@link CB_AudioFile} object is free (it is in the {@link CB_AudioFileCache#audioFilesFree} property) or not, by its identifier. A free {@link CB_AudioFile} object is an object which is not being used and it is available to be used. Uses the {@link CB_AudioFileCache#isAudioFileFree} method internally and returns its returning value.\r\n * @function\r\n * @param {string} id - Used as the \"id\" parameter when calling the {@link CB_AudioFileCache#isAudioFileFree} method internally.\r\n * @returns {boolean} Returns whether a desired {@link CB_AudioFile} object is free (it is in the {@link CB_AudioFileCache#audioFilesFree} property) or not, by its identifier. A free {@link CB_AudioFile} object is an object which is not being used and it is available to be used.\r\n */","meta":{"range":[65022,65138],"filename":"CB_AudioFileSprites.js","lineno":910,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100013971","name":"CB_AudioFileSprites.prototype.isAudioFileFree","type":"FunctionExpression","paramnames":["id"]}},"description":"<p>Tells whether a desired {@link CB_AudioFile} object is free (it is in the {@link CB_AudioFileCache#audioFilesFree} property) or not, by its identifier. A free {@link CB_AudioFile} object is an object which is not being used and it is available to be used. Uses the {@link CB_AudioFileCache#isAudioFileFree} method internally and returns its returning value.</p>","kind":"function","params":[{"type":{"names":["string"]},"description":"<p>Used as the &quot;id&quot; parameter when calling the {@link CB_AudioFileCache#isAudioFileFree} method internally.</p>","name":"id"}],"returns":[{"type":{"names":["boolean"]},"description":"<p>Returns whether a desired {@link CB_AudioFile} object is free (it is in the {@link CB_AudioFileCache#audioFilesFree} property) or not, by its identifier. A free {@link CB_AudioFile} object is an object which is not being used and it is available to be used.</p>"}],"name":"isAudioFileFree","longname":"CB_AudioFileSprites#isAudioFileFree","memberof":"CB_AudioFileSprites","scope":"instance"},{"comment":"/**\r\n * Clears the sound instances (created by the {@link CB_AudioFileCache#play} method) which have been cancelled. Uses the {@link CB_AudioFileCache#clearSoundInstances} method internally and returns its returning value.\r\n * @function\r\n * @param {boolean} [clearWithObjectAssociated=false] - Used as the \"clearWithObjectAssociated\" parameter when calling the {@link CB_AudioFileCache#clearSoundInstances} method internally.\r\n * @returns {integer} Returns the number of cleared sound instances.\r\n */","meta":{"range":[65649,66524],"filename":"CB_AudioFileSprites.js","lineno":922,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100013989","name":"CB_AudioFileSprites.prototype.clearSoundInstances","type":"FunctionExpression","paramnames":["clearWithObjectAssociated"]},"vars":{"cleared":"CB_AudioFileSprites#clearSoundInstances~cleared","soundInstances":"CB_AudioFileSprites#clearSoundInstances~soundInstances","soundInstancesLength":"CB_AudioFileSprites#clearSoundInstances~soundInstancesLength","spriteSoundInstances":"CB_AudioFileSprites#clearSoundInstances~spriteSoundInstances","sprites":"CB_AudioFileSprites#clearSoundInstances~sprites","y":"CB_AudioFileSprites#clearSoundInstances~y","spriteId":"CB_AudioFileSprites#clearSoundInstances~spriteId","spriteSoundInstances[undefined]":"CB_AudioFileSprites#clearSoundInstances~spriteSoundInstances.undefined]","x":"CB_AudioFileSprites#clearSoundInstances~x","spriteSoundInstances[undefined][undefined]":"CB_AudioFileSprites#clearSoundInstances~spriteSoundInstances.undefined][undefined]","this.spriteSoundInstances":"CB_AudioFileSprites#spriteSoundInstances"}},"description":"<p>Clears the sound instances (created by the {@link CB_AudioFileCache#play} method) which have been cancelled. Uses the {@link CB_AudioFileCache#clearSoundInstances} method internally and returns its returning value.</p>","kind":"function","params":[{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>Used as the &quot;clearWithObjectAssociated&quot; parameter when calling the {@link CB_AudioFileCache#clearSoundInstances} method internally.</p>","name":"clearWithObjectAssociated"}],"returns":[{"type":{"names":["integer"]},"description":"<p>Returns the number of cleared sound instances.</p>"}],"name":"clearSoundInstances","longname":"CB_AudioFileSprites#clearSoundInstances","memberof":"CB_AudioFileSprites","scope":"instance"},{"comment":"/**\r\n * Cancels (to prevent they start playing) or enables all sound instances (created by the {@link CB_AudioFileCache#play} method). Uses the {@link CB_AudioFileCache#cancelSoundInstances} method internally and returns its returning value.\r\n * @function\r\n * @param {boolean} [cancel=false] - Used as the \"cancel\" parameter when calling the {@link CB_AudioFileCache#cancelSoundInstances} method internally.\r\n * @param {boolean} [affectWithObjectAssociated=false] - Used as the \"affectWithObjectAssociated\" parameter when calling the {@link CB_AudioFileCache#cancelSoundInstances} method internally.\r\n * @returns {integer} Returns the number of sound instances modified.\r\n */","meta":{"range":[67211,67401],"filename":"CB_AudioFileSprites.js","lineno":960,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100014105","name":"CB_AudioFileSprites.prototype.cancelSoundInstances","type":"FunctionExpression","paramnames":["cancel","affectWithObjectAssociated"]}},"description":"<p>Cancels (to prevent they start playing) or enables all sound instances (created by the {@link CB_AudioFileCache#play} method). Uses the {@link CB_AudioFileCache#cancelSoundInstances} method internally and returns its returning value.</p>","kind":"function","params":[{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>Used as the &quot;cancel&quot; parameter when calling the {@link CB_AudioFileCache#cancelSoundInstances} method internally.</p>","name":"cancel"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>Used as the &quot;affectWithObjectAssociated&quot; parameter when calling the {@link CB_AudioFileCache#cancelSoundInstances} method internally.</p>","name":"affectWithObjectAssociated"}],"returns":[{"type":{"names":["integer"]},"description":"<p>Returns the number of sound instances modified.</p>"}],"name":"cancelSoundInstances","longname":"CB_AudioFileSprites#cancelSoundInstances","memberof":"CB_AudioFileSprites","scope":"instance"},{"comment":"/**\r\n * Cancels (to prevent it starts playing) or enables a sound instance (created by the {@link CB_AudioFileCache#play} method), by its identifier. Uses the {@link CB_AudioFileCache#cancelSoundInstance} method internally and returns its returning value.\r\n * @function\r\n * @param {integer} soundInstanceId - Used as the \"soundInstanceId\" parameter when calling the {@link CB_AudioFileCache#cancelSoundInstance} method internally.\r\n * @param {boolean} [cancel=false] - Used as the \"cancel\" parameter when calling the {@link CB_AudioFileCache#cancelSoundInstance} method internally.\r\n * @param {boolean} [affectWithObjectAssociated=false] - Used as the \"affectWithObjectAssociated\" parameter when calling the {@link CB_AudioFileCache#cancelSoundInstance} method internally.\r\n * @returns {boolean} Returns true if the sound instance has been modified or false otherwise.\r\n */","meta":{"range":[68287,68509],"filename":"CB_AudioFileSprites.js","lineno":974,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100014125","name":"CB_AudioFileSprites.prototype.cancelSoundInstance","type":"FunctionExpression","paramnames":["soundInstanceId","cancel","affectWithObjectAssociated"]}},"description":"<p>Cancels (to prevent it starts playing) or enables a sound instance (created by the {@link CB_AudioFileCache#play} method), by its identifier. Uses the {@link CB_AudioFileCache#cancelSoundInstance} method internally and returns its returning value.</p>","kind":"function","params":[{"type":{"names":["integer"]},"description":"<p>Used as the &quot;soundInstanceId&quot; parameter when calling the {@link CB_AudioFileCache#cancelSoundInstance} method internally.</p>","name":"soundInstanceId"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>Used as the &quot;cancel&quot; parameter when calling the {@link CB_AudioFileCache#cancelSoundInstance} method internally.</p>","name":"cancel"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>Used as the &quot;affectWithObjectAssociated&quot; parameter when calling the {@link CB_AudioFileCache#cancelSoundInstance} method internally.</p>","name":"affectWithObjectAssociated"}],"returns":[{"type":{"names":["boolean"]},"description":"<p>Returns true if the sound instance has been modified or false otherwise.</p>"}],"name":"cancelSoundInstance","longname":"CB_AudioFileSprites#cancelSoundInstance","memberof":"CB_AudioFileSprites","scope":"instance"},{"comment":"/**\r\n * Gets the {@link CB_AudioFile} object associated to a given sound instance ID (created by the {@link CB_AudioFileCache#play} method), if any, or null otherwise. Uses the {@link CB_AudioFileCache#getAudioFileBySoundInstanceId} method internally and returns its returning value.\r\n * @function\r\n * @param {integer} soundInstanceId - Used as the \"soundInstanceId\" parameter when calling the {@link CB_AudioFileCache#getAudioFileBySoundInstanceId} method internally.\r\n * @param {boolean} [avoidCancelled=false] - Used as the \"avoidCancelled\" parameter when calling the {@link CB_AudioFileCache#getAudioFileBySoundInstanceId} method internally.\r\n * @returns {CB_AudioFile|null} Returns the {@link CB_AudioFile} object associated to a given sound instance ID, if any, or null otherwise.\r\n */","meta":{"range":[69312,69514],"filename":"CB_AudioFileSprites.js","lineno":987,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100014147","name":"CB_AudioFileSprites.prototype.getAudioFileBySoundInstanceId","type":"FunctionExpression","paramnames":["soundInstanceId","avoidCancelled"]}},"description":"<p>Gets the {@link CB_AudioFile} object associated to a given sound instance ID (created by the {@link CB_AudioFileCache#play} method), if any, or null otherwise. Uses the {@link CB_AudioFileCache#getAudioFileBySoundInstanceId} method internally and returns its returning value.</p>","kind":"function","params":[{"type":{"names":["integer"]},"description":"<p>Used as the &quot;soundInstanceId&quot; parameter when calling the {@link CB_AudioFileCache#getAudioFileBySoundInstanceId} method internally.</p>","name":"soundInstanceId"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>Used as the &quot;avoidCancelled&quot; parameter when calling the {@link CB_AudioFileCache#getAudioFileBySoundInstanceId} method internally.</p>","name":"avoidCancelled"}],"returns":[{"type":{"names":["CB_AudioFile","null"]},"description":"<p>Returns the {@link CB_AudioFile} object associated to a given sound instance ID, if any, or null otherwise.</p>"}],"name":"getAudioFileBySoundInstanceId","longname":"CB_AudioFileSprites#getAudioFileBySoundInstanceId","memberof":"CB_AudioFileSprites","scope":"instance"},{"comment":"/**\r\n * Plays a sound of the cache (if there is any free), using a sprite if desired. If a sound cannot be played, this method can call itself internally again and again (with most of the given parameters being the same, depending on the circumstances) to try to play the sound until a desired time limit is reached. If a {@link CB_AudioFile} object cannot be played and it is determined necessary, it will try to reload it internally (by calling the {@link CB_AudioFileCache#removeAudioFile} method). Uses the {@link CB_AudioFileCache#play} method internally and returns its returning value. Internal usage only recommended. To play a sprite, better use the {@link CB_AudioFileSprites#playSprite} method instead.\r\n * @function\r\n * @param {number} [startAt=0 | {@link CB_AudioFile_API.WAAPI#lastStartAt} | {@link CB_AudioFile_API.SM2#lastStartAt} | {@link CB_AudioFile_API.ACMP#lastStartAt} | {@link CB_AudioFile_API.AAPI#lastStartAt} | stopAt] - Used as the \"startAt\" parameter when calling the {@link CB_AudioFileCache#play} method internally.\r\n * @param {number} [stopAt={@link CB_AudioFile_API.WAAPI#getDuration}() | {@link CB_AudioFile_API.SM2#getDuration}() | {@link CB_AudioFile_API.ACMP#getDuration}() | {@link CB_AudioFile_API.AAPI#getDuration}()] - Used as the \"stopAt\" parameter when calling the {@link CB_AudioFileCache#play} method internally.\r\n * @param {boolean} [loop={@link CB_AudioFile#loop}] - Used as the \"loop\" parameter when calling the {@link CB_AudioFileCache#play} method internally.\r\n * @param {number} [volume=CB_Configuration.CrossBase.CB_AudioFile_AudioFileCache_USE_SPEAKER_VOLUME_AS_DEFAULT ? CB_Speaker.getVolume() : CB_Configuration.CrossBase.CB_Speaker_DEFAULT_VOLUME] - Used as the \"volume\" parameter when calling the {@link CB_AudioFileCache#play} method internally.\r\n * @param {boolean} [allowedRecursiveDelay={@link CB_Configuration.CrossBase.CB_AudioFile_AudioFileCache_ALLOWED_RECURSIVE_DELAY_DEFAULT}] - Used as the \"allowedRecursiveDelay\" parameter when calling the {@link CB_AudioFileCache#play} method internally.\r\n * @param {boolean} [allowedRecursiveDelaySkipping=stopAt-startAt] - Used as the \"allowedRecursiveDelaySkipping\" parameter when calling the {@link CB_AudioFileCache#play} method internally.\r\n * @param {function} [onPlayStart] - Used as the \"onPlayStart\" parameter when calling the {@link CB_AudioFileCache#play} method internally.\r\n * @param {function} [onStop] - Used as the \"onStop\" parameter when calling the {@link CB_AudioFileCache#play} method internally.\r\n * @param {string} [spriteId='_WITHOUT_SPRITE_ASSOCIATED'] - The identifier for the sprite. Internal usage only recommended.\r\n * @returns {integer|null} Returns null if a sprite identifier was given but it could not be found. Otherwise, returns the sound instance ID used if there was one free or null otherwise. To get a sound instance returned does not mean necessarily that the sound started playing so it is necessary to use a callback function as the \"onPlayStart\" parameter for checking this. The sound instance created (if any), will be cancelled automatically once the sound is stopped.\r\n */","meta":{"range":[72654,73508],"filename":"CB_AudioFileSprites.js","lineno":1007,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100014167","name":"CB_AudioFileSprites.prototype.play","type":"FunctionExpression","paramnames":["startAt","stopAt","loop","volume","allowedRecursiveDelay","allowedRecursiveDelaySkipping","onPlayStart","onStop","spriteId"]},"vars":{"spriteId":"CB_AudioFileSprites#play~spriteId","soundInstance":"CB_AudioFileSprites#play~soundInstance","this.spriteSoundInstances[undefined][undefined]":"CB_AudioFileSprites#spriteSoundInstances[undefined][undefined]"}},"description":"<p>Plays a sound of the cache (if there is any free), using a sprite if desired. If a sound cannot be played, this method can call itself internally again and again (with most of the given parameters being the same, depending on the circumstances) to try to play the sound until a desired time limit is reached. If a {@link CB_AudioFile} object cannot be played and it is determined necessary, it will try to reload it internally (by calling the {@link CB_AudioFileCache#removeAudioFile} method). Uses the {@link CB_AudioFileCache#play} method internally and returns its returning value. Internal usage only recommended. To play a sprite, better use the {@link CB_AudioFileSprites#playSprite} method instead.</p>","kind":"function","params":[{"type":{"names":["number"]},"optional":true,"defaultvalue":"0 | {@link CB_AudioFile_API.WAAPI#lastStartAt} | {@link CB_AudioFile_API.SM2#lastStartAt} | {@link CB_AudioFile_API.ACMP#lastStartAt} | {@link CB_AudioFile_API.AAPI#lastStartAt} | stopAt","description":"<p>Used as the &quot;startAt&quot; parameter when calling the {@link CB_AudioFileCache#play} method internally.</p>","name":"startAt"},{"type":{"names":["number"]},"optional":true,"defaultvalue":"{@link CB_AudioFile_API.WAAPI#getDuration}() | {@link CB_AudioFile_API.SM2#getDuration}() | {@link CB_AudioFile_API.ACMP#getDuration}() | {@link CB_AudioFile_API.AAPI#getDuration}()","description":"<p>Used as the &quot;stopAt&quot; parameter when calling the {@link CB_AudioFileCache#play} method internally.</p>","name":"stopAt"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":"{@link CB_AudioFile#loop}","description":"<p>Used as the &quot;loop&quot; parameter when calling the {@link CB_AudioFileCache#play} method internally.</p>","name":"loop"},{"type":{"names":["number"]},"optional":true,"defaultvalue":"CB_Configuration.CrossBase.CB_AudioFile_AudioFileCache_USE_SPEAKER_VOLUME_AS_DEFAULT ? CB_Speaker.getVolume() : CB_Configuration.CrossBase.CB_Speaker_DEFAULT_VOLUME","description":"<p>Used as the &quot;volume&quot; parameter when calling the {@link CB_AudioFileCache#play} method internally.</p>","name":"volume"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":"{@link CB_Configuration.CrossBase.CB_AudioFile_AudioFileCache_ALLOWED_RECURSIVE_DELAY_DEFAULT}","description":"<p>Used as the &quot;allowedRecursiveDelay&quot; parameter when calling the {@link CB_AudioFileCache#play} method internally.</p>","name":"allowedRecursiveDelay"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":"stopAt-startAt","description":"<p>Used as the &quot;allowedRecursiveDelaySkipping&quot; parameter when calling the {@link CB_AudioFileCache#play} method internally.</p>","name":"allowedRecursiveDelaySkipping"},{"type":{"names":["function"]},"optional":true,"description":"<p>Used as the &quot;onPlayStart&quot; parameter when calling the {@link CB_AudioFileCache#play} method internally.</p>","name":"onPlayStart"},{"type":{"names":["function"]},"optional":true,"description":"<p>Used as the &quot;onStop&quot; parameter when calling the {@link CB_AudioFileCache#play} method internally.</p>","name":"onStop"},{"type":{"names":["string"]},"optional":true,"defaultvalue":"'_WITHOUT_SPRITE_ASSOCIATED'","description":"<p>The identifier for the sprite. Internal usage only recommended.</p>","name":"spriteId"}],"returns":[{"type":{"names":["integer","null"]},"description":"<p>Returns null if a sprite identifier was given but it could not be found. Otherwise, returns the sound instance ID used if there was one free or null otherwise. To get a sound instance returned does not mean necessarily that the sound started playing so it is necessary to use a callback function as the &quot;onPlayStart&quot; parameter for checking this. The sound instance created (if any), will be cancelled automatically once the sound is stopped.</p>"}],"name":"play","longname":"CB_AudioFileSprites#play","memberof":"CB_AudioFileSprites","scope":"instance"},{"comment":"/**\r\n * Alias for {@link CB_AudioFileSprites#executeFunctionAll}.\r\n * @function CB_AudioFileSprites#executeAll\r\n * @see {@link CB_AudioFileSprites#executeFunctionAll}\r\n */","meta":{"filename":"CB_AudioFileSprites.js","lineno":1024,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{}},"description":"<p>Alias for {@link CB_AudioFileSprites#executeFunctionAll}.</p>","kind":"function","name":"executeAll","see":["{@link CB_AudioFileSprites#executeFunctionAll}"],"memberof":"CB_AudioFileSprites","longname":"CB_AudioFileSprites#executeAll","scope":"instance"},{"comment":"/**\r\n * Alias for {@link CB_AudioFileSprites#executeFunctionAll}.\r\n * @function CB_AudioFileSprites#forEach\r\n * @see {@link CB_AudioFileSprites#executeFunctionAll}\r\n */","meta":{"filename":"CB_AudioFileSprites.js","lineno":1029,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{}},"description":"<p>Alias for {@link CB_AudioFileSprites#executeFunctionAll}.</p>","kind":"function","name":"forEach","see":["{@link CB_AudioFileSprites#executeFunctionAll}"],"memberof":"CB_AudioFileSprites","longname":"CB_AudioFileSprites#forEach","scope":"instance"},{"comment":"/**\r\n * Performs a desired action, using the provided function, on all the existing {@link CB_AudioFile} objects or on the desired ones (if provided). Uses the {@link CB_AudioFileCache#executeFunctionAll} method internally and returns its returning value.\r\n * @function\r\n * @param {CB_Arrays.executeFunctionAll_ON_LOOP_CALLBACK} functionEach - Used as the \"functionEach\" parameter when calling the {@link CB_AudioFileSprites#executeFunctionAll} method internally.\r\n * @param {number|CB_Arrays.executeFunctionAll_ON_LOOP_CALLBACK} [delayBetweenEach=0] - Used as the \"delayBetweenEach\" parameter when calling the {@link CB_AudioFileCache#executeFunctionAll} method internally.\r\n * @param {array} [audioFiles={@link CB_AudioFileCache#audioFiles}] - Used as the \"audioFiles\" parameter when calling the {@link CB_AudioFileCache#executeFunctionAll} method internally.\r\n * @param {boolean} [returnSetTimeoutsArray=false] - Used as the \"returnSetTimeoutsArray\" parameter when calling the {@link CB_AudioFileCache#executeFunctionAll} method internally.\r\n * @param {boolean} [delayBetweenEachAffectsFirst=false] - Used as the \"delayBetweenEachAffectsFirst\" parameter when calling the {@link CB_AudioFileCache#executeFunctionAll} method internally.\r\n * @param {CB_Arrays.executeFunctionAll_ON_FINISH_CALLBACK} [functionFinish] - Function that will be called for when it has finished looping all the items. The first parameter will be the array which was looped, the second parameter will be the number of times that the \"functionEach\" callback was called (the most likely, matches the number of elements unless they are undefined or null), and the third parameter will be the maximum \"delay\" used, being \"this\" the array itself.\r\n * @returns {integer|array} If the \"returnSetTimeoutsArray\" parameter is set to false, it will return the number of calls to the \"functionEach\" function that were performed (which should be the same number as the {@link CB_AudioFile} objects given in the \"audioFiles\" parameter). Otherwise, if the \"returnSetTimeoutsArray\" is set to true, it will return a numeric array with a {@link CB_AudioFileCache.executeFunctionAll_OBJECT} object for each {@link CB_AudioFile} given. The length of this array will also be the number of calls to the \"functionEach\" function that were performed. Note that if a value greater than 0 (zero) for the \"delayBetweenEach\" parameter has been provided, perhaps not all calls of the \"functionEach\" function will have been performed yet when exiting this method because of the asynchronous nature of the [setTimeout]{@link https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/setTimeout} function.\r\n */","meta":{"range":[76544,76969],"filename":"CB_AudioFileSprites.js","lineno":1045,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100014264","name":"CB_AudioFileSprites.prototype.executeFunctionAll","type":"AssignmentExpression","value":"CB_AudioFileSprites.prototype.executeAll","paramnames":[]}},"description":"<p>Performs a desired action, using the provided function, on all the existing {@link CB_AudioFile} objects or on the desired ones (if provided). Uses the {@link CB_AudioFileCache#executeFunctionAll} method internally and returns its returning value.</p>","kind":"function","params":[{"type":{"names":["CB_Arrays.executeFunctionAll_ON_LOOP_CALLBACK"]},"description":"<p>Used as the &quot;functionEach&quot; parameter when calling the {@link CB_AudioFileSprites#executeFunctionAll} method internally.</p>","name":"functionEach"},{"type":{"names":["number","CB_Arrays.executeFunctionAll_ON_LOOP_CALLBACK"]},"optional":true,"defaultvalue":0,"description":"<p>Used as the &quot;delayBetweenEach&quot; parameter when calling the {@link CB_AudioFileCache#executeFunctionAll} method internally.</p>","name":"delayBetweenEach"},{"type":{"names":["array"]},"optional":true,"defaultvalue":"{@link CB_AudioFileCache#audioFiles}","description":"<p>Used as the &quot;audioFiles&quot; parameter when calling the {@link CB_AudioFileCache#executeFunctionAll} method internally.</p>","name":"audioFiles"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>Used as the &quot;returnSetTimeoutsArray&quot; parameter when calling the {@link CB_AudioFileCache#executeFunctionAll} method internally.</p>","name":"returnSetTimeoutsArray"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>Used as the &quot;delayBetweenEachAffectsFirst&quot; parameter when calling the {@link CB_AudioFileCache#executeFunctionAll} method internally.</p>","name":"delayBetweenEachAffectsFirst"},{"type":{"names":["CB_Arrays.executeFunctionAll_ON_FINISH_CALLBACK"]},"optional":true,"description":"<p>Function that will be called for when it has finished looping all the items. The first parameter will be the array which was looped, the second parameter will be the number of times that the &quot;functionEach&quot; callback was called (the most likely, matches the number of elements unless they are undefined or null), and the third parameter will be the maximum &quot;delay&quot; used, being &quot;this&quot; the array itself.</p>","name":"functionFinish"}],"returns":[{"type":{"names":["integer","array"]},"description":"<p>If the &quot;returnSetTimeoutsArray&quot; parameter is set to false, it will return the number of calls to the &quot;functionEach&quot; function that were performed (which should be the same number as the {@link CB_AudioFile} objects given in the &quot;audioFiles&quot; parameter). Otherwise, if the &quot;returnSetTimeoutsArray&quot; is set to true, it will return a numeric array with a {@link CB_AudioFileCache.executeFunctionAll_OBJECT} object for each {@link CB_AudioFile} given. The length of this array will also be the number of calls to the &quot;functionEach&quot; function that were performed. Note that if a value greater than 0 (zero) for the &quot;delayBetweenEach&quot; parameter has been provided, perhaps not all calls of the &quot;functionEach&quot; function will have been performed yet when exiting this method because of the asynchronous nature of the [setTimeout]{@link https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/setTimeout} function.</p>"}],"name":"executeFunctionAll","longname":"CB_AudioFileSprites#executeFunctionAll","memberof":"CB_AudioFileSprites","scope":"instance"},{"comment":"/**\r\n * Destroys all the {@link CB_AudioFile} objects and frees memory, by calling {@link CB_AudioFile#destructor}(stopSounds, false, true). Uses the {@link CB_AudioFileCache#destroyAll} method internally and returns its returning value.\r\n * @function\r\n * @param {boolean} [stopSounds=false] - Used as the \"stopSounds\" parameter when calling the {@link CB_AudioFileCache#destroyAll} method internally.\r\n * @returns {integer} Returns the number of {@link CB_AudioFile} objects whose {@link CB_AudioFile#destructor} has been called.\r\n */","meta":{"range":[77515,77637],"filename":"CB_AudioFileSprites.js","lineno":1057,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100014304","name":"CB_AudioFileSprites.prototype.destroyAll","type":"FunctionExpression","paramnames":["stopSounds"]}},"description":"<p>Destroys all the {@link CB_AudioFile} objects and frees memory, by calling {@link CB_AudioFile#destructor}(stopSounds, false, true). Uses the {@link CB_AudioFileCache#destroyAll} method internally and returns its returning value.</p>","kind":"function","params":[{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>Used as the &quot;stopSounds&quot; parameter when calling the {@link CB_AudioFileCache#destroyAll} method internally.</p>","name":"stopSounds"}],"returns":[{"type":{"names":["integer"]},"description":"<p>Returns the number of {@link CB_AudioFile} objects whose {@link CB_AudioFile#destructor} has been called.</p>"}],"name":"destroyAll","longname":"CB_AudioFileSprites#destroyAll","memberof":"CB_AudioFileSprites","scope":"instance"},{"comment":"/**\r\n * Checks whether each {@link CB_AudioFile} object whose {@link CB_AudioFile#getStatus} method returns the \"unchecked\" value (which belongs to the value of the {@link CB_AudioFile#UNCHECKED} property) can be played or not. After checking, if the audio can be played, the status of the {@link CB_AudioFile} object will get the value of {@link CB_AudioFile.LOADED}. Otherwise, if it cannot be played, the status of the {@link CB_AudioFile} object will get the value of {@link CB_AudioFile.FAILED}. If a {@link CB_AudioFile} object cannot be played and it is determined necessary, it will try to reload it internally (by calling the {@link CB_AudioFileCache#removeAudioFile} method). It will call the {@link CB_AudioFileCache#clearAudioFiles} method internally after finishing. Uses the {@link CB_AudioFileCache#checkPlayingAll} method internally and returns its returning value. Recommended to be called through a user-driven event (as onClick, onTouch, etc.).\r\n * @function\r\n * @param {CB_AudioFileCache.checkPlayingAll_CALLBACK_OK} [callbackOk] - Used as the \"callbackOk\" parameter when calling the {@link CB_AudioFileCache#checkPlayingAll} method internally.\r\n * @param {CB_AudioFileCache.checkPlayingAll_CALLBACK_ERROR} [callbackError] - Used as the \"callbackError\" parameter when calling the {@link CB_AudioFileCache#checkPlayingAll} method internally.\r\n * @param {boolean} [ignoreQueue=false] - Used as the \"ignoreQueue\" parameter when calling the {@link CB_AudioFileCache#checkPlayingAll} method internally.\r\n * @returns {integer} Returns the number of {@link CB_AudioFile} objects whose status belonged to the \"unchecked\" value (the value of the {@link CB_AudioFile#UNCHECKED} property) before the execution of this method. It will return 0 (zero) if the method is tried to be executed while there is another previous call of it still running. It will also return 0 (zero) if the status of the audio file cache is not loaded (the {@link CB_AudioFileCache#status} property does not belong to the value set in the {@link CB_AudioFileCache.LOADED} property).\r\n */","meta":{"range":[79721,79909],"filename":"CB_AudioFileSprites.js","lineno":1071,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100014322","name":"CB_AudioFileSprites.prototype.checkPlayingAll","type":"FunctionExpression","paramnames":["callbackOk","callbackError","ignoreQueue"]}},"description":"<p>Checks whether each {@link CB_AudioFile} object whose {@link CB_AudioFile#getStatus} method returns the &quot;unchecked&quot; value (which belongs to the value of the {@link CB_AudioFile#UNCHECKED} property) can be played or not. After checking, if the audio can be played, the status of the {@link CB_AudioFile} object will get the value of {@link CB_AudioFile.LOADED}. Otherwise, if it cannot be played, the status of the {@link CB_AudioFile} object will get the value of {@link CB_AudioFile.FAILED}. If a {@link CB_AudioFile} object cannot be played and it is determined necessary, it will try to reload it internally (by calling the {@link CB_AudioFileCache#removeAudioFile} method). It will call the {@link CB_AudioFileCache#clearAudioFiles} method internally after finishing. Uses the {@link CB_AudioFileCache#checkPlayingAll} method internally and returns its returning value. Recommended to be called through a user-driven event (as onClick, onTouch, etc.).</p>","kind":"function","params":[{"type":{"names":["CB_AudioFileCache.checkPlayingAll_CALLBACK_OK"]},"optional":true,"description":"<p>Used as the &quot;callbackOk&quot; parameter when calling the {@link CB_AudioFileCache#checkPlayingAll} method internally.</p>","name":"callbackOk"},{"type":{"names":["CB_AudioFileCache.checkPlayingAll_CALLBACK_ERROR"]},"optional":true,"description":"<p>Used as the &quot;callbackError&quot; parameter when calling the {@link CB_AudioFileCache#checkPlayingAll} method internally.</p>","name":"callbackError"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>Used as the &quot;ignoreQueue&quot; parameter when calling the {@link CB_AudioFileCache#checkPlayingAll} method internally.</p>","name":"ignoreQueue"}],"returns":[{"type":{"names":["integer"]},"description":"<p>Returns the number of {@link CB_AudioFile} objects whose status belonged to the &quot;unchecked&quot; value (the value of the {@link CB_AudioFile#UNCHECKED} property) before the execution of this method. It will return 0 (zero) if the method is tried to be executed while there is another previous call of it still running. It will also return 0 (zero) if the status of the audio file cache is not loaded (the {@link CB_AudioFileCache#status} property does not belong to the value set in the {@link CB_AudioFileCache.LOADED} property).</p>"}],"name":"checkPlayingAll","longname":"CB_AudioFileSprites#checkPlayingAll","memberof":"CB_AudioFileSprites","scope":"instance"},{"comment":"/**\r\n * Tries to play all the {@link CB_AudioFile} objects by calling their {@link CB_AudioFile#play} method internally. If a {@link CB_AudioFile} object cannot be played and it is determined necessary, it will try to reload it internally (by calling the {@link CB_AudioFileCache#removeAudioFile} method). Uses the {@link CB_AudioFileCache#playAll} method internally and returns its returning value.\r\n * @function\r\n * @param {number} [startAt=0 | {@link CB_AudioFile_API.WAAPI#lastStartAt} | {@link CB_AudioFile_API.SM2#lastStartAt} | {@link CB_AudioFile_API.ACMP#lastStartAt} | {@link CB_AudioFile_API.AAPI#lastStartAt} | stopAt] - Used as the \"startAt\" parameter when calling the {@link CB_AudioFileCache#playAll} method internally.\r\n * @param {number} [stopAt={@link CB_AudioFile_API.WAAPI#getDuration}() | {@link CB_AudioFile_API.SM2#getDuration}() | {@link CB_AudioFile_API.ACMP#getDuration}() | {@link CB_AudioFile_API.AAPI#getDuration}()] - Used as the \"stopAt\" parameter when calling the {@link CB_AudioFileCache#playAll} method internally.\r\n * @param {boolean} [loop={@link CB_AudioFile#loop}] - Used as the \"loop\" parameter when calling the {@link CB_AudioFileCache#playAll} method internally.\r\n * @param {number} [volume=CB_Configuration.CrossBase.CB_AudioFile_AudioFileCache_USE_SPEAKER_VOLUME_AS_DEFAULT ? CB_Speaker.getVolume() : CB_Configuration.CrossBase.CB_Speaker_DEFAULT_VOLUME] - Used as the \"volume\" parameter when calling the {@link CB_AudioFileCache#playAll} method internally.\r\n * @param {boolean} [avoidDelayedPlay=false] - Used as the \"avoidDelayedPlay\" parameter when calling the {@link CB_AudioFileCache#playAll} method internally.\r\n * @param {boolean} [allowedRecursiveDelay={@link CB_Configuration.CrossBase.CB_AudioFile_AudioFileCache_ALLOWED_RECURSIVE_DELAY_DEFAULT}] - Used as the \"allowedRecursiveDelay\" parameter when calling the {@link CB_AudioFileCache#playAll} method internally.\r\n * @param {function} [onPlayStart] - Used as the \"onPlayStart\" parameter when calling the {@link CB_AudioFileCache#playAll} method internally.\r\n * @param {function} [onStop] - Used as the \"onStop\" parameter when calling the {@link CB_AudioFileCache#playAll} method internally.\r\n * @param {boolean} [includingPlaying=false] - Used as the \"includingPlaying\" parameter when calling the {@link CB_AudioFileCache#playAll} method internally.\r\n * @returns {integer} Returns the number of {@link CB_AudioFile} objects whose {@link CB_AudioFile#play} method did not return the value of \"-1\" (this does not mean necessarily that they could be played successfully).\r\n */","meta":{"range":[82506,82820],"filename":"CB_AudioFileSprites.js","lineno":1091,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100014344","name":"CB_AudioFileSprites.prototype.playAll","type":"FunctionExpression","paramnames":["startAt","stopAt","loop","volume","avoidDelayedPlay","allowedRecursiveDelay","onPlayStart","onStop","includingPlaying"]}},"description":"<p>Tries to play all the {@link CB_AudioFile} objects by calling their {@link CB_AudioFile#play} method internally. If a {@link CB_AudioFile} object cannot be played and it is determined necessary, it will try to reload it internally (by calling the {@link CB_AudioFileCache#removeAudioFile} method). Uses the {@link CB_AudioFileCache#playAll} method internally and returns its returning value.</p>","kind":"function","params":[{"type":{"names":["number"]},"optional":true,"defaultvalue":"0 | {@link CB_AudioFile_API.WAAPI#lastStartAt} | {@link CB_AudioFile_API.SM2#lastStartAt} | {@link CB_AudioFile_API.ACMP#lastStartAt} | {@link CB_AudioFile_API.AAPI#lastStartAt} | stopAt","description":"<p>Used as the &quot;startAt&quot; parameter when calling the {@link CB_AudioFileCache#playAll} method internally.</p>","name":"startAt"},{"type":{"names":["number"]},"optional":true,"defaultvalue":"{@link CB_AudioFile_API.WAAPI#getDuration}() | {@link CB_AudioFile_API.SM2#getDuration}() | {@link CB_AudioFile_API.ACMP#getDuration}() | {@link CB_AudioFile_API.AAPI#getDuration}()","description":"<p>Used as the &quot;stopAt&quot; parameter when calling the {@link CB_AudioFileCache#playAll} method internally.</p>","name":"stopAt"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":"{@link CB_AudioFile#loop}","description":"<p>Used as the &quot;loop&quot; parameter when calling the {@link CB_AudioFileCache#playAll} method internally.</p>","name":"loop"},{"type":{"names":["number"]},"optional":true,"defaultvalue":"CB_Configuration.CrossBase.CB_AudioFile_AudioFileCache_USE_SPEAKER_VOLUME_AS_DEFAULT ? CB_Speaker.getVolume() : CB_Configuration.CrossBase.CB_Speaker_DEFAULT_VOLUME","description":"<p>Used as the &quot;volume&quot; parameter when calling the {@link CB_AudioFileCache#playAll} method internally.</p>","name":"volume"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>Used as the &quot;avoidDelayedPlay&quot; parameter when calling the {@link CB_AudioFileCache#playAll} method internally.</p>","name":"avoidDelayedPlay"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":"{@link CB_Configuration.CrossBase.CB_AudioFile_AudioFileCache_ALLOWED_RECURSIVE_DELAY_DEFAULT}","description":"<p>Used as the &quot;allowedRecursiveDelay&quot; parameter when calling the {@link CB_AudioFileCache#playAll} method internally.</p>","name":"allowedRecursiveDelay"},{"type":{"names":["function"]},"optional":true,"description":"<p>Used as the &quot;onPlayStart&quot; parameter when calling the {@link CB_AudioFileCache#playAll} method internally.</p>","name":"onPlayStart"},{"type":{"names":["function"]},"optional":true,"description":"<p>Used as the &quot;onStop&quot; parameter when calling the {@link CB_AudioFileCache#playAll} method internally.</p>","name":"onStop"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>Used as the &quot;includingPlaying&quot; parameter when calling the {@link CB_AudioFileCache#playAll} method internally.</p>","name":"includingPlaying"}],"returns":[{"type":{"names":["integer"]},"description":"<p>Returns the number of {@link CB_AudioFile} objects whose {@link CB_AudioFile#play} method did not return the value of &quot;-1&quot; (this does not mean necessarily that they could be played successfully).</p>"}],"name":"playAll","longname":"CB_AudioFileSprites#playAll","memberof":"CB_AudioFileSprites","scope":"instance"},{"comment":"/**\r\n * Tries to stops all the existing {@link CB_AudioFile} objects or the desired ones (if provided), which are being played, by calling their {@link CB_AudioFile#stop} method internally. Uses the {@link CB_AudioFileCache#stopAll} method internally and returns its returning value.\r\n * @function\r\n * @param {array} [audioFiles={@link CB_AudioFileCache#audioFiles}] - Used as the \"audioFiles\" parameter when calling the {@link CB_AudioFileCache#stopAll} method internally.\r\n * @returns {integer} Returns the number of calls to the {@link CB_AudioFile#stop} method that were performed (which should be the same number as the {@link CB_AudioFile} objects in the \"audioFiles\" parameter).\r\n */","meta":{"range":[83521,83637],"filename":"CB_AudioFileSprites.js","lineno":1103,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100014378","name":"CB_AudioFileSprites.prototype.stopAll","type":"FunctionExpression","paramnames":["audioFiles"]}},"description":"<p>Tries to stops all the existing {@link CB_AudioFile} objects or the desired ones (if provided), which are being played, by calling their {@link CB_AudioFile#stop} method internally. Uses the {@link CB_AudioFileCache#stopAll} method internally and returns its returning value.</p>","kind":"function","params":[{"type":{"names":["array"]},"optional":true,"defaultvalue":"{@link CB_AudioFileCache#audioFiles}","description":"<p>Used as the &quot;audioFiles&quot; parameter when calling the {@link CB_AudioFileCache#stopAll} method internally.</p>","name":"audioFiles"}],"returns":[{"type":{"names":["integer"]},"description":"<p>Returns the number of calls to the {@link CB_AudioFile#stop} method that were performed (which should be the same number as the {@link CB_AudioFile} objects in the &quot;audioFiles&quot; parameter).</p>"}],"name":"stopAll","longname":"CB_AudioFileSprites#stopAll","memberof":"CB_AudioFileSprites","scope":"instance"},{"comment":"/**\r\n * Plays silently and stops all {@link CB_AudioFile} objects after a desired time. It can be useful for some clients which need the {@link CB_AudioFile#play} method to be called through a user-driven event (as onClick, onTouch, etc.). Internally, it calls {@link CB_AudioFileCache#playAll}(0, null, false, 0, true, null, null, null, includingPlaying) and, after a desired delay, calls the {@link CB_AudioFileCache#stopAll} method. Uses the {@link CB_AudioFileCache#playAndStopAll} method internally and returns its returning value.\r\n * @function\r\n * @param {boolean} [includingPlaying=false] - Used as the \"includingPlaying\" parameter when calling the {@link CB_AudioFileCache#playAndStopAll} method internally.\r\n * @param {number} [delayBeforeStop=100] - Used as the \"delayBeforeStop\" parameter when calling the {@link CB_AudioFileCache#playAndStopAll} method internally.\r\n * @returns {integer} Returns the number of {@link CB_AudioFile} objects whose {@link CB_AudioFile#play} method did not return the value of \"-1\" (this does not mean necessarily that they could be played successfully).\r\n */","meta":{"range":[84750,84926],"filename":"CB_AudioFileSprites.js","lineno":1116,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100014396","name":"CB_AudioFileSprites.prototype.playAndStopAll","type":"FunctionExpression","paramnames":["includingPlaying","delayBeforeStop"]}},"description":"<p>Plays silently and stops all {@link CB_AudioFile} objects after a desired time. It can be useful for some clients which need the {@link CB_AudioFile#play} method to be called through a user-driven event (as onClick, onTouch, etc.). Internally, it calls {@link CB_AudioFileCache#playAll}(0, null, false, 0, true, null, null, null, includingPlaying) and, after a desired delay, calls the {@link CB_AudioFileCache#stopAll} method. Uses the {@link CB_AudioFileCache#playAndStopAll} method internally and returns its returning value.</p>","kind":"function","params":[{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>Used as the &quot;includingPlaying&quot; parameter when calling the {@link CB_AudioFileCache#playAndStopAll} method internally.</p>","name":"includingPlaying"},{"type":{"names":["number"]},"optional":true,"defaultvalue":100,"description":"<p>Used as the &quot;delayBeforeStop&quot; parameter when calling the {@link CB_AudioFileCache#playAndStopAll} method internally.</p>","name":"delayBeforeStop"}],"returns":[{"type":{"names":["integer"]},"description":"<p>Returns the number of {@link CB_AudioFile} objects whose {@link CB_AudioFile#play} method did not return the value of &quot;-1&quot; (this does not mean necessarily that they could be played successfully).</p>"}],"name":"playAndStopAll","longname":"CB_AudioFileSprites#playAndStopAll","memberof":"CB_AudioFileSprites","scope":"instance"},{"comment":"/**\r\n * Tries to pause all the existing {@link CB_AudioFile} objects or the desired ones (if provided), which are being played, by calling their {@link CB_AudioFile#pause} method internally. Uses the {@link CB_AudioFileCache#pauseAll} method internally and returns its returning value.\r\n * @function\r\n * @param {function} [onPause] - Used as the \"onPause\" parameter when calling the {@link CB_AudioFileCache#pauseAll} method internally.\r\n * @param {array} [audioFiles={@link CB_AudioFileCache#audioFiles}] - Used as the \"audioFiles\" parameter when calling the {@link CB_AudioFileCache#pauseAll} method internally.\r\n * @returns {integer} Returns the number of calls to the {@link CB_AudioFile#pause} method that were performed (which should be the same number as the {@link CB_AudioFile} objects in the \"audioFiles\" parameter).\r\n */","meta":{"range":[85769,85905],"filename":"CB_AudioFileSprites.js","lineno":1129,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100014416","name":"CB_AudioFileSprites.prototype.pauseAll","type":"FunctionExpression","paramnames":["onPause","audioFiles"]}},"description":"<p>Tries to pause all the existing {@link CB_AudioFile} objects or the desired ones (if provided), which are being played, by calling their {@link CB_AudioFile#pause} method internally. Uses the {@link CB_AudioFileCache#pauseAll} method internally and returns its returning value.</p>","kind":"function","params":[{"type":{"names":["function"]},"optional":true,"description":"<p>Used as the &quot;onPause&quot; parameter when calling the {@link CB_AudioFileCache#pauseAll} method internally.</p>","name":"onPause"},{"type":{"names":["array"]},"optional":true,"defaultvalue":"{@link CB_AudioFileCache#audioFiles}","description":"<p>Used as the &quot;audioFiles&quot; parameter when calling the {@link CB_AudioFileCache#pauseAll} method internally.</p>","name":"audioFiles"}],"returns":[{"type":{"names":["integer"]},"description":"<p>Returns the number of calls to the {@link CB_AudioFile#pause} method that were performed (which should be the same number as the {@link CB_AudioFile} objects in the &quot;audioFiles&quot; parameter).</p>"}],"name":"pauseAll","longname":"CB_AudioFileSprites#pauseAll","memberof":"CB_AudioFileSprites","scope":"instance"},{"comment":"/**\r\n * Resumes all the existing {@link CB_AudioFile} objects or the desired ones (if provided), which are paused (and not stopped). Can be focused on just one sprite identifier if desired. Uses the {@link CB_AudioFileCache#resumeAll} method internally and returns its returning value. Internal usage only recommended. To resume a sprite, better use the {@link CB_AudioFileSprites#resumeSprite} method instead.\r\n * @function\r\n * @param {boolean} [loop={@link CB_AudioFile#loop}] - Used as the \"loop\" parameter when calling the {@link CB_AudioFileCache#resumeAll} method internally.\r\n * @param {boolean} [allowedRecursiveDelay={@link CB_Configuration.CrossBase.CB_AudioFile_AudioFileCache_ALLOWED_RECURSIVE_DELAY_DEFAULT}] - Used as the \"allowedRecursiveDelay\" parameter when calling the {@link CB_AudioFileCache#resumeAll} method internally.\r\n * @param {boolean} [allowedRecursiveDelaySkipping=CB_AudioFile#lastStopAt-CB_AudioFile#lastStartAt] - Used as the \"allowedRecursiveDelaySkipping\" parameter when calling the {@link CB_AudioFileCache#resumeAll} method internally.\r\n * @param {function} [onPlayStart] - Used as the \"onPlayStart\" parameter when calling the {@link CB_AudioFileCache#resumeAll} method internally.\r\n * @param {function} [onStop] - Used as the \"onStop\" parameter when calling the {@link CB_AudioFileCache#resumeAll} method internally.\r\n * @param {array} [audioFiles={@link CB_AudioFileCache#audioFiles}] - Used as the \"audioFiles\" parameter when calling the {@link CB_AudioFileCache#resumeAll} method internally.\r\n * @param {string} [spriteId='_WITHOUT_SPRITE_ASSOCIATED'] - The identifier for the sprite. Internal usage only recommended.\r\n * @returns {array} Returns null if a sprite identifier was given but it could not be found. Otherwise, returns a numeric array containing all the return values of each internal call to the {@link CB_AudioFileCache#play} method.\r\n */","meta":{"range":[87814,88832],"filename":"CB_AudioFileSprites.js","lineno":1147,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100014436","name":"CB_AudioFileSprites.prototype.resumeAll","type":"FunctionExpression","paramnames":["loop","allowedRecursiveDelay","allowedRecursiveDelaySkipping","onPlayStart","onStop","audioFiles","spriteId"]},"vars":{"spriteId":"CB_AudioFileSprites#resumeAll~spriteId","soundInstances":"CB_AudioFileSprites#resumeAll~soundInstances","soundInstancesLength":"CB_AudioFileSprites#resumeAll~soundInstancesLength","x":"CB_AudioFileSprites#resumeAll~x","this.spriteSoundInstances[undefined][undefined]":"CB_AudioFileSprites#spriteSoundInstances[undefined][undefined]"}},"description":"<p>Resumes all the existing {@link CB_AudioFile} objects or the desired ones (if provided), which are paused (and not stopped). Can be focused on just one sprite identifier if desired. Uses the {@link CB_AudioFileCache#resumeAll} method internally and returns its returning value. Internal usage only recommended. To resume a sprite, better use the {@link CB_AudioFileSprites#resumeSprite} method instead.</p>","kind":"function","params":[{"type":{"names":["boolean"]},"optional":true,"defaultvalue":"{@link CB_AudioFile#loop}","description":"<p>Used as the &quot;loop&quot; parameter when calling the {@link CB_AudioFileCache#resumeAll} method internally.</p>","name":"loop"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":"{@link CB_Configuration.CrossBase.CB_AudioFile_AudioFileCache_ALLOWED_RECURSIVE_DELAY_DEFAULT}","description":"<p>Used as the &quot;allowedRecursiveDelay&quot; parameter when calling the {@link CB_AudioFileCache#resumeAll} method internally.</p>","name":"allowedRecursiveDelay"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":"CB_AudioFile#lastStopAt-CB_AudioFile#lastStartAt","description":"<p>Used as the &quot;allowedRecursiveDelaySkipping&quot; parameter when calling the {@link CB_AudioFileCache#resumeAll} method internally.</p>","name":"allowedRecursiveDelaySkipping"},{"type":{"names":["function"]},"optional":true,"description":"<p>Used as the &quot;onPlayStart&quot; parameter when calling the {@link CB_AudioFileCache#resumeAll} method internally.</p>","name":"onPlayStart"},{"type":{"names":["function"]},"optional":true,"description":"<p>Used as the &quot;onStop&quot; parameter when calling the {@link CB_AudioFileCache#resumeAll} method internally.</p>","name":"onStop"},{"type":{"names":["array"]},"optional":true,"defaultvalue":"{@link CB_AudioFileCache#audioFiles}","description":"<p>Used as the &quot;audioFiles&quot; parameter when calling the {@link CB_AudioFileCache#resumeAll} method internally.</p>","name":"audioFiles"},{"type":{"names":["string"]},"optional":true,"defaultvalue":"'_WITHOUT_SPRITE_ASSOCIATED'","description":"<p>The identifier for the sprite. Internal usage only recommended.</p>","name":"spriteId"}],"returns":[{"type":{"names":["array"]},"description":"<p>Returns null if a sprite identifier was given but it could not be found. Otherwise, returns a numeric array containing all the return values of each internal call to the {@link CB_AudioFileCache#play} method.</p>"}],"name":"resumeAll","longname":"CB_AudioFileSprites#resumeAll","memberof":"CB_AudioFileSprites","scope":"instance"},{"comment":"/**\r\n * Mutes all the existing {@link CB_AudioFile} objects or the desired ones (if provided). Uses the {@link CB_AudioFileCache#muteAll} method internally and returns its returning value.\r\n * @function\r\n * @param {function} [onMute] - Used as the \"onMute\" parameter when calling the {@link CB_AudioFileCache#muteAll} method internally.\r\n * @param {array} [audioFiles={@link CB_AudioFileCache#audioFiles}] - Used as the \"audioFiles\" parameter when calling the {@link CB_AudioFileCache#muteAll} method internally.\r\n * @returns {integer} Returns the number of calls to the {@link CB_AudioFile#mute} method that were performed (which should be the same number as the {@link CB_AudioFile} objects in the \"audioFiles\" parameter).\r\n */","meta":{"range":[89573,89705],"filename":"CB_AudioFileSprites.js","lineno":1176,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100014548","name":"CB_AudioFileSprites.prototype.muteAll","type":"FunctionExpression","paramnames":["onMute","audioFiles"]}},"description":"<p>Mutes all the existing {@link CB_AudioFile} objects or the desired ones (if provided). Uses the {@link CB_AudioFileCache#muteAll} method internally and returns its returning value.</p>","kind":"function","params":[{"type":{"names":["function"]},"optional":true,"description":"<p>Used as the &quot;onMute&quot; parameter when calling the {@link CB_AudioFileCache#muteAll} method internally.</p>","name":"onMute"},{"type":{"names":["array"]},"optional":true,"defaultvalue":"{@link CB_AudioFileCache#audioFiles}","description":"<p>Used as the &quot;audioFiles&quot; parameter when calling the {@link CB_AudioFileCache#muteAll} method internally.</p>","name":"audioFiles"}],"returns":[{"type":{"names":["integer"]},"description":"<p>Returns the number of calls to the {@link CB_AudioFile#mute} method that were performed (which should be the same number as the {@link CB_AudioFile} objects in the &quot;audioFiles&quot; parameter).</p>"}],"name":"muteAll","longname":"CB_AudioFileSprites#muteAll","memberof":"CB_AudioFileSprites","scope":"instance"},{"comment":"/**\r\n * Unmutes all the existing {@link CB_AudioFile} objects or the desired ones (if provided). Uses the {@link CB_AudioFileCache#unmuteAll} method internally and returns its returning value.\r\n * @function\r\n * @param {function} [onUnmute] - Used as the \"onUnmute\" parameter when calling the {@link CB_AudioFileCache#unmuteAll} method internally.\r\n * @param {array} [audioFiles={@link CB_AudioFileCache#audioFiles}] - Used as the \"audioFiles\" parameter when calling the {@link CB_AudioFileCache#unmuteAll} method internally.\r\n * @returns {integer} Returns the number of calls to the {@link CB_AudioFile#unmute} method that were performed (which should be the same number as the {@link CB_AudioFile} objects in the \"audioFiles\" parameter).\r\n */","meta":{"range":[90460,90600],"filename":"CB_AudioFileSprites.js","lineno":1189,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100014568","name":"CB_AudioFileSprites.prototype.unmuteAll","type":"FunctionExpression","paramnames":["onUnmute","audioFiles"]}},"description":"<p>Unmutes all the existing {@link CB_AudioFile} objects or the desired ones (if provided). Uses the {@link CB_AudioFileCache#unmuteAll} method internally and returns its returning value.</p>","kind":"function","params":[{"type":{"names":["function"]},"optional":true,"description":"<p>Used as the &quot;onUnmute&quot; parameter when calling the {@link CB_AudioFileCache#unmuteAll} method internally.</p>","name":"onUnmute"},{"type":{"names":["array"]},"optional":true,"defaultvalue":"{@link CB_AudioFileCache#audioFiles}","description":"<p>Used as the &quot;audioFiles&quot; parameter when calling the {@link CB_AudioFileCache#unmuteAll} method internally.</p>","name":"audioFiles"}],"returns":[{"type":{"names":["integer"]},"description":"<p>Returns the number of calls to the {@link CB_AudioFile#unmute} method that were performed (which should be the same number as the {@link CB_AudioFile} objects in the &quot;audioFiles&quot; parameter).</p>"}],"name":"unmuteAll","longname":"CB_AudioFileSprites#unmuteAll","memberof":"CB_AudioFileSprites","scope":"instance"},{"comment":"/**\r\n * Sets the same volume for all the existing {@link CB_AudioFile} objects or the desired ones (if provided). Uses the {@link CB_AudioFileCache#setVolumeAll} method internally and returns its returning value.\r\n * @function\r\n * @param {number} [volume={@link CB_Speaker.getVolume()} | {@link CB_Configuration.CrossBase.CB_Speaker_DEFAULT_VOLUME}] - Used as the \"volume\" parameter when calling the {@link CB_AudioFileCache#setVolumeAll} method internally.\r\n * @param {boolean} [forceSetVolumeProperty=false] - Used as the \"forceSetVolumeProperty\" parameter when calling the {@link CB_AudioFileCache#setVolumeAll} method internally.\r\n * @param {function} [onSetVolume] - Used as the \"onSetVolume\" parameter when calling the {@link CB_AudioFileCache#setVolumeAll} method internally.\r\n * @param {array} [audioFiles={@link CB_AudioFileCache#audioFiles}] - Used as the \"audioFiles\" parameter when calling the {@link CB_AudioFileCache#setVolumeAll} method internally.\r\n * @returns {integer} Returns the number of calls to the {@link CB_AudioFile#setVolume} method that were performed (which should be the same number as the {@link CB_AudioFile} objects in the \"audioFiles\" parameter).\r\n */","meta":{"range":[91799,92015],"filename":"CB_AudioFileSprites.js","lineno":1204,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100014588","name":"CB_AudioFileSprites.prototype.setVolumeAll","type":"FunctionExpression","paramnames":["volume","forceSetVolumeProperty","onSetVolume","audioFiles"]}},"description":"<p>Sets the same volume for all the existing {@link CB_AudioFile} objects or the desired ones (if provided). Uses the {@link CB_AudioFileCache#setVolumeAll} method internally and returns its returning value.</p>","kind":"function","params":[{"type":{"names":["number"]},"optional":true,"defaultvalue":"{@link CB_Speaker.getVolume()} | {@link CB_Configuration.CrossBase.CB_Speaker_DEFAULT_VOLUME}","description":"<p>Used as the &quot;volume&quot; parameter when calling the {@link CB_AudioFileCache#setVolumeAll} method internally.</p>","name":"volume"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>Used as the &quot;forceSetVolumeProperty&quot; parameter when calling the {@link CB_AudioFileCache#setVolumeAll} method internally.</p>","name":"forceSetVolumeProperty"},{"type":{"names":["function"]},"optional":true,"description":"<p>Used as the &quot;onSetVolume&quot; parameter when calling the {@link CB_AudioFileCache#setVolumeAll} method internally.</p>","name":"onSetVolume"},{"type":{"names":["array"]},"optional":true,"defaultvalue":"{@link CB_AudioFileCache#audioFiles}","description":"<p>Used as the &quot;audioFiles&quot; parameter when calling the {@link CB_AudioFileCache#setVolumeAll} method internally.</p>","name":"audioFiles"}],"returns":[{"type":{"names":["integer"]},"description":"<p>Returns the number of calls to the {@link CB_AudioFile#setVolume} method that were performed (which should be the same number as the {@link CB_AudioFile} objects in the &quot;audioFiles&quot; parameter).</p>"}],"name":"setVolumeAll","longname":"CB_AudioFileSprites#setVolumeAll","memberof":"CB_AudioFileSprites","scope":"instance"},{"comment":"/**\r\n * Tries to change the audio API for all the existing {@link CB_AudioFile} objects or the desired ones (if provided). This method is not allowed to be called if a previous call to it did not finish yet. The function defined in the \"callbackError\" parameter, if any, will be called immediately if the method was previously called and it is still running currently. Uses the {@link CB_AudioFileCache#setAudioAPIAll} method internally and returns its returning value.\r\n * @function\r\n * @param {array|string} preferredAPIs - Used as the \"preferredAPIs\" parameter when calling the {@link CB_AudioFileCache#setAudioAPIAll} method internally.\r\n * @param {CB_AudioFileCache.setAudioAPIAll_CALLBACK_OK} [callbackOk] - Used as the \"callbackOk\" parameter when calling the {@link CB_AudioFileCache#setAudioAPIAll} method internally.\r\n * @param {CB_AudioFileCache.setAudioAPIAll_CALLBACK_ERROR} [callbackError] - Used as the \"callbackError\" parameter when calling the {@link CB_AudioFileCache#setAudioAPIAll} method internally.\r\n * @param {boolean} [mandatory=false] - Used as the \"mandatory\" parameter when calling the {@link CB_AudioFileCache#setAudioAPIAll} method internally.\r\n * @param {string} [forceReload=false] - Used as the \"forceReload\" parameter when calling the {@link CB_AudioFileCache#setAudioAPIAll} method internally.\r\n * @param {array} [audioFiles={@link CB_AudioFileCache#audioFiles}] - Used as the \"audioFiles\" parameter when calling the {@link CB_AudioFileCache#setAudioAPIAll} method internally.\r\n * @returns {integer} Returns the number of calls to the {@link CB_AudioFile#setAudioAPI} method that were performed (which should be the same number as the {@link CB_AudioFile} objects in the \"audioFiles\" parameter).\r\n */","meta":{"range":[93764,94026],"filename":"CB_AudioFileSprites.js","lineno":1221,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100014612","name":"CB_AudioFileSprites.prototype.setAudioAPIAll","type":"FunctionExpression","paramnames":["preferredAPIs","callbackOk","callbackError","mandatory","forceReload","audioFiles"]}},"description":"<p>Tries to change the audio API for all the existing {@link CB_AudioFile} objects or the desired ones (if provided). This method is not allowed to be called if a previous call to it did not finish yet. The function defined in the &quot;callbackError&quot; parameter, if any, will be called immediately if the method was previously called and it is still running currently. Uses the {@link CB_AudioFileCache#setAudioAPIAll} method internally and returns its returning value.</p>","kind":"function","params":[{"type":{"names":["array","string"]},"description":"<p>Used as the &quot;preferredAPIs&quot; parameter when calling the {@link CB_AudioFileCache#setAudioAPIAll} method internally.</p>","name":"preferredAPIs"},{"type":{"names":["CB_AudioFileCache.setAudioAPIAll_CALLBACK_OK"]},"optional":true,"description":"<p>Used as the &quot;callbackOk&quot; parameter when calling the {@link CB_AudioFileCache#setAudioAPIAll} method internally.</p>","name":"callbackOk"},{"type":{"names":["CB_AudioFileCache.setAudioAPIAll_CALLBACK_ERROR"]},"optional":true,"description":"<p>Used as the &quot;callbackError&quot; parameter when calling the {@link CB_AudioFileCache#setAudioAPIAll} method internally.</p>","name":"callbackError"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>Used as the &quot;mandatory&quot; parameter when calling the {@link CB_AudioFileCache#setAudioAPIAll} method internally.</p>","name":"mandatory"},{"type":{"names":["string"]},"optional":true,"defaultvalue":false,"description":"<p>Used as the &quot;forceReload&quot; parameter when calling the {@link CB_AudioFileCache#setAudioAPIAll} method internally.</p>","name":"forceReload"},{"type":{"names":["array"]},"optional":true,"defaultvalue":"{@link CB_AudioFileCache#audioFiles}","description":"<p>Used as the &quot;audioFiles&quot; parameter when calling the {@link CB_AudioFileCache#setAudioAPIAll} method internally.</p>","name":"audioFiles"}],"returns":[{"type":{"names":["integer"]},"description":"<p>Returns the number of calls to the {@link CB_AudioFile#setAudioAPI} method that were performed (which should be the same number as the {@link CB_AudioFile} objects in the &quot;audioFiles&quot; parameter).</p>"}],"name":"setAudioAPIAll","longname":"CB_AudioFileSprites#setAudioAPIAll","memberof":"CB_AudioFileSprites","scope":"instance"},{"comment":"/**\r\n * Tells whether any of the {@link CB_AudioFile} objects is playing or not. Uses the {@link CB_AudioFileCache#isPlaying} method internally and returns its returning value.\r\n * @function\r\n * @returns {boolean} Returns whether any of the {@link CB_AudioFile} objects is playing or not.\r\n */","meta":{"range":[94329,94429],"filename":"CB_AudioFileSprites.js","lineno":1232,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100014640","name":"CB_AudioFileSprites.prototype.isPlaying","type":"FunctionExpression","paramnames":[]}},"description":"<p>Tells whether any of the {@link CB_AudioFile} objects is playing or not. Uses the {@link CB_AudioFileCache#isPlaying} method internally and returns its returning value.</p>","kind":"function","returns":[{"type":{"names":["boolean"]},"description":"<p>Returns whether any of the {@link CB_AudioFile} objects is playing or not.</p>"}],"name":"isPlaying","longname":"CB_AudioFileSprites#isPlaying","memberof":"CB_AudioFileSprites","scope":"instance"},{"comment":"/**\r\n * Tells the current number of free {@link CB_AudioFile} objects (the number of objects which are available and ready to use). Uses the {@link CB_AudioFileCache#getAudioFilesFreeNumber} method internally and returns its returning value.\r\n * @function\r\n * @returns {integer} Returns the current number of free {@link CB_AudioFile} objects (the number of objects which are available and ready to use).\r\n */","meta":{"range":[94848,94976],"filename":"CB_AudioFileSprites.js","lineno":1243,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100014656","name":"CB_AudioFileSprites.prototype.getAudioFilesFreeNumber","type":"FunctionExpression","paramnames":[]}},"description":"<p>Tells the current number of free {@link CB_AudioFile} objects (the number of objects which are available and ready to use). Uses the {@link CB_AudioFileCache#getAudioFilesFreeNumber} method internally and returns its returning value.</p>","kind":"function","returns":[{"type":{"names":["integer"]},"description":"<p>Returns the current number of free {@link CB_AudioFile} objects (the number of objects which are available and ready to use).</p>"}],"name":"getAudioFilesFreeNumber","longname":"CB_AudioFileSprites#getAudioFilesFreeNumber","memberof":"CB_AudioFileSprites","scope":"instance"},{"comment":"/**\r\n * Gets an array with all the {@link CB_AudioFile} objects. Uses the {@link CB_AudioFileCache#getAudioFiles} method internally and returns its returning value.\r\n * @function\r\n * @param {boolean} [copy=false] - Used as the \"copy\" parameter when calling the {@link CB_AudioFileCache#getAudioFiles} method internally.\r\n * @returns {array} Returns an array with all the {@link CB_AudioFile} objects.\r\n */","meta":{"range":[95392,95508],"filename":"CB_AudioFileSprites.js","lineno":1255,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100014672","name":"CB_AudioFileSprites.prototype.getAudioFiles","type":"FunctionExpression","paramnames":["copy"]}},"description":"<p>Gets an array with all the {@link CB_AudioFile} objects. Uses the {@link CB_AudioFileCache#getAudioFiles} method internally and returns its returning value.</p>","kind":"function","params":[{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>Used as the &quot;copy&quot; parameter when calling the {@link CB_AudioFileCache#getAudioFiles} method internally.</p>","name":"copy"}],"returns":[{"type":{"names":["array"]},"description":"<p>Returns an array with all the {@link CB_AudioFile} objects.</p>"}],"name":"getAudioFiles","longname":"CB_AudioFileSprites#getAudioFiles","memberof":"CB_AudioFileSprites","scope":"instance"},{"comment":"/**\r\n * Gets an array with the free {@link CB_AudioFile} objects (the objects which are available and ready to use). Uses the {@link CB_AudioFileCache#getAudioFilesFree} method internally and returns its returning value.\r\n * @function\r\n * @returns {array} Returns an array with the free {@link CB_AudioFile} objects (the objects which are available and ready to use).\r\n */","meta":{"range":[95890,96006],"filename":"CB_AudioFileSprites.js","lineno":1266,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100014690","name":"CB_AudioFileSprites.prototype.getAudioFilesFree","type":"FunctionExpression","paramnames":[]}},"description":"<p>Gets an array with the free {@link CB_AudioFile} objects (the objects which are available and ready to use). Uses the {@link CB_AudioFileCache#getAudioFilesFree} method internally and returns its returning value.</p>","kind":"function","returns":[{"type":{"names":["array"]},"description":"<p>Returns an array with the free {@link CB_AudioFile} objects (the objects which are available and ready to use).</p>"}],"name":"getAudioFilesFree","longname":"CB_AudioFileSprites#getAudioFilesFree","memberof":"CB_AudioFileSprites","scope":"instance"},{"comment":"/**\r\n * Gets an array with the busy {@link CB_AudioFile} objects (the objects which are not available and ready to use). Uses the {@link CB_AudioFileCache#getAudioFilesBusy} method internally and returns its returning value.\r\n * @function\r\n * @returns {array} Returns an array with the busy {@link CB_AudioFile} objects (the objects which are not available and ready to use).\r\n */","meta":{"range":[96396,96512],"filename":"CB_AudioFileSprites.js","lineno":1277,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100014706","name":"CB_AudioFileSprites.prototype.getAudioFilesBusy","type":"FunctionExpression","paramnames":[]}},"description":"<p>Gets an array with the busy {@link CB_AudioFile} objects (the objects which are not available and ready to use). Uses the {@link CB_AudioFileCache#getAudioFilesBusy} method internally and returns its returning value.</p>","kind":"function","returns":[{"type":{"names":["array"]},"description":"<p>Returns an array with the busy {@link CB_AudioFile} objects (the objects which are not available and ready to use).</p>"}],"name":"getAudioFilesBusy","longname":"CB_AudioFileSprites#getAudioFilesBusy","memberof":"CB_AudioFileSprites","scope":"instance"},{"comment":"/**\r\n * Tells the number of {@link CB_AudioFile} objects created. Uses the {@link CB_AudioFileCache#getAudioFilesNumber} method internally and returns its returning value.\r\n * @function\r\n * @param {boolean} [real=false] - Used as the \"real\" parameter when calling the {@link CB_AudioFileCache#getAudioFilesNumber} method internally.\r\n * @returns {integer} Returns the number of {@link CB_AudioFile} objects created.\r\n */","meta":{"range":[96943,97071],"filename":"CB_AudioFileSprites.js","lineno":1289,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100014722","name":"CB_AudioFileSprites.prototype.getAudioFilesNumber","type":"FunctionExpression","paramnames":["real"]}},"description":"<p>Tells the number of {@link CB_AudioFile} objects created. Uses the {@link CB_AudioFileCache#getAudioFilesNumber} method internally and returns its returning value.</p>","kind":"function","params":[{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>Used as the &quot;real&quot; parameter when calling the {@link CB_AudioFileCache#getAudioFilesNumber} method internally.</p>","name":"real"}],"returns":[{"type":{"names":["integer"]},"description":"<p>Returns the number of {@link CB_AudioFile} objects created.</p>"}],"name":"getAudioFilesNumber","longname":"CB_AudioFileSprites#getAudioFilesNumber","memberof":"CB_AudioFileSprites","scope":"instance"},{"comment":"/**\r\n * Tells the duration (minimum or maximum) of the sound stored (in milliseconds). Although the audio file cache should always be used to cache the same sound only, the duration might not always be the same due the usage of different formats, file paths, etc. So this method returns either the minimum or the maximum duration found among all the {@link CB_AudioFile} objects. Uses the {@link CB_AudioFileCache#getDuration} method internally and returns its returning value.\r\n * @function\r\n * @param {boolean} [maximum=false] - Used as the \"maximum\" parameter when calling the {@link CB_AudioFileCache#getDuration} method internally.\r\n * @returns {number} Returns the duration (minimum or maximum) of the sound stored (in milliseconds). Although the audio file cache should always be used to cache the same sound only, the duration might not always be the same due the usage of different formats, file paths, etc. So this method returns either the minimum or the maximum duration found among all the {@link CB_AudioFile} objects.\r\n */","meta":{"range":[98119,98237],"filename":"CB_AudioFileSprites.js","lineno":1301,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100014740","name":"CB_AudioFileSprites.prototype.getDuration","type":"FunctionExpression","paramnames":["maximum"]}},"description":"<p>Tells the duration (minimum or maximum) of the sound stored (in milliseconds). Although the audio file cache should always be used to cache the same sound only, the duration might not always be the same due the usage of different formats, file paths, etc. So this method returns either the minimum or the maximum duration found among all the {@link CB_AudioFile} objects. Uses the {@link CB_AudioFileCache#getDuration} method internally and returns its returning value.</p>","kind":"function","params":[{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>Used as the &quot;maximum&quot; parameter when calling the {@link CB_AudioFileCache#getDuration} method internally.</p>","name":"maximum"}],"returns":[{"type":{"names":["number"]},"description":"<p>Returns the duration (minimum or maximum) of the sound stored (in milliseconds). Although the audio file cache should always be used to cache the same sound only, the duration might not always be the same due the usage of different formats, file paths, etc. So this method returns either the minimum or the maximum duration found among all the {@link CB_AudioFile} objects.</p>"}],"name":"getDuration","longname":"CB_AudioFileSprites#getDuration","memberof":"CB_AudioFileSprites","scope":"instance"},{"comment":"/**\r\n * Returns a number representing the percentage of the loading progress for the audio file sprites object (from 0 to 100, being 100 a complete loading progress). The way to calculate it internally may differ from one audio API to another and it is not totally reliable. Uses the {@link CB_AudioFileCache#getProgress} method internally and returns its returning value.\r\n * @function\r\n * @param {boolean} [countLoadedObjects=false] - Used as the \"countLoadedObjects\" parameter when calling the {@link CB_AudioFileCache#getProgress} method internally.\r\n * @param {boolean} [alsoUncheckedAndCheckingObjects=false] - Used as the \"alsoUncheckedAndCheckingObjects\" parameter when calling the {@link CB_AudioFileCache#getProgress} method internally.\r\n * @returns {number} Returns a number representing the percentage of the loading progress for the audio file sprites object (from 0 to 100, being 100 a complete loading progress). The way to calculate it internally may differ from one audio API to another and it is not totally reliable.\r\n */","meta":{"range":[99289,99495],"filename":"CB_AudioFileSprites.js","lineno":1314,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100014758","name":"CB_AudioFileSprites.prototype.getProgress","type":"FunctionExpression","paramnames":["countLoadedObjects","alsoUncheckedAndCheckingObjects"]}},"description":"<p>Returns a number representing the percentage of the loading progress for the audio file sprites object (from 0 to 100, being 100 a complete loading progress). The way to calculate it internally may differ from one audio API to another and it is not totally reliable. Uses the {@link CB_AudioFileCache#getProgress} method internally and returns its returning value.</p>","kind":"function","params":[{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>Used as the &quot;countLoadedObjects&quot; parameter when calling the {@link CB_AudioFileCache#getProgress} method internally.</p>","name":"countLoadedObjects"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>Used as the &quot;alsoUncheckedAndCheckingObjects&quot; parameter when calling the {@link CB_AudioFileCache#getProgress} method internally.</p>","name":"alsoUncheckedAndCheckingObjects"}],"returns":[{"type":{"names":["number"]},"description":"<p>Returns a number representing the percentage of the loading progress for the audio file sprites object (from 0 to 100, being 100 a complete loading progress). The way to calculate it internally may differ from one audio API to another and it is not totally reliable.</p>"}],"name":"getProgress","longname":"CB_AudioFileSprites#getProgress","memberof":"CB_AudioFileSprites","scope":"instance"},{"comment":"/**\r\n * Gets the current status of the audio file sprites object. Uses the {@link CB_AudioFileCache#getStatus} method internally and returns its returning value.\r\n * @function\r\n * @returns {number} Returns the current status of the audio file sprites object. It is a number, which should match the value of the {@link CB_AudioFileCache.UNLOADED} (still unloaded), {@link CB_AudioFileCache.LOADING} (loading), {@link CB_AudioFileCache.UNCHECKED} (not checked by calling the {@link CB_AudioFileCache#checkPlayingAll} method yet), {@link CB_AudioFileCache.CHECKING} (being checked by the {@link CB_AudioFileCache#checkPlayingAll} method), {@link CB_AudioFileCache.LOADED} (loaded), {@link CB_AudioFileCache.FAILED} (failed loading or failed to play or by any other reason) or {@link CB_AudioFileCache.ABORTED} (aborted because it was destroyed with the \"destructor\" method) property.\r\n */","meta":{"range":[100390,100490],"filename":"CB_AudioFileSprites.js","lineno":1325,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100014778","name":"CB_AudioFileSprites.prototype.getStatus","type":"FunctionExpression","paramnames":[]}},"description":"<p>Gets the current status of the audio file sprites object. Uses the {@link CB_AudioFileCache#getStatus} method internally and returns its returning value.</p>","kind":"function","returns":[{"type":{"names":["number"]},"description":"<p>Returns the current status of the audio file sprites object. It is a number, which should match the value of the {@link CB_AudioFileCache.UNLOADED} (still unloaded), {@link CB_AudioFileCache.LOADING} (loading), {@link CB_AudioFileCache.UNCHECKED} (not checked by calling the {@link CB_AudioFileCache#checkPlayingAll} method yet), {@link CB_AudioFileCache.CHECKING} (being checked by the {@link CB_AudioFileCache#checkPlayingAll} method), {@link CB_AudioFileCache.LOADED} (loaded), {@link CB_AudioFileCache.FAILED} (failed loading or failed to play or by any other reason) or {@link CB_AudioFileCache.ABORTED} (aborted because it was destroyed with the &quot;destructor&quot; method) property.</p>"}],"name":"getStatus","longname":"CB_AudioFileSprites#getStatus","memberof":"CB_AudioFileSprites","scope":"instance"},{"comment":"/**\r\n * Gets the current status of the audio file sprites, as a string. Uses the {@link CB_AudioFileCache#getStatusString} method internally and returns its returning value.\r\n * @function\r\n * @returns {string} Returns the current status of the audio file sprites, as a string. Possible return values are \"UNLOADED\", \"LOADING\", \"UNCHECKED\", \"CHECKING\", \"LOADED\", \"FAILED\", \"ABORTED\" or \"UNKNOWN (UNKNOWN_STATUS)\" (where \"UNKNOWN_STATUS\" will be a value from the {@link CB_AudioFileCache#status} property not recognized as any possible status).\r\n */","meta":{"range":[101047,101159],"filename":"CB_AudioFileSprites.js","lineno":1336,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100014794","name":"CB_AudioFileSprites.prototype.getStatusString","type":"FunctionExpression","paramnames":[]}},"description":"<p>Gets the current status of the audio file sprites, as a string. Uses the {@link CB_AudioFileCache#getStatusString} method internally and returns its returning value.</p>","kind":"function","returns":[{"type":{"names":["string"]},"description":"<p>Returns the current status of the audio file sprites, as a string. Possible return values are &quot;UNLOADED&quot;, &quot;LOADING&quot;, &quot;UNCHECKED&quot;, &quot;CHECKING&quot;, &quot;LOADED&quot;, &quot;FAILED&quot;, &quot;ABORTED&quot; or &quot;UNKNOWN (UNKNOWN_STATUS)&quot; (where &quot;UNKNOWN_STATUS&quot; will be a value from the {@link CB_AudioFileCache#status} property not recognized as any possible status).</p>"}],"name":"getStatusString","longname":"CB_AudioFileSprites#getStatusString","memberof":"CB_AudioFileSprites","scope":"instance"},{"comment":"/**\r\n * @file Audio sprites pool management. Contains the {@link CB_AudioFileSpritesPool} class.\r\n * @author Joan Alba Maldonado <workindalian@gmail.com>\r\n */","meta":{"filename":"CB_AudioFileSpritesPool.js","lineno":1,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{}},"name":"CrossBase/audiovisual/audio/CB_AudioFileSpritesPool.js","kind":"file","description":"<p>Audio sprites pool management. Contains the {@link CB_AudioFileSpritesPool} class.</p>","preserveName":true,"author":["Joan Alba Maldonado <workindalian@gmail.com>"],"longname":"CrossBase/audiovisual/audio/CB_AudioFileSpritesPool.js","scope":"global"},{"comment":"/**\r\n * Object whose property names the identifiers of each sprite (a case-sensitive string) and their value is a {@link CB_AudioFileSprites.DATA_OBJECT} object.\r\n * @example\r\n * {\r\n *\t\"sprites_group_id_1\" : CB_AudioFileSprites.DATA_OBJECT,\r\n *\t\"sprites_group_id_2\" : CB_AudioFileSprites.DATA_OBJECT,\r\n *\t\"sprites_group_id_3\" : CB_AudioFileSprites.DATA_OBJECT,\r\n *\t...\r\n * }\r\n * @memberof CB_AudioFileSpritesPool\r\n * @typedef {Object} CB_AudioFileSpritesPool.SPRITES_GROUPS_OBJECT\r\n * @property {CB_AudioFileSprites.DATA_OBJECT} spritesGroupId - Being the name of each property the unique identifier of a sprites group which will use a future internally-created {@link CB_AudioFileSprites} object, the value will always be the {@link CB_AudioFileSprites.DATA_OBJECT} that the {@link CB_AudioFileSprites} object will use to be created (received by its constructor). Some of the missing properties (\"preferredAPIs\", \"preferredFormats\", \"minimumAudioFiles\", \"maximumAudioFiles\", \"minimumAudioFilesFree\", \"newAudioFilesWhenNeeded\", \"retries\", \"checkManually\", \"checkManuallyOnNeededCreated\", \"checkManuallyOnPlayingFailed\", \"checkManuallyOnCheckingFailed\" and \"disableAutoLoad\") will use the value set on the properties of the main {@link CB_AudioFileSpritesPool.DATA_OBJECT} object (if any) used by the {@link CB_AudioFileSpritesPool} object. If a function in the \"onError\" parameter is given, it will always be wrapped so the main error function set on the {@link CB_AudioFileSpritesPool#onError} parameter will always be called (if any) through the {@link CB_AudioFileSpritesPool#errorFunction} method.\r\n */","meta":{"filename":"CB_AudioFileSpritesPool.js","lineno":7,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{}},"description":"<p>Object whose property names the identifiers of each sprite (a case-sensitive string) and their value is a {@link CB_AudioFileSprites.DATA_OBJECT} object.</p>","examples":["{\r\t\"sprites_group_id_1\" : CB_AudioFileSprites.DATA_OBJECT,\r\t\"sprites_group_id_2\" : CB_AudioFileSprites.DATA_OBJECT,\r\t\"sprites_group_id_3\" : CB_AudioFileSprites.DATA_OBJECT,\r\t...\r}\r "],"memberof":"CB_AudioFileSpritesPool","kind":"typedef","name":"SPRITES_GROUPS_OBJECT","type":{"names":["Object"]},"properties":[{"type":{"names":["CB_AudioFileSprites.DATA_OBJECT"]},"description":"<p>Being the name of each property the unique identifier of a sprites group which will use a future internally-created {@link CB_AudioFileSprites} object, the value will always be the {@link CB_AudioFileSprites.DATA_OBJECT} that the {@link CB_AudioFileSprites} object will use to be created (received by its constructor). Some of the missing properties (&quot;preferredAPIs&quot;, &quot;preferredFormats&quot;, &quot;minimumAudioFiles&quot;, &quot;maximumAudioFiles&quot;, &quot;minimumAudioFilesFree&quot;, &quot;newAudioFilesWhenNeeded&quot;, &quot;retries&quot;, &quot;checkManually&quot;, &quot;checkManuallyOnNeededCreated&quot;, &quot;checkManuallyOnPlayingFailed&quot;, &quot;checkManuallyOnCheckingFailed&quot; and &quot;disableAutoLoad&quot;) will use the value set on the properties of the main {@link CB_AudioFileSpritesPool.DATA_OBJECT} object (if any) used by the {@link CB_AudioFileSpritesPool} object. If a function in the &quot;onError&quot; parameter is given, it will always be wrapped so the main error function set on the {@link CB_AudioFileSpritesPool#onError} parameter will always be called (if any) through the {@link CB_AudioFileSpritesPool#errorFunction} method.</p>","name":"spritesGroupId"}],"longname":"CB_AudioFileSpritesPool.SPRITES_GROUPS_OBJECT","scope":"static"},{"comment":"/**\r\n * Object with the desired data and options for the audio sprites. It is almost identical to the {@link CB_AudioFileSprites.DATA_OBJECT} but adding a \"spritesGroups\" property.\r\n * @memberof CB_AudioFileSpritesPool\r\n * @typedef {Object} CB_AudioFileSpritesPool.DATA_OBJECT\r\n * @property {CB_AudioFileSpritesPool.SPRITES_GROUPS_OBJECT} [spritesGroups] - Object with the desired sprites groups, containing the {@link CB_AudioFileSprites.DATA_OBJECT} objects which will be used to create the {@link CB_AudioFileSprites} objects internally. Each group will have a {@link CB_AudioFileSprites} object. It will be used as the first parameter to call the {@link CB_AudioFileSpritesPool#insertSpritesGroups} method internally. Some of the missing properties (\"preferredAPIs\", \"preferredFormats\", \"minimumAudioFiles\", \"maximumAudioFiles\", \"minimumAudioFilesFree\", \"newAudioFilesWhenNeeded\", \"retries\", \"checkManually\", \"checkManuallyOnNeededCreated\", \"checkManuallyOnPlayingFailed\", \"checkManuallyOnCheckingFailed\" and \"disableAutoLoad\") of the {@link CB_AudioFileSprites.DATA_OBJECT} objects given will use the value set on the other properties of this object (if any).\r\n * @property {string} [id=\"\"] - Desired identifier for the object. If a valid value is given, this will be added to the {@link CB_AudioFileSpritesPool#id} property.\r\n * @property {array} [preferredAPIs={@link CB_Configuration.CrossBase.CB_AudioFileCache_PREFERRED_AUDIO_APIS}] - Array of strings with the preferred audio API or audio APIs, in order of preference. Possible audio APIs are \"WAAPI\" ([HTML5 Web Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API}), \"SM2\" ([SoundManager 2]{@link http://schillmania.com/projects/soundmanager2/}), \"ACMP\" ([Apache Cordova Media Plugin]{@link https://github.com/apache/cordova-plugin-media}) or \"AAPI\" ([HTML5 Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/audio}). It will try to calculate and use the best one for the current client. If a valid value is given, this will be added to the {@link CB_AudioFileSpritesPool#preferredAPIs} property. If the {@link CB_AudioFileSprites.DATA_OBJECT} object (defined in the {@link CB_AudioFileSpritesPool.SPRITES_GROUPS_OBJECT} object set in the \"spritesGroups\") of a certain sprites group does not contain the \"preferredAPIs\" property, it will use the value of this property instead when creating its {@link CB_AudioFileSprites} object internally.\r\n * @property {array} [preferredFormats={@link CB_Configuration.CrossBase.CB_AudioFileCache_PREFERRED_AUDIO_FORMATS}] - Array of strings with the preferred audio format or audio formats (they can include just the format as 'audio/ogg' or also the codec as for example 'audio/ogg; codecs=\"vorbis\"'), in order of preference. It will try to calculate and use the best one for the current client. If a valid value is given, this will be added to the {@link CB_AudioFileSpritesPool#preferredFormats} property. If the {@link CB_AudioFileSprites.DATA_OBJECT} object (defined in the {@link CB_AudioFileSpritesPool.SPRITES_GROUPS_OBJECT} object set in the \"spritesGroups\") of a certain sprites group does not contain the \"preferredFormats\" property, it will use the value of this property instead when creating its {@link CB_AudioFileSprites} object internally.\r\n * @property {integer} [minimumAudioFiles={@link CB_AudioFileCache.minimumAudioFiles_DEFAULT}] - Minimum {@link CB_AudioFile} objects to create internally. It must be an integer being 1 the minimum. If a valid value is given, this will be added to the {@link CB_AudioFileSpritesPool#minimumAudioFiles} property. If the {@link CB_AudioFileSprites.DATA_OBJECT} object (defined in the {@link CB_AudioFileSpritesPool.SPRITES_GROUPS_OBJECT} object set in the \"spritesGroups\") of a certain sprites group does not contain the \"minimumAudioFiles\" property, it will use the value of this property instead when creating its {@link CB_AudioFileSprites} object internally.\r\n * @property {integer} [maximumAudioFiles={@link CB_AudioFileCache.maximumAudioFiles_DEFAULT}] - Maximum {@link CB_AudioFile} objects that are to be created internally. If it is set to null, there will not be a maximum (it will be unlimited). If an integer is provided, it must be the same number or greater than the value set in the {@link CB_AudioFileCache#minimumAudioFiles} property (also provided by the \"minimumAudioFiles\" of this object), allowing 1 minimum. If a valid value is given, this will be added to the {@link CB_AudioFileSpritesPool#maximumAudioFiles} property. If the {@link CB_AudioFileSprites.DATA_OBJECT} object (defined in the {@link CB_AudioFileSpritesPool.SPRITES_GROUPS_OBJECT} object set in the \"spritesGroups\") of a certain sprites group does not contain the \"maximumAudioFiles\" property, it will use the value of this property instead when creating its {@link CB_AudioFileSprites} object internally.\r\n * @property {integer} [minimumAudioFilesFree=parseInt({@link CB_AudioFileCache#minimumAudioFiles} * 0.25 + 0.5)] - New {@link CB_AudioFile} objects will be created internally when the number of free {@link CB_AudioFile} objects reaches this limit. If provided, it must be an integer being 0 (zero) the minimum. It will end using a 25% of the {@link CB_AudioFileSpritesPool#minimumAudioFiles} by default, rounded to ceil, allowing 0 (zero) minimum. If a valid value is given, this will be added to the {@link CB_AudioFileSpritesPool#minimumAudioFilesFree} property. If the {@link CB_AudioFileSprites.DATA_OBJECT} object (defined in the {@link CB_AudioFileSpritesPool.SPRITES_GROUPS_OBJECT} object set in the \"spritesGroups\") of a certain sprites group does not contain the \"minimumAudioFilesFree\" property, it will use the value of this property instead when creating its {@link CB_AudioFileSprites} object internally.\r\n * @property {integer} [newAudioFilesWhenNeeded=Math.min(parseInt({@link CB_AudioFileCache#minimumAudioFiles} * 0.1 + 0.5), 1)] - Number of new {@link CB_AudioFile} objects to create internally when the minimum limit of free {@link CB_AudioFile} objects ({@link CB_AudioFileSpritesPool#minimumAudioFilesFree}) is reached. If provided, it must be an integer being 0 (zero) the minimum. It will end using a 10% of the {@link CB_AudioFileSpritesPool#minimumAudioFiles} by default, rounded to ceil, allowing 1 minimum. If a valid value is given, this will be added to the {@link CB_AudioFileSpritesPool#newAudioFilesWhenNeeded} property. If the {@link CB_AudioFileSprites.DATA_OBJECT} object (defined in the {@link CB_AudioFileSpritesPool.SPRITES_GROUPS_OBJECT} object set in the \"spritesGroups\") of a certain sprites group does not contain the \"newAudioFilesWhenNeeded\" property, it will use the value of this property instead when creating its {@link CB_AudioFileSprites} object internally.\r\n * @property {integer} [retries={@link CB_AudioFileCache.retries_DEFAULT}] - Number of retries to try to load a {@link CB_AudioFile} object internally before trying to load the next possible one internally (if any). It must be an integer being 0 the minimum. If a valid value is given, this will be added to the {@link CB_AudioFileSpritesPool#retries} property. If the {@link CB_AudioFileSprites.DATA_OBJECT} object (defined in the {@link CB_AudioFileSpritesPool.SPRITES_GROUPS_OBJECT} object set in the \"spritesGroups\") of a certain sprites group does not contain the \"retries\" property, it will use the value of this property instead when creating its {@link CB_AudioFileSprites} object internally.\r\n * @property {boolean} [checkManually={@link CB_AudioFileCache.checkManually_DEFAULT}] - Tells whether the {@link CB_AudioFile} objects must be checked automatically or not (manually) by default. If a valid value is given, this will be added to the {@link CB_AudioFileSpritesPool#checkManually} property. If the {@link CB_AudioFileSprites.DATA_OBJECT} object (defined in the {@link CB_AudioFileSpritesPool.SPRITES_GROUPS_OBJECT} object set in the \"spritesGroups\") of a certain sprites group does not contain the \"checkManually\" property, it will use the value of this property instead when creating its {@link CB_AudioFileSprites} object internally.\r\n * @property {boolean} [checkManuallyOnNeededCreated={@link CB_AudioFileCache.checkManuallyOnNeededCreated_DEFAULT}] - Tells whether the {@link CB_AudioFile} objects must be checked automatically or not (manually) when creates a new {@link CB_AudioFile} object needed. If a valid value is given, this will be added to the {@link CB_AudioFileSpritesPool#checkManuallyOnNeededCreated} property. If the {@link CB_AudioFileSprites.DATA_OBJECT} object (defined in the {@link CB_AudioFileSpritesPool.SPRITES_GROUPS_OBJECT} object set in the \"spritesGroups\") of a certain sprites group does not contain the \"checkManuallyOnNeededCreated\" property, it will use the value of this property instead when creating its {@link CB_AudioFileSprites} object internally.\r\n * @property {boolean} [checkManuallyOnPlayingFailed={@link CB_AudioFileCache.checkManuallyOnPlayingFailed_DEFAULT}] - Tells whether the {@link CB_AudioFile} objects must be checked automatically or not (manually) when playing one has failed and tries to reload it. If a valid value is given, this will be added to the {@link CB_AudioFileSpritesPool#checkManuallyOnPlayingFailed} property. If the {@link CB_AudioFileSprites.DATA_OBJECT} object (defined in the {@link CB_AudioFileSpritesPool.SPRITES_GROUPS_OBJECT} object set in the \"spritesGroups\") of a certain sprites group does not contain the \"checkManuallyOnPlayingFailed\" property, it will use the value of this property instead when creating its {@link CB_AudioFileSprites} object internally.\r\n * @property {boolean} [checkManuallyOnCheckingFailed={@link CB_AudioFileCache.checkManuallyOnCheckingFailed_DEFAULT}] - Tells whether the {@link CB_AudioFile} objects must be checked automatically or not (manually) when checking one has failed and tries to reload it. If a valid value is given, this will be added to the {@link CB_AudioFileSpritesPool#checkManuallyOnCheckingFailed} property. If the {@link CB_AudioFileSprites.DATA_OBJECT} object (defined in the {@link CB_AudioFileSpritesPool.SPRITES_GROUPS_OBJECT} object set in the \"spritesGroups\") of a certain sprites group does not contain the \"checkManuallyOnCheckingFailed\" property, it will use the value of this property instead when creating its {@link CB_AudioFileSprites} object internally.\r\n * @property {function} [onLoad] - Desired function to be called once the pool has been loaded. The first and unique parameter will be an integer with the {@link CB_AudioFile} objects that still need to be checked, if any, being \"this\" the current {@link CB_AudioFileSpritesPool} object. If a valid value is given, this will be added to the {@link CB_AudioFileSpritesPool#onLoad} property.\r\n * @property {function} [onError] - Desired function to be called when any kind of error happens. The first and unique parameter will be a string with the error description (if it could be determined), being \"this\" the current {@link CB_AudioFileSpritesPool} object. If a valid value is given, this will be added to the {@link CB_AudioFileSpritesPool#onError} property. If a function is set, it will always be called through the {@link CB_AudioFileSpritesPool#errorFunction} method whenever the \"onError\" event of an internally-created {@link CB_AudioFileSprites} object is fired.\r\n * @property {boolean} [disableAutoLoad=false] - If set to true, it will not create automatically the {@link CB_AudioFile} objects by calling the {@link CB_AudioFileCache#createAudioFiles} method internally. Internal usage only recommended. If the {@link CB_AudioFileSprites.DATA_OBJECT} object (defined in the {@link CB_AudioFileSpritesPool.SPRITES_GROUPS_OBJECT} object set in the \"spritesGroups\") of a certain sprites group does not contain the \"disableAutoLoad\" property, it will use the value of this property instead when creating its {@link CB_AudioFileSprites} object internally.\r\n */","meta":{"filename":"CB_AudioFileSpritesPool.js","lineno":22,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{}},"description":"<p>Object with the desired data and options for the audio sprites. It is almost identical to the {@link CB_AudioFileSprites.DATA_OBJECT} but adding a &quot;spritesGroups&quot; property.</p>","memberof":"CB_AudioFileSpritesPool","kind":"typedef","name":"DATA_OBJECT","type":{"names":["Object"]},"properties":[{"type":{"names":["CB_AudioFileSpritesPool.SPRITES_GROUPS_OBJECT"]},"optional":true,"description":"<p>Object with the desired sprites groups, containing the {@link CB_AudioFileSprites.DATA_OBJECT} objects which will be used to create the {@link CB_AudioFileSprites} objects internally. Each group will have a {@link CB_AudioFileSprites} object. It will be used as the first parameter to call the {@link CB_AudioFileSpritesPool#insertSpritesGroups} method internally. Some of the missing properties (&quot;preferredAPIs&quot;, &quot;preferredFormats&quot;, &quot;minimumAudioFiles&quot;, &quot;maximumAudioFiles&quot;, &quot;minimumAudioFilesFree&quot;, &quot;newAudioFilesWhenNeeded&quot;, &quot;retries&quot;, &quot;checkManually&quot;, &quot;checkManuallyOnNeededCreated&quot;, &quot;checkManuallyOnPlayingFailed&quot;, &quot;checkManuallyOnCheckingFailed&quot; and &quot;disableAutoLoad&quot;) of the {@link CB_AudioFileSprites.DATA_OBJECT} objects given will use the value set on the other properties of this object (if any).</p>","name":"spritesGroups"},{"type":{"names":["string"]},"optional":true,"defaultvalue":"\"\"","description":"<p>Desired identifier for the object. If a valid value is given, this will be added to the {@link CB_AudioFileSpritesPool#id} property.</p>","name":"id"},{"type":{"names":["array"]},"optional":true,"defaultvalue":"{@link CB_Configuration.CrossBase.CB_AudioFileCache_PREFERRED_AUDIO_APIS}","description":"<p>Array of strings with the preferred audio API or audio APIs, in order of preference. Possible audio APIs are &quot;WAAPI&quot; ([HTML5 Web Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API}), &quot;SM2&quot; ([SoundManager 2]{@link http://schillmania.com/projects/soundmanager2/}), &quot;ACMP&quot; ([Apache Cordova Media Plugin]{@link https://github.com/apache/cordova-plugin-media}) or &quot;AAPI&quot; ([HTML5 Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/audio}). It will try to calculate and use the best one for the current client. If a valid value is given, this will be added to the {@link CB_AudioFileSpritesPool#preferredAPIs} property. If the {@link CB_AudioFileSprites.DATA_OBJECT} object (defined in the {@link CB_AudioFileSpritesPool.SPRITES_GROUPS_OBJECT} object set in the &quot;spritesGroups&quot;) of a certain sprites group does not contain the &quot;preferredAPIs&quot; property, it will use the value of this property instead when creating its {@link CB_AudioFileSprites} object internally.</p>","name":"preferredAPIs"},{"type":{"names":["array"]},"optional":true,"defaultvalue":"{@link CB_Configuration.CrossBase.CB_AudioFileCache_PREFERRED_AUDIO_FORMATS}","description":"<p>Array of strings with the preferred audio format or audio formats (they can include just the format as 'audio/ogg' or also the codec as for example 'audio/ogg; codecs=&quot;vorbis&quot;'), in order of preference. It will try to calculate and use the best one for the current client. If a valid value is given, this will be added to the {@link CB_AudioFileSpritesPool#preferredFormats} property. If the {@link CB_AudioFileSprites.DATA_OBJECT} object (defined in the {@link CB_AudioFileSpritesPool.SPRITES_GROUPS_OBJECT} object set in the &quot;spritesGroups&quot;) of a certain sprites group does not contain the &quot;preferredFormats&quot; property, it will use the value of this property instead when creating its {@link CB_AudioFileSprites} object internally.</p>","name":"preferredFormats"},{"type":{"names":["integer"]},"optional":true,"defaultvalue":"{@link CB_AudioFileCache.minimumAudioFiles_DEFAULT}","description":"<p>Minimum {@link CB_AudioFile} objects to create internally. It must be an integer being 1 the minimum. If a valid value is given, this will be added to the {@link CB_AudioFileSpritesPool#minimumAudioFiles} property. If the {@link CB_AudioFileSprites.DATA_OBJECT} object (defined in the {@link CB_AudioFileSpritesPool.SPRITES_GROUPS_OBJECT} object set in the &quot;spritesGroups&quot;) of a certain sprites group does not contain the &quot;minimumAudioFiles&quot; property, it will use the value of this property instead when creating its {@link CB_AudioFileSprites} object internally.</p>","name":"minimumAudioFiles"},{"type":{"names":["integer"]},"optional":true,"defaultvalue":"{@link CB_AudioFileCache.maximumAudioFiles_DEFAULT}","description":"<p>Maximum {@link CB_AudioFile} objects that are to be created internally. If it is set to null, there will not be a maximum (it will be unlimited). If an integer is provided, it must be the same number or greater than the value set in the {@link CB_AudioFileCache#minimumAudioFiles} property (also provided by the &quot;minimumAudioFiles&quot; of this object), allowing 1 minimum. If a valid value is given, this will be added to the {@link CB_AudioFileSpritesPool#maximumAudioFiles} property. If the {@link CB_AudioFileSprites.DATA_OBJECT} object (defined in the {@link CB_AudioFileSpritesPool.SPRITES_GROUPS_OBJECT} object set in the &quot;spritesGroups&quot;) of a certain sprites group does not contain the &quot;maximumAudioFiles&quot; property, it will use the value of this property instead when creating its {@link CB_AudioFileSprites} object internally.</p>","name":"maximumAudioFiles"},{"type":{"names":["integer"]},"optional":true,"defaultvalue":"parseInt({@link CB_AudioFileCache#minimumAudioFiles} * 0.25 + 0.5)","description":"<p>New {@link CB_AudioFile} objects will be created internally when the number of free {@link CB_AudioFile} objects reaches this limit. If provided, it must be an integer being 0 (zero) the minimum. It will end using a 25% of the {@link CB_AudioFileSpritesPool#minimumAudioFiles} by default, rounded to ceil, allowing 0 (zero) minimum. If a valid value is given, this will be added to the {@link CB_AudioFileSpritesPool#minimumAudioFilesFree} property. If the {@link CB_AudioFileSprites.DATA_OBJECT} object (defined in the {@link CB_AudioFileSpritesPool.SPRITES_GROUPS_OBJECT} object set in the &quot;spritesGroups&quot;) of a certain sprites group does not contain the &quot;minimumAudioFilesFree&quot; property, it will use the value of this property instead when creating its {@link CB_AudioFileSprites} object internally.</p>","name":"minimumAudioFilesFree"},{"type":{"names":["integer"]},"optional":true,"defaultvalue":"Math.min(parseInt({@link CB_AudioFileCache#minimumAudioFiles} * 0.1 + 0.5), 1)","description":"<p>Number of new {@link CB_AudioFile} objects to create internally when the minimum limit of free {@link CB_AudioFile} objects ({@link CB_AudioFileSpritesPool#minimumAudioFilesFree}) is reached. If provided, it must be an integer being 0 (zero) the minimum. It will end using a 10% of the {@link CB_AudioFileSpritesPool#minimumAudioFiles} by default, rounded to ceil, allowing 1 minimum. If a valid value is given, this will be added to the {@link CB_AudioFileSpritesPool#newAudioFilesWhenNeeded} property. If the {@link CB_AudioFileSprites.DATA_OBJECT} object (defined in the {@link CB_AudioFileSpritesPool.SPRITES_GROUPS_OBJECT} object set in the &quot;spritesGroups&quot;) of a certain sprites group does not contain the &quot;newAudioFilesWhenNeeded&quot; property, it will use the value of this property instead when creating its {@link CB_AudioFileSprites} object internally.</p>","name":"newAudioFilesWhenNeeded"},{"type":{"names":["integer"]},"optional":true,"defaultvalue":"{@link CB_AudioFileCache.retries_DEFAULT}","description":"<p>Number of retries to try to load a {@link CB_AudioFile} object internally before trying to load the next possible one internally (if any). It must be an integer being 0 the minimum. If a valid value is given, this will be added to the {@link CB_AudioFileSpritesPool#retries} property. If the {@link CB_AudioFileSprites.DATA_OBJECT} object (defined in the {@link CB_AudioFileSpritesPool.SPRITES_GROUPS_OBJECT} object set in the &quot;spritesGroups&quot;) of a certain sprites group does not contain the &quot;retries&quot; property, it will use the value of this property instead when creating its {@link CB_AudioFileSprites} object internally.</p>","name":"retries"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":"{@link CB_AudioFileCache.checkManually_DEFAULT}","description":"<p>Tells whether the {@link CB_AudioFile} objects must be checked automatically or not (manually) by default. If a valid value is given, this will be added to the {@link CB_AudioFileSpritesPool#checkManually} property. If the {@link CB_AudioFileSprites.DATA_OBJECT} object (defined in the {@link CB_AudioFileSpritesPool.SPRITES_GROUPS_OBJECT} object set in the &quot;spritesGroups&quot;) of a certain sprites group does not contain the &quot;checkManually&quot; property, it will use the value of this property instead when creating its {@link CB_AudioFileSprites} object internally.</p>","name":"checkManually"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":"{@link CB_AudioFileCache.checkManuallyOnNeededCreated_DEFAULT}","description":"<p>Tells whether the {@link CB_AudioFile} objects must be checked automatically or not (manually) when creates a new {@link CB_AudioFile} object needed. If a valid value is given, this will be added to the {@link CB_AudioFileSpritesPool#checkManuallyOnNeededCreated} property. If the {@link CB_AudioFileSprites.DATA_OBJECT} object (defined in the {@link CB_AudioFileSpritesPool.SPRITES_GROUPS_OBJECT} object set in the &quot;spritesGroups&quot;) of a certain sprites group does not contain the &quot;checkManuallyOnNeededCreated&quot; property, it will use the value of this property instead when creating its {@link CB_AudioFileSprites} object internally.</p>","name":"checkManuallyOnNeededCreated"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":"{@link CB_AudioFileCache.checkManuallyOnPlayingFailed_DEFAULT}","description":"<p>Tells whether the {@link CB_AudioFile} objects must be checked automatically or not (manually) when playing one has failed and tries to reload it. If a valid value is given, this will be added to the {@link CB_AudioFileSpritesPool#checkManuallyOnPlayingFailed} property. If the {@link CB_AudioFileSprites.DATA_OBJECT} object (defined in the {@link CB_AudioFileSpritesPool.SPRITES_GROUPS_OBJECT} object set in the &quot;spritesGroups&quot;) of a certain sprites group does not contain the &quot;checkManuallyOnPlayingFailed&quot; property, it will use the value of this property instead when creating its {@link CB_AudioFileSprites} object internally.</p>","name":"checkManuallyOnPlayingFailed"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":"{@link CB_AudioFileCache.checkManuallyOnCheckingFailed_DEFAULT}","description":"<p>Tells whether the {@link CB_AudioFile} objects must be checked automatically or not (manually) when checking one has failed and tries to reload it. If a valid value is given, this will be added to the {@link CB_AudioFileSpritesPool#checkManuallyOnCheckingFailed} property. If the {@link CB_AudioFileSprites.DATA_OBJECT} object (defined in the {@link CB_AudioFileSpritesPool.SPRITES_GROUPS_OBJECT} object set in the &quot;spritesGroups&quot;) of a certain sprites group does not contain the &quot;checkManuallyOnCheckingFailed&quot; property, it will use the value of this property instead when creating its {@link CB_AudioFileSprites} object internally.</p>","name":"checkManuallyOnCheckingFailed"},{"type":{"names":["function"]},"optional":true,"description":"<p>Desired function to be called once the pool has been loaded. The first and unique parameter will be an integer with the {@link CB_AudioFile} objects that still need to be checked, if any, being &quot;this&quot; the current {@link CB_AudioFileSpritesPool} object. If a valid value is given, this will be added to the {@link CB_AudioFileSpritesPool#onLoad} property.</p>","name":"onLoad"},{"type":{"names":["function"]},"optional":true,"description":"<p>Desired function to be called when any kind of error happens. The first and unique parameter will be a string with the error description (if it could be determined), being &quot;this&quot; the current {@link CB_AudioFileSpritesPool} object. If a valid value is given, this will be added to the {@link CB_AudioFileSpritesPool#onError} property. If a function is set, it will always be called through the {@link CB_AudioFileSpritesPool#errorFunction} method whenever the &quot;onError&quot; event of an internally-created {@link CB_AudioFileSprites} object is fired.</p>","name":"onError"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If set to true, it will not create automatically the {@link CB_AudioFile} objects by calling the {@link CB_AudioFileCache#createAudioFiles} method internally. Internal usage only recommended. If the {@link CB_AudioFileSprites.DATA_OBJECT} object (defined in the {@link CB_AudioFileSpritesPool.SPRITES_GROUPS_OBJECT} object set in the &quot;spritesGroups&quot;) of a certain sprites group does not contain the &quot;disableAutoLoad&quot; property, it will use the value of this property instead when creating its {@link CB_AudioFileSprites} object internally.</p>","name":"disableAutoLoad"}],"longname":"CB_AudioFileSpritesPool.DATA_OBJECT","scope":"static"},{"comment":"/**\r\n * The constructor is recommended to be called through a user-driven event (as onClick, onTouch, etc.), as some clients may need this at least the first time in order to be able to play the audio.\r\n * @class\r\n * @classdesc Class to manage many audio sprites stored in different groups, each with one {@link CB_AudioFileSprites} object (used internally).\r\n * @param {CB_AudioFileSpritesPool.DATA_OBJECT} [dataObject] - Object with the desired data and options for the groups of audio sprites. Each group will have a {@link CB_AudioFileSprites} object. Some of its properties (\"preferredAPIs\", \"preferredFormats\", \"minimumAudioFiles\", \"maximumAudioFiles\", \"minimumAudioFilesFree\", \"newAudioFilesWhenNeeded\", \"retries\", \"checkManually\", \"checkManuallyOnNeededCreated\", \"checkManuallyOnPlayingFailed\", \"checkManuallyOnCheckingFailed\" and \"disableAutoLoad\") will be used as the default value to create internally the {@link CB_AudioFileSprites} objects when the value is not given in the {@link CB_AudioFileSpritesPool.SPRITES_GROUPS_OBJECT} object (set as the value of the {@link CB_AudioFileSpritesPool.DATA_OBJECT#spritesGroups} property).\r\n * @returns {CB_AudioFileSpritesPool} Returns a new {@link CB_AudioFileSpritesPool} object.\r\n * @todo Do not allow to create one object with an \"id\" which has already been used (unless the value is undefined, null...).\r\n * @todo Method getCopy and static method filterProperties (similar to the ones from {@link CB_GraphicSprites} and {@link CB_GraphicSpritesScene}).\r\n */","meta":{"range":[15324,22678],"filename":"CB_AudioFileSpritesPool.js","lineno":54,"columnno":4,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100014812","name":"CB_AudioFileSpritesPool","type":"FunctionExpression"},"vars":{"this.id":"CB_AudioFileSpritesPool#id","this.preferredAPIs":"CB_AudioFileSpritesPool#preferredAPIs","this.preferredFormats":"CB_AudioFileSpritesPool#preferredFormats","this.minimumAudioFiles":"CB_AudioFileSpritesPool#minimumAudioFiles","this.maximumAudioFiles":"CB_AudioFileSpritesPool#maximumAudioFiles","this.minimumAudioFilesFree":"CB_AudioFileSpritesPool#minimumAudioFilesFree","this.newAudioFilesWhenNeeded":"CB_AudioFileSpritesPool#newAudioFilesWhenNeeded","this.retries":"CB_AudioFileSpritesPool#retries","this.checkManually":"CB_AudioFileSpritesPool#checkManually","this.checkManuallyOnNeededCreated":"CB_AudioFileSpritesPool#checkManuallyOnNeededCreated","this.checkManuallyOnPlayingFailed":"CB_AudioFileSpritesPool#checkManuallyOnPlayingFailed","this.checkManuallyOnCheckingFailed":"CB_AudioFileSpritesPool#checkManuallyOnCheckingFailed","this.disableAutoLoad":"CB_AudioFileSpritesPool#disableAutoLoad","this.onLoad":"CB_AudioFileSpritesPool#onLoad","this.onError":"CB_AudioFileSpritesPool#onError","this.audioFileSprites":"CB_AudioFileSpritesPool#audioFileSprites","this._aborted":"CB_AudioFileSpritesPool#_aborted","this._checkSpritesGroupsLoadedTimeout":"CB_AudioFileSpritesPool#_checkSpritesGroupsLoadedTimeout","this._checkPlayingAllPerforming":"CB_AudioFileSpritesPool#_checkPlayingAllPerforming","this._setAudioAPIAllPerforming":"CB_AudioFileSpritesPool#_setAudioAPIAllPerforming","this._errorFunctionExecuted":"CB_AudioFileSpritesPool#_errorFunctionExecuted"}},"description":"<p>The constructor is recommended to be called through a user-driven event (as onClick, onTouch, etc.), as some clients may need this at least the first time in order to be able to play the audio.</p>","kind":"class","classdesc":"<p>Class to manage many audio sprites stored in different groups, each with one {@link CB_AudioFileSprites} object (used internally).</p>","params":[{"type":{"names":["CB_AudioFileSpritesPool.DATA_OBJECT"]},"optional":true,"description":"<p>Object with the desired data and options for the groups of audio sprites. Each group will have a {@link CB_AudioFileSprites} object. Some of its properties (&quot;preferredAPIs&quot;, &quot;preferredFormats&quot;, &quot;minimumAudioFiles&quot;, &quot;maximumAudioFiles&quot;, &quot;minimumAudioFilesFree&quot;, &quot;newAudioFilesWhenNeeded&quot;, &quot;retries&quot;, &quot;checkManually&quot;, &quot;checkManuallyOnNeededCreated&quot;, &quot;checkManuallyOnPlayingFailed&quot;, &quot;checkManuallyOnCheckingFailed&quot; and &quot;disableAutoLoad&quot;) will be used as the default value to create internally the {@link CB_AudioFileSprites} objects when the value is not given in the {@link CB_AudioFileSpritesPool.SPRITES_GROUPS_OBJECT} object (set as the value of the {@link CB_AudioFileSpritesPool.DATA_OBJECT#spritesGroups} property).</p>","name":"dataObject"}],"returns":[{"type":{"names":["CB_AudioFileSpritesPool"]},"description":"<p>Returns a new {@link CB_AudioFileSpritesPool} object.</p>"}],"todo":["Do not allow to create one object with an \"id\" which has already been used (unless the value is undefined, null...).","Method getCopy and static method filterProperties (similar to the ones from {@link CB_GraphicSprites} and {@link CB_GraphicSpritesScene})."],"name":"CB_AudioFileSpritesPool","longname":"CB_AudioFileSpritesPool","scope":"global"},{"comment":"/**\r\n * Status value for audio file sprites pool which is unloaded. Can be used to compare the value returned by the {@link CB_AudioFileSpritesPool#getStatus} method. Recommended for internal usage only.\r\n *\t@constant\r\n * @type {integer}\r\n * @default 0\r\n */","meta":{"range":[22981,23017],"filename":"CB_AudioFileSpritesPool.js","lineno":228,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100014972","name":"CB_AudioFileSpritesPool.UNLOADED","type":"Literal","value":0,"paramnames":[]}},"description":"<p>Status value for audio file sprites pool which is unloaded. Can be used to compare the value returned by the {@link CB_AudioFileSpritesPool#getStatus} method. Recommended for internal usage only.</p>","kind":"constant","type":{"names":["integer"]},"defaultvalue":"0","name":"UNLOADED","longname":"CB_AudioFileSpritesPool.UNLOADED","memberof":"CB_AudioFileSpritesPool","scope":"static"},{"comment":"/**\r\n * Status value for an audio file sprites pool which is loading. Can be used to compare the value returned by the {@link CB_AudioFileSpritesPool#getStatus} method. Recommended for internal usage only.\r\n *\t@constant\r\n * @type {integer}\r\n * @default\r\n */","meta":{"range":[23318,23353],"filename":"CB_AudioFileSpritesPool.js","lineno":236,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100014978","name":"CB_AudioFileSpritesPool.LOADING","type":"Literal","value":1,"paramnames":[]}},"description":"<p>Status value for an audio file sprites pool which is loading. Can be used to compare the value returned by the {@link CB_AudioFileSpritesPool#getStatus} method. Recommended for internal usage only.</p>","kind":"constant","type":{"names":["integer"]},"defaultvalue":1,"name":"LOADING","longname":"CB_AudioFileSpritesPool.LOADING","memberof":"CB_AudioFileSpritesPool","scope":"static"},{"comment":"/**\r\n * Status value for an audio file sprites pool which has not been checked yet. Can be used to compare the value returned by the {@link CB_AudioFileSpritesPool#getStatus} method. Recommended for internal usage only.\r\n *\t@constant\r\n * @type {integer}\r\n * @default\r\n */","meta":{"range":[23667,23704],"filename":"CB_AudioFileSpritesPool.js","lineno":244,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100014984","name":"CB_AudioFileSpritesPool.UNCHECKED","type":"Literal","value":2,"paramnames":[]}},"description":"<p>Status value for an audio file sprites pool which has not been checked yet. Can be used to compare the value returned by the {@link CB_AudioFileSpritesPool#getStatus} method. Recommended for internal usage only.</p>","kind":"constant","type":{"names":["integer"]},"defaultvalue":2,"name":"UNCHECKED","longname":"CB_AudioFileSpritesPool.UNCHECKED","memberof":"CB_AudioFileSpritesPool","scope":"static"},{"comment":"/**\r\n * Status value for an audio file sprites pool which is being checked currently. Can be used to compare the value returned by the {@link CB_AudioFileSpritesPool#getStatus} method. Recommended for internal usage only.\r\n *\t@constant\r\n * @type {integer}\r\n * @default\r\n */","meta":{"range":[24025,24061],"filename":"CB_AudioFileSpritesPool.js","lineno":252,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100014990","name":"CB_AudioFileSpritesPool.CHECKING","type":"Literal","value":3,"paramnames":[]}},"description":"<p>Status value for an audio file sprites pool which is being checked currently. Can be used to compare the value returned by the {@link CB_AudioFileSpritesPool#getStatus} method. Recommended for internal usage only.</p>","kind":"constant","type":{"names":["integer"]},"defaultvalue":3,"name":"CHECKING","longname":"CB_AudioFileSpritesPool.CHECKING","memberof":"CB_AudioFileSpritesPool","scope":"static"},{"comment":"/**\r\n * Status value for an audio file sprites pool which has been loaded. Can be used to compare the value returned by the {@link CB_AudioFileSpritesPool#getStatus} method. Recommended for internal usage only.\r\n *\t@constant\r\n * @type {integer}\r\n * @default\r\n */","meta":{"range":[24369,24403],"filename":"CB_AudioFileSpritesPool.js","lineno":260,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100014996","name":"CB_AudioFileSpritesPool.LOADED","type":"Literal","value":4,"paramnames":[]}},"description":"<p>Status value for an audio file sprites pool which has been loaded. Can be used to compare the value returned by the {@link CB_AudioFileSpritesPool#getStatus} method. Recommended for internal usage only.</p>","kind":"constant","type":{"names":["integer"]},"defaultvalue":4,"name":"LOADED","longname":"CB_AudioFileSpritesPool.LOADED","memberof":"CB_AudioFileSpritesPool","scope":"static"},{"comment":"/**\r\n * Status value for an audio file sprites pool which failed to be loaded or failed for any other reason. Can be used to compare the value returned by the {@link CB_AudioFileSpritesPool#getStatus} method. Recommended for internal usage only.\r\n *\t@constant\r\n * @type {integer}\r\n * @default\r\n */","meta":{"range":[24742,24776],"filename":"CB_AudioFileSpritesPool.js","lineno":268,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100015002","name":"CB_AudioFileSpritesPool.FAILED","type":"Literal","value":5,"paramnames":[]}},"description":"<p>Status value for an audio file sprites pool which failed to be loaded or failed for any other reason. Can be used to compare the value returned by the {@link CB_AudioFileSpritesPool#getStatus} method. Recommended for internal usage only.</p>","kind":"constant","type":{"names":["integer"]},"defaultvalue":5,"name":"FAILED","longname":"CB_AudioFileSpritesPool.FAILED","memberof":"CB_AudioFileSpritesPool","scope":"static"},{"comment":"/**\r\n * Status value for an audio file sprites pool which has been aborted. This will happen when the audio file sprites pool has been destroyed with the {@link CB_AudioFileSpritesPool#destructor} method. Can be used to compare the value returned by the {@link CB_AudioFileSpritesPool#getStatus} method. Recommended for internal usage only.\r\n *\t@constant\r\n * @type {integer}\r\n * @default\r\n */","meta":{"range":[25218,25253],"filename":"CB_AudioFileSpritesPool.js","lineno":276,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100015008","name":"CB_AudioFileSpritesPool.ABORTED","type":"Literal","value":6,"paramnames":[]}},"description":"<p>Status value for an audio file sprites pool which has been aborted. This will happen when the audio file sprites pool has been destroyed with the {@link CB_AudioFileSpritesPool#destructor} method. Can be used to compare the value returned by the {@link CB_AudioFileSpritesPool#getStatus} method. Recommended for internal usage only.</p>","kind":"constant","type":{"names":["integer"]},"defaultvalue":6,"name":"ABORTED","longname":"CB_AudioFileSpritesPool.ABORTED","memberof":"CB_AudioFileSpritesPool","scope":"static"},{"comment":"/**\r\n * Destroys the audio file sprites pool object (removing all sprites, etc.), including the internal audio file sprites objects, and frees memory. By default, unless the \"preventAbortedStatus\" is set to true, sets the current status of all the {@link CB_AudioFileCache} objects as ABORTED ({@link CB_AudioFileCache.ABORTED} value). Internally, calls the {@link CB_AudioFileSprites#destructor} method of all the internally-created {@link CB_AudioFileSprites} objects.\r\n * @function\r\n * @param {boolean} [stopSounds=false] - Used as the \"stopSounds\" parameter when calling internally the {@link CB_AudioFileSprites#destructor} method of all the internally-created {@link CB_AudioFileSprites} objects.\r\n * @param {boolean} [preventAbortedStatus=false] - If set to true (not recommended), it will not assign the status of \"ABORTED\" (it will not set the {@link CB_AudioFileSpritesPool#_aborted} property to true}. Used as the \"preventAbortedStatus\" parameter when calling internally the {@link CB_AudioFileSprites#destructor} method of all the internally-created {@link CB_AudioFileSprites} objects.\r\n */","meta":{"range":[27302,28429],"filename":"CB_AudioFileSpritesPool.js","lineno":325,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100015032","name":"CB_AudioFileSpritesPool.prototype.destructor","type":"FunctionExpression","paramnames":["stopSounds","preventAbortedStatus"]},"vars":{"audioFileSpritesObject":"CB_AudioFileSpritesPool#destructor~audioFileSpritesObject","this.preferredAPIs":"CB_AudioFileSpritesPool#preferredAPIs","this.preferredFormats":"CB_AudioFileSpritesPool#preferredFormats","this.minimumAudioFiles":"CB_AudioFileSpritesPool#minimumAudioFiles","this.maximumAudioFiles":"CB_AudioFileSpritesPool#maximumAudioFiles","this.minimumAudioFilesFree":"CB_AudioFileSpritesPool#minimumAudioFilesFree","this.newAudioFilesWhenNeeded":"CB_AudioFileSpritesPool#newAudioFilesWhenNeeded","this.retries":"CB_AudioFileSpritesPool#retries","this.checkManually":"CB_AudioFileSpritesPool#checkManually","this.checkManuallyOnNeededCreated":"CB_AudioFileSpritesPool#checkManuallyOnNeededCreated","this.checkManuallyOnPlayingFailed":"CB_AudioFileSpritesPool#checkManuallyOnPlayingFailed","this.checkManuallyOnCheckingFailed":"CB_AudioFileSpritesPool#checkManuallyOnCheckingFailed","this.disableAutoLoad":"CB_AudioFileSpritesPool#disableAutoLoad","this.onLoad":"CB_AudioFileSpritesPool#onLoad","this.onError":"CB_AudioFileSpritesPool#onError","this.audioFileSprites":"CB_AudioFileSpritesPool#audioFileSprites","this._aborted":"CB_AudioFileSpritesPool#_aborted"}},"description":"<p>Destroys the audio file sprites pool object (removing all sprites, etc.), including the internal audio file sprites objects, and frees memory. By default, unless the &quot;preventAbortedStatus&quot; is set to true, sets the current status of all the {@link CB_AudioFileCache} objects as ABORTED ({@link CB_AudioFileCache.ABORTED} value). Internally, calls the {@link CB_AudioFileSprites#destructor} method of all the internally-created {@link CB_AudioFileSprites} objects.</p>","kind":"function","params":[{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>Used as the &quot;stopSounds&quot; parameter when calling internally the {@link CB_AudioFileSprites#destructor} method of all the internally-created {@link CB_AudioFileSprites} objects.</p>","name":"stopSounds"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If set to true (not recommended), it will not assign the status of &quot;ABORTED&quot; (it will not set the {@link CB_AudioFileSpritesPool#_aborted} property to true}. Used as the &quot;preventAbortedStatus&quot; parameter when calling internally the {@link CB_AudioFileSprites#destructor} method of all the internally-created {@link CB_AudioFileSprites} objects.</p>","name":"preventAbortedStatus"}],"name":"destructor","longname":"CB_AudioFileSpritesPool#destructor","memberof":"CB_AudioFileSpritesPool","scope":"instance"},{"comment":"/**\r\n * Loads the audio file sprites pool with the desired data given. This method is called by the constructor automatically. Recommended to be called through a user-driven event (as onClick, onTouch, etc.), as some clients may need this at least the first time in order to be able to play the audio.\r\n * @function\r\n * @param {CB_AudioFileSpritesPool.DATA_OBJECT} dataObject - Object with the desired data and options for the audio file sprites.\r\n * @returns {CB_AudioFileSpritesPool|null} If a \"dataObject\" is given, it returns the current {@link CB_AudioFileSpritesPool} object. Otherwise, it returns null.\r\n */","meta":{"range":[29054,31413],"filename":"CB_AudioFileSpritesPool.js","lineno":364,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100015180","name":"CB_AudioFileSpritesPool.prototype.load","type":"FunctionExpression","paramnames":["dataObject"]},"vars":{"this._aborted":"CB_AudioFileSpritesPool#_aborted","dataObject.id":"dataObject.id","this.id":"CB_AudioFileSpritesPool#id","this.preferredAPIs":"CB_AudioFileSpritesPool#preferredAPIs","this.preferredFormats":"CB_AudioFileSpritesPool#preferredFormats","this.minimumAudioFiles":"CB_AudioFileSpritesPool#minimumAudioFiles","this.maximumAudioFiles":"CB_AudioFileSpritesPool#maximumAudioFiles","this.minimumAudioFilesFree":"CB_AudioFileSpritesPool#minimumAudioFilesFree","this.newAudioFilesWhenNeeded":"CB_AudioFileSpritesPool#newAudioFilesWhenNeeded","this.retries":"CB_AudioFileSpritesPool#retries","this.checkManually":"CB_AudioFileSpritesPool#checkManually","this.checkManuallyOnNeededCreated":"CB_AudioFileSpritesPool#checkManuallyOnNeededCreated","this.checkManuallyOnPlayingFailed":"CB_AudioFileSpritesPool#checkManuallyOnPlayingFailed","this.checkManuallyOnCheckingFailed":"CB_AudioFileSpritesPool#checkManuallyOnCheckingFailed","this.disableAutoLoad":"CB_AudioFileSpritesPool#disableAutoLoad","this.onLoad":"CB_AudioFileSpritesPool#onLoad","this.onError":"CB_AudioFileSpritesPool#onError"}},"description":"<p>Loads the audio file sprites pool with the desired data given. This method is called by the constructor automatically. Recommended to be called through a user-driven event (as onClick, onTouch, etc.), as some clients may need this at least the first time in order to be able to play the audio.</p>","kind":"function","params":[{"type":{"names":["CB_AudioFileSpritesPool.DATA_OBJECT"]},"description":"<p>Object with the desired data and options for the audio file sprites.</p>","name":"dataObject"}],"returns":[{"type":{"names":["CB_AudioFileSpritesPool","null"]},"description":"<p>If a &quot;dataObject&quot; is given, it returns the current {@link CB_AudioFileSpritesPool} object. Otherwise, it returns null.</p>"}],"name":"load","longname":"CB_AudioFileSpritesPool#load","memberof":"CB_AudioFileSpritesPool","scope":"instance"},{"comment":"/**\r\n * Removes all the sprites groups ({@link CB_AudioFileSprites} objects) by clearing the {@link CB_AudioFileSpritesPool#audioFileSprites} property.\r\n * @function\r\n */","meta":{"range":[33333,33435],"filename":"CB_AudioFileSpritesPool.js","lineno":457,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100015734","name":"CB_AudioFileSpritesPool.prototype.removeSpritesGroups","type":"FunctionExpression","paramnames":[]},"vars":{"this.audioFileSprites":"CB_AudioFileSpritesPool#audioFileSprites"}},"description":"<p>Removes all the sprites groups ({@link CB_AudioFileSprites} objects) by clearing the {@link CB_AudioFileSpritesPool#audioFileSprites} property.</p>","kind":"function","name":"removeSpritesGroups","longname":"CB_AudioFileSpritesPool#removeSpritesGroups","memberof":"CB_AudioFileSpritesPool","scope":"instance"},{"comment":"/**\r\n * Inserts the given sprites groups.\r\n * @function\r\n * @param {CB_AudioFileSpritesPool.SPRITES_GROUPS_OBJECT} sprites - Object with the desired sprites groups.\r\n * @returns {integer} Returns the number of sprites groups inserted.\r\n */","meta":{"range":[33685,34273],"filename":"CB_AudioFileSpritesPool.js","lineno":469,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100015749","name":"CB_AudioFileSpritesPool.prototype.insertSpritesGroups","type":"FunctionExpression","paramnames":["spritesGroups"]},"vars":{"inserted":"CB_AudioFileSpritesPool#insertSpritesGroups~inserted","that":"CB_AudioFileSpritesPool#insertSpritesGroups~that","spritesGroupId":"CB_AudioFileSpritesPool#insertSpritesGroups~spritesGroupId","this._checkSpritesGroupsLoadedTimeout":"CB_AudioFileSpritesPool#_checkSpritesGroupsLoadedTimeout","":null}},"description":"<p>Inserts the given sprites groups.</p>","kind":"function","params":[{"type":{"names":["CB_AudioFileSpritesPool.SPRITES_GROUPS_OBJECT"]},"description":"<p>Object with the desired sprites groups.</p>","name":"sprites"}],"returns":[{"type":{"names":["integer"]},"description":"<p>Returns the number of sprites groups inserted.</p>"}],"name":"insertSpritesGroups","longname":"CB_AudioFileSpritesPool#insertSpritesGroups","memberof":"CB_AudioFileSpritesPool","scope":"instance"},{"comment":"/**\r\n * Inserts the given sprites group to the audio file sprites pool object.\r\n * @function\r\n * @param {string} spritesGroupId - The identifier for the sprites group.\r\n * @param {CB_AudioFileSprites.DATA_OBJECT} [dataObject] - Object with the data of the sprites group. Optional but recommended.\r\n * @param {boolean} [avoidCheckingLoaded=false] - If set to true, it will not check whether all sprites groups has been loaded after inserting the desired one. This is done internally by the {@link CB_AudioFileSpritesPool#_checkSpritesGroupsLoaded} method which will fire the {@link CB_AudioFileSpritesPool#onLoad} function (if any).\r\n * @returns {boolean} Returns true if the sprites group has been inserted or false otherwise.\r\n */","meta":{"range":[35018,39385],"filename":"CB_AudioFileSpritesPool.js","lineno":497,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100015823","name":"CB_AudioFileSpritesPool.prototype.insertSpritesGroup","type":"FunctionExpression","paramnames":["spritesGroupId","dataObject","avoidCheckingLoaded"]},"vars":{"dataObject":"CB_AudioFileSpritesPool#insertSpritesGroup~dataObject","dataObjectCopy":"CB_AudioFileSpritesPool#insertSpritesGroup~dataObjectCopy","dataObjectCopy.id":"CB_AudioFileSpritesPool#insertSpritesGroup~dataObjectCopy.id","dataObjectCopy.preferredAPIs":"CB_AudioFileSpritesPool#insertSpritesGroup~dataObjectCopy.preferredAPIs","dataObjectCopy.preferredFormats":"CB_AudioFileSpritesPool#insertSpritesGroup~dataObjectCopy.preferredFormats","dataObjectCopy.URIs":"CB_AudioFileSpritesPool#insertSpritesGroup~dataObjectCopy.URIs","dataObjectCopy.minimumAudioFiles":"CB_AudioFileSpritesPool#insertSpritesGroup~dataObjectCopy.minimumAudioFiles","dataObjectCopy.maximumAudioFiles":"CB_AudioFileSpritesPool#insertSpritesGroup~dataObjectCopy.maximumAudioFiles","dataObjectCopy.minimumAudioFilesFree":"CB_AudioFileSpritesPool#insertSpritesGroup~dataObjectCopy.minimumAudioFilesFree","dataObjectCopy.newAudioFilesWhenNeeded":"CB_AudioFileSpritesPool#insertSpritesGroup~dataObjectCopy.newAudioFilesWhenNeeded","dataObjectCopy.retries":"CB_AudioFileSpritesPool#insertSpritesGroup~dataObjectCopy.retries","dataObjectCopy.checkManually":"CB_AudioFileSpritesPool#insertSpritesGroup~dataObjectCopy.checkManually","dataObjectCopy.checkManuallyOnNeededCreated":"CB_AudioFileSpritesPool#insertSpritesGroup~dataObjectCopy.checkManuallyOnNeededCreated","dataObjectCopy.checkManuallyOnPlayingFailed":"CB_AudioFileSpritesPool#insertSpritesGroup~dataObjectCopy.checkManuallyOnPlayingFailed","dataObjectCopy.checkManuallyOnCheckingFailed":"CB_AudioFileSpritesPool#insertSpritesGroup~dataObjectCopy.checkManuallyOnCheckingFailed","dataObjectCopy.disableAutoLoad":"CB_AudioFileSpritesPool#insertSpritesGroup~dataObjectCopy.disableAutoLoad","dataObjectCopy.onLoad":"CB_AudioFileSpritesPool#insertSpritesGroup~dataObjectCopy.onLoad","dataObjectCopy.onError":"CB_AudioFileSpritesPool#insertSpritesGroup~dataObjectCopy.onError","dataObjectCopy.sprites":"CB_AudioFileSpritesPool#insertSpritesGroup~dataObjectCopy.sprites","that":"CB_AudioFileSpritesPool#insertSpritesGroup~that","onErrorOld":"CB_AudioFileSpritesPool#insertSpritesGroup~onErrorOld","":null,"this._errorFunctionExecuted":"CB_AudioFileSpritesPool#_errorFunctionExecuted","this.audioFileSprites[undefined]":"CB_AudioFileSpritesPool#audioFileSprites[undefined]","this._checkSpritesGroupsLoadedTimeout":"CB_AudioFileSpritesPool#_checkSpritesGroupsLoadedTimeout"}},"description":"<p>Inserts the given sprites group to the audio file sprites pool object.</p>","kind":"function","params":[{"type":{"names":["string"]},"description":"<p>The identifier for the sprites group.</p>","name":"spritesGroupId"},{"type":{"names":["CB_AudioFileSprites.DATA_OBJECT"]},"optional":true,"description":"<p>Object with the data of the sprites group. Optional but recommended.</p>","name":"dataObject"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If set to true, it will not check whether all sprites groups has been loaded after inserting the desired one. This is done internally by the {@link CB_AudioFileSpritesPool#_checkSpritesGroupsLoaded} method which will fire the {@link CB_AudioFileSpritesPool#onLoad} function (if any).</p>","name":"avoidCheckingLoaded"}],"returns":[{"type":{"names":["boolean"]},"description":"<p>Returns true if the sprites group has been inserted or false otherwise.</p>"}],"name":"insertSpritesGroup","longname":"CB_AudioFileSpritesPool#insertSpritesGroup","memberof":"CB_AudioFileSpritesPool","scope":"instance"},{"comment":"/**\r\n * Removes a sprites group by its ID.\r\n * @function\r\n * @param {string} spritesGroupId - The identifier for the sprites group.\r\n * @param {boolean} [destroy=false] - If set to true, it will call the {@link CB_AudioFileSprites#destructor} method of the {@link CB_AudioFileSprites} object which belongs to the desired sprites group.\r\n * @param {boolean} [stopSounds=false] - If the \"destroy\" parameter is set to false, this parameter will be ignored. Used as the \"stopSound\" parameter when calling internally the {@link CB_AudioFileSprites#destructor} method of the {@link CB_AudioFileSprites} object which belongs to the desired sprites group.\r\n * @param {boolean} [preventAbortedStatus=false] - If the \"destroy\" parameter is set to false, this parameter will be ignored. Used as the \"preventAbortedStatus\" parameter when calling internally the {@link CB_AudioFileSprites#destructor} method of the {@link CB_AudioFileSprites} object which belongs to the desired sprites group.\r\n * @returns {boolean} Returns true if the sprites group has been deleted or false otherwise.\r\n */","meta":{"range":[40478,41278],"filename":"CB_AudioFileSpritesPool.js","lineno":572,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100016370","name":"CB_AudioFileSpritesPool.prototype.removeSpritesGroup","type":"FunctionExpression","paramnames":["spritesGroupId","destroy","stopSounds","preventAbortedStatus"]},"vars":{"this.audioFileSprites[undefined]":"CB_AudioFileSpritesPool#audioFileSprites[undefined]","audioFileSprites":"CB_AudioFileSpritesPool#removeSpritesGroup~audioFileSprites","audioFileSprites[undefined]":"CB_AudioFileSpritesPool#removeSpritesGroup~audioFileSprites.undefined]","this.audioFileSprites":"CB_AudioFileSpritesPool#audioFileSprites"}},"description":"<p>Removes a sprites group by its ID.</p>","kind":"function","params":[{"type":{"names":["string"]},"description":"<p>The identifier for the sprites group.</p>","name":"spritesGroupId"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If set to true, it will call the {@link CB_AudioFileSprites#destructor} method of the {@link CB_AudioFileSprites} object which belongs to the desired sprites group.</p>","name":"destroy"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If the &quot;destroy&quot; parameter is set to false, this parameter will be ignored. Used as the &quot;stopSound&quot; parameter when calling internally the {@link CB_AudioFileSprites#destructor} method of the {@link CB_AudioFileSprites} object which belongs to the desired sprites group.</p>","name":"stopSounds"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If the &quot;destroy&quot; parameter is set to false, this parameter will be ignored. Used as the &quot;preventAbortedStatus&quot; parameter when calling internally the {@link CB_AudioFileSprites#destructor} method of the {@link CB_AudioFileSprites} object which belongs to the desired sprites group.</p>","name":"preventAbortedStatus"}],"returns":[{"type":{"names":["boolean"]},"description":"<p>Returns true if the sprites group has been deleted or false otherwise.</p>"}],"name":"removeSpritesGroup","longname":"CB_AudioFileSpritesPool#removeSpritesGroup","memberof":"CB_AudioFileSpritesPool","scope":"instance"},{"comment":"/**\r\n * Returns a sprites group (the {@link CB_AudioFileSprites} object) by its ID.\r\n * @function\r\n * @param {string} spritesGroupId - The identifier for the sprites group.\r\n * @param {boolean} [withoutChecking=false] - If set to true and the sprites group cannot be found, the method will return undefined (or whatever is stored by the given ID) instead of null.\r\n * @returns {CB_AudioFileSprites|undefined|*|null} Returns null if the \"withoutChecking\" parameter is set to true and the sprites group cannot be found. Otherwise, it will return what is stored internally by the given ID which can be a {@link CB_AudioFileSprites} object if found or undefined (or whatever is stored by the given ID) if not found.\r\n */","meta":{"range":[42006,42315],"filename":"CB_AudioFileSpritesPool.js","lineno":604,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100016471","name":"CB_AudioFileSpritesPool.prototype.getSpritesGroup","type":"FunctionExpression","paramnames":["spritesGroupId","withoutChecking"]}},"description":"<p>Returns a sprites group (the {@link CB_AudioFileSprites} object) by its ID.</p>","kind":"function","params":[{"type":{"names":["string"]},"description":"<p>The identifier for the sprites group.</p>","name":"spritesGroupId"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If set to true and the sprites group cannot be found, the method will return undefined (or whatever is stored by the given ID) instead of null.</p>","name":"withoutChecking"}],"returns":[{"type":{"names":["CB_AudioFileSprites","undefined","*","null"]},"description":"<p>Returns null if the &quot;withoutChecking&quot; parameter is set to true and the sprites group cannot be found. Otherwise, it will return what is stored internally by the given ID which can be a {@link CB_AudioFileSprites} object if found or undefined (or whatever is stored by the given ID) if not found.</p>"}],"name":"getSpritesGroup","longname":"CB_AudioFileSpritesPool#getSpritesGroup","memberof":"CB_AudioFileSpritesPool","scope":"instance"},{"comment":"/**\r\n * Returns an object with the sprites groups (all the internally-created {@link CB_AudioFileSprites} objects), being the name of each property their group ID and the value being the {@link CB_AudioFileSprites} object itself. Internally, it just returns the {@link CB_AudioFileSpritesPool#audioFileSprites} property.\r\n * @function\r\n * @returns {Object} Returns an object with the sprites groups (all the internally-created {@link CB_AudioFileSprites} objects), being the name of each property their group ID and the value being the {@link CB_AudioFileSprites} object itself. Internally, it just returns the {@link CB_AudioFileSpritesPool#audioFileSprites} property.\r\n */","meta":{"range":[42999,43100],"filename":"CB_AudioFileSpritesPool.js","lineno":620,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100016502","name":"CB_AudioFileSpritesPool.prototype.getSpritesGroups","type":"FunctionExpression","paramnames":[]}},"description":"<p>Returns an object with the sprites groups (all the internally-created {@link CB_AudioFileSprites} objects), being the name of each property their group ID and the value being the {@link CB_AudioFileSprites} object itself. Internally, it just returns the {@link CB_AudioFileSpritesPool#audioFileSprites} property.</p>","kind":"function","returns":[{"type":{"names":["Object"]},"description":"<p>Returns an object with the sprites groups (all the internally-created {@link CB_AudioFileSprites} objects), being the name of each property their group ID and the value being the {@link CB_AudioFileSprites} object itself. Internally, it just returns the {@link CB_AudioFileSpritesPool#audioFileSprites} property.</p>"}],"name":"getSpritesGroups","longname":"CB_AudioFileSpritesPool#getSpritesGroups","memberof":"CB_AudioFileSpritesPool","scope":"instance"},{"comment":"/**\r\n * Returns an object with the sprites (and includes \"_WITHOUT_SPRITE_ASSOCIATED\" if we want to). Internally, uses the {@link CB_AudioFileSprites#getSprites} method.\r\n * @function\r\n * @param {boolean} [includeWithoutSpriteAssociated=false] - If set to true, the returning object will also contain a property called \"_WITHOUT_SPRITE_ASSOCIATED\" whose value will be an empty object (unless the \"orderBySpritesGroup\" parameter is set to true and the property existed before in the object stored in the {@link CB_AudioFileSprites#sprites} property and had a value which is not an empty object). If set to false and the \"orderBySpritesGroup\" parameter is also set to false, the returning object will not contain the \"_WITHOUT_SPRITE_ASSOCIATED\" property. If set to false and the \"orderBySpritesGroup\" parameter is set to true, the returning object will not contain the \"_WITHOUT_SPRITE_ASSOCIATED\" property unless the property existed before in the object stored in the {@link CB_AudioFileSprites#sprites} property.\r\n * @param {boolean} [orderBySpritesGroup=false] - If set to false, it will return a {@link CB_AudioFileSprites.SPRITES_OBJECT} object whose properties will be the ID of each sprite (each sprite ID should be unique) and their value will be a {@link CB_AudioFileSprites.SPRITE_OBJECT} object. If set to true, it will return an object whose properties will be the ID of each sprites group and the value will be a {@link CB_AudioFileSprites.SPRITES_OBJECT} object which will include its sprites.\r\n * @returns {CB_AudioFileSprites.SPRITES_OBJECT|Object} If the \"orderBySpritesGroup\" is set to false, it will return a {@link CB_AudioFileSprites.SPRITES_OBJECT} object whose properties will be the ID of each sprite (each sprite ID should be unique) and their value will be a {@link CB_AudioFileSprites.SPRITE_OBJECT} object. If the \"orderBySpritesGroup\" is set to true, it will return an object whose properties will be the ID of each sprites group and the value will be a {@link CB_AudioFileSprites.SPRITES_OBJECT} object which will include its sprites.\r\n */","meta":{"range":[45181,45921],"filename":"CB_AudioFileSpritesPool.js","lineno":633,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100016515","name":"CB_AudioFileSpritesPool.prototype.getSprites","type":"FunctionExpression","paramnames":["includeWithoutSpriteAssociated","orderBySpritesGroup"]},"vars":{"sprites":"CB_AudioFileSpritesPool#getSprites~sprites","sprites[\"_WITHOUT_SPRITE_ASSOCIATED\"]":"CB_AudioFileSpritesPool#getSprites~sprites.\"_WITHOUT_SPRITE_ASSOCIATED\"]","spritesLoop":"CB_AudioFileSpritesPool#getSprites~spritesLoop","spriteId":"CB_AudioFileSpritesPool#getSprites~spriteId","spritesGroupId":"CB_AudioFileSpritesPool#getSprites~spritesGroupId","sprites[undefined]":"CB_AudioFileSpritesPool#getSprites~sprites.undefined]"}},"description":"<p>Returns an object with the sprites (and includes &quot;_WITHOUT_SPRITE_ASSOCIATED&quot; if we want to). Internally, uses the {@link CB_AudioFileSprites#getSprites} method.</p>","kind":"function","params":[{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If set to true, the returning object will also contain a property called &quot;_WITHOUT_SPRITE_ASSOCIATED&quot; whose value will be an empty object (unless the &quot;orderBySpritesGroup&quot; parameter is set to true and the property existed before in the object stored in the {@link CB_AudioFileSprites#sprites} property and had a value which is not an empty object). If set to false and the &quot;orderBySpritesGroup&quot; parameter is also set to false, the returning object will not contain the &quot;_WITHOUT_SPRITE_ASSOCIATED&quot; property. If set to false and the &quot;orderBySpritesGroup&quot; parameter is set to true, the returning object will not contain the &quot;_WITHOUT_SPRITE_ASSOCIATED&quot; property unless the property existed before in the object stored in the {@link CB_AudioFileSprites#sprites} property.</p>","name":"includeWithoutSpriteAssociated"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If set to false, it will return a {@link CB_AudioFileSprites.SPRITES_OBJECT} object whose properties will be the ID of each sprite (each sprite ID should be unique) and their value will be a {@link CB_AudioFileSprites.SPRITE_OBJECT} object. If set to true, it will return an object whose properties will be the ID of each sprites group and the value will be a {@link CB_AudioFileSprites.SPRITES_OBJECT} object which will include its sprites.</p>","name":"orderBySpritesGroup"}],"returns":[{"type":{"names":["CB_AudioFileSprites.SPRITES_OBJECT","Object"]},"description":"<p>If the &quot;orderBySpritesGroup&quot; is set to false, it will return a {@link CB_AudioFileSprites.SPRITES_OBJECT} object whose properties will be the ID of each sprite (each sprite ID should be unique) and their value will be a {@link CB_AudioFileSprites.SPRITE_OBJECT} object. If the &quot;orderBySpritesGroup&quot; is set to true, it will return an object whose properties will be the ID of each sprites group and the value will be a {@link CB_AudioFileSprites.SPRITES_OBJECT} object which will include its sprites.</p>"}],"name":"getSprites","longname":"CB_AudioFileSpritesPool#getSprites","memberof":"CB_AudioFileSpritesPool","scope":"instance"},{"comment":"/**\r\n * Returns the sound instances (their ID) used (stored in the {@link CB_AudioFileSprites#spriteSoundInstances} property of each {@link CB_AudioFileSprites} object).\r\n * @function\r\n * @param {boolean} [oneDimension=false] - If set to false, it will return an object whose property names will be the ID of each sprites group and their value will be the {@link CB_AudioFileSprites#spriteSoundInstances} property of each {@link CB_AudioFileSprites} object (which includes the \"_WITHOUT_SPRITE_ASSOCIATED\" property for sound instances without a sprite associated) which belongs to that sprites group. Otherwise, if it is set to true, it will return a numeric array whose values are the sound instance IDs.\r\n * @param {boolean} [includeWithoutSpriteAssociated=false] - If set to true, it will also return the sound instance identifiers which are not associated to any sprite. Used as the \"includeWithoutSpriteAssociated\" parameter when calling the {@link CB_AudioFileSprites#getSoundInstancesId} method internally. Only used when the \"oneDimension\" parameter is set to true.\r\n * @returns {Object|array} Returns the sound instances (their ID) used (stored in the {@link CB_AudioFileSprites#spriteSoundInstances} property). If the \"oneDimension\" parameter is set to false, it will return an object whose property names will be the ID of each sprites group and their value will be the {@link CB_AudioFileSprites#spriteSoundInstances} property of each {@link CB_AudioFileSprites} object (which includes the \"_WITHOUT_SPRITE_ASSOCIATED\" property for sound instances without a sprite associated) which belongs to that sprites group. If the \"oneDimension\" parameter is set to true, it will return a numeric array whose values are the sound instance identifiers (if the \"includeWithoutSpriteAssociated\" parameter it set to true, it will also include the sound instances which are not associated to any sprite).\r\n */","meta":{"range":[47839,48792],"filename":"CB_AudioFileSpritesPool.js","lineno":670,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100016606","name":"CB_AudioFileSpritesPool.prototype.getSoundInstancesId","type":"FunctionExpression","paramnames":["oneDimension","includeWithoutSpriteAssociated"]},"vars":{"soundInstances":"CB_AudioFileSpritesPool#getSoundInstancesId~soundInstances","spritesGroupId":"CB_AudioFileSpritesPool#getSoundInstancesId~spritesGroupId","soundInstances[undefined]":"CB_AudioFileSpritesPool#getSoundInstancesId~soundInstances.undefined]","soundInstancesSpritesGroup":"CB_AudioFileSpritesPool#getSoundInstancesId~soundInstancesSpritesGroup","soundInstancesSpritesGroupLength":"CB_AudioFileSpritesPool#getSoundInstancesId~soundInstancesSpritesGroupLength","y":"CB_AudioFileSpritesPool#getSoundInstancesId~y","x":"CB_AudioFileSpritesPool#getSoundInstancesId~x"}},"description":"<p>Returns the sound instances (their ID) used (stored in the {@link CB_AudioFileSprites#spriteSoundInstances} property of each {@link CB_AudioFileSprites} object).</p>","kind":"function","params":[{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If set to false, it will return an object whose property names will be the ID of each sprites group and their value will be the {@link CB_AudioFileSprites#spriteSoundInstances} property of each {@link CB_AudioFileSprites} object (which includes the &quot;_WITHOUT_SPRITE_ASSOCIATED&quot; property for sound instances without a sprite associated) which belongs to that sprites group. Otherwise, if it is set to true, it will return a numeric array whose values are the sound instance IDs.</p>","name":"oneDimension"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If set to true, it will also return the sound instance identifiers which are not associated to any sprite. Used as the &quot;includeWithoutSpriteAssociated&quot; parameter when calling the {@link CB_AudioFileSprites#getSoundInstancesId} method internally. Only used when the &quot;oneDimension&quot; parameter is set to true.</p>","name":"includeWithoutSpriteAssociated"}],"returns":[{"type":{"names":["Object","array"]},"description":"<p>Returns the sound instances (their ID) used (stored in the {@link CB_AudioFileSprites#spriteSoundInstances} property). If the &quot;oneDimension&quot; parameter is set to false, it will return an object whose property names will be the ID of each sprites group and their value will be the {@link CB_AudioFileSprites#spriteSoundInstances} property of each {@link CB_AudioFileSprites} object (which includes the &quot;_WITHOUT_SPRITE_ASSOCIATED&quot; property for sound instances without a sprite associated) which belongs to that sprites group. If the &quot;oneDimension&quot; parameter is set to true, it will return a numeric array whose values are the sound instance identifiers (if the &quot;includeWithoutSpriteAssociated&quot; parameter it set to true, it will also include the sound instances which are not associated to any sprite).</p>"}],"name":"getSoundInstancesId","longname":"CB_AudioFileSpritesPool#getSoundInstancesId","memberof":"CB_AudioFileSpritesPool","scope":"instance"},{"comment":"/**\r\n * Object returned by the {@link CB_AudioFileSpritesPool#getAudioFilesUsed} method. Each property names will be the the ID of each sprites group and their value will be a {@link CB_AudioFileSprites.getAudioFilesUsed_OBJECT} object.\r\n * @memberof CB_AudioFileSpritesPool\r\n * @typedef {Object} CB_AudioFileSpritesPool.getAudioFilesUsed_OBJECT\r\n * @property {CB_AudioFileSpritesPool.getAudioFilesUsed_OBJECT} spriteId - Each property names will be the the ID of each sprites group and their value will be a {@link CB_AudioFileSprites.getAudioFilesUsed_OBJECT} object.\r\n */","meta":{"filename":"CB_AudioFileSpritesPool.js","lineno":702,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{}},"description":"<p>Object returned by the {@link CB_AudioFileSpritesPool#getAudioFilesUsed} method. Each property names will be the the ID of each sprites group and their value will be a {@link CB_AudioFileSprites.getAudioFilesUsed_OBJECT} object.</p>","memberof":"CB_AudioFileSpritesPool","kind":"typedef","name":"getAudioFilesUsed_OBJECT","type":{"names":["Object"]},"properties":[{"type":{"names":["CB_AudioFileSpritesPool.getAudioFilesUsed_OBJECT"]},"description":"<p>Each property names will be the the ID of each sprites group and their value will be a {@link CB_AudioFileSprites.getAudioFilesUsed_OBJECT} object.</p>","name":"spriteId"}],"longname":"CB_AudioFileSpritesPool.getAudioFilesUsed_OBJECT","scope":"static"},{"comment":"/**\r\n * Returns the {@link CB_AudioFile} objects used by all the sounds instances of all the sprites groups.\r\n * @function\r\n * @param {boolean} [oneDimension=false] - If set to false, it will return an object whose property names will be the ID of each sprites group and their value will be the an object whose property names are the sprite identifiers (including the \"_WITHOUT_SPRITE_ASSOCIATED\" property for sound instances without a sprite associated, if the \"includeWithoutSpriteAssociated\" is set to true) and their value will be a numeric array with the {@link CB_AudioFile} objects used. Otherwise, if set to true, it will return a numeric array with the {@link CB_AudioFile} objects used (if the \"includeWithoutSpriteAssociated\" parameter is set to true, it will also contain the {@link CB_AudioFile} objects whose sound instance ID is not associated to any sprite).\r\n * @param {boolean} [includeWithoutSpriteAssociated=false] - If set to true, it will also return the {@link CB_AudioFile} objects whose sound instance ID is not associated to any sprite. Used as the \"includeWithoutSpriteAssociated\" parameter when calling the {@link CB_AudioFileSprites#getAudioFilesUsed} method internally.\r\n * @param {boolean} [avoidCancelled=false] - If set to true, it will not return the {@link CB_AudioFile} objects whose sound instance has been cancelled. Used as the \"avoidCancelled\" parameter when calling the {@link CB_AudioFileSprites#getAudioFilesUsed} method internally.\r\n * @returns {CB_AudioFileSprites.getAudioFilesUsed_OBJECT|array} Returns the {@link CB_AudioFile} objects used by all the sounds instances of all the sprites groups. If the \"oneDimension\" parameter is set to false, it will return a {@link CB_AudioFileSpritesPool.getAudioFilesUsed_OBJECT} object whose property names will be the ID of each sprites group and their value will be a {@link CB_AudioFileSprites.getAudioFilesUsed_OBJECT} object whose property names are the sprite identifiers (including the \"_WITHOUT_SPRITE_ASSOCIATED\" property for sound instances without a sprite associated, if the \"includeWithoutSpriteAssociated\" is set to true) and their value will be a numeric array with the {@link CB_AudioFile} objects used. Otherwise, if the \"oneDimension\" parameter set to true, it will return a numeric array with the {@link CB_AudioFile} objects used (if the \"includeWithoutSpriteAssociated\" parameter is set to true, it will also contain the {@link CB_AudioFile} objects whose sound instance ID is not associated to any sprite).\r\n */","meta":{"range":[51906,52849],"filename":"CB_AudioFileSpritesPool.js","lineno":717,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100016718","name":"CB_AudioFileSpritesPool.prototype.getAudioFilesUsed","type":"FunctionExpression","paramnames":["oneDimension","includeWithoutSpriteAssociated","avoidCancelled"]},"vars":{"audioFiles":"CB_AudioFileSpritesPool#getAudioFilesUsed~audioFiles","spritesGroupId":"CB_AudioFileSpritesPool#getAudioFilesUsed~spritesGroupId","audioFiles[undefined]":"CB_AudioFileSpritesPool#getAudioFilesUsed~audioFiles.undefined]","audioFilesSpritesGroup":"CB_AudioFileSpritesPool#getAudioFilesUsed~audioFilesSpritesGroup","audioFilesSpritesGroupLength":"CB_AudioFileSpritesPool#getAudioFilesUsed~audioFilesSpritesGroupLength","y":"CB_AudioFileSpritesPool#getAudioFilesUsed~y","x":"CB_AudioFileSpritesPool#getAudioFilesUsed~x"}},"description":"<p>Returns the {@link CB_AudioFile} objects used by all the sounds instances of all the sprites groups.</p>","kind":"function","params":[{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If set to false, it will return an object whose property names will be the ID of each sprites group and their value will be the an object whose property names are the sprite identifiers (including the &quot;_WITHOUT_SPRITE_ASSOCIATED&quot; property for sound instances without a sprite associated, if the &quot;includeWithoutSpriteAssociated&quot; is set to true) and their value will be a numeric array with the {@link CB_AudioFile} objects used. Otherwise, if set to true, it will return a numeric array with the {@link CB_AudioFile} objects used (if the &quot;includeWithoutSpriteAssociated&quot; parameter is set to true, it will also contain the {@link CB_AudioFile} objects whose sound instance ID is not associated to any sprite).</p>","name":"oneDimension"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If set to true, it will also return the {@link CB_AudioFile} objects whose sound instance ID is not associated to any sprite. Used as the &quot;includeWithoutSpriteAssociated&quot; parameter when calling the {@link CB_AudioFileSprites#getAudioFilesUsed} method internally.</p>","name":"includeWithoutSpriteAssociated"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If set to true, it will not return the {@link CB_AudioFile} objects whose sound instance has been cancelled. Used as the &quot;avoidCancelled&quot; parameter when calling the {@link CB_AudioFileSprites#getAudioFilesUsed} method internally.</p>","name":"avoidCancelled"}],"returns":[{"type":{"names":["CB_AudioFileSprites.getAudioFilesUsed_OBJECT","array"]},"description":"<p>Returns the {@link CB_AudioFile} objects used by all the sounds instances of all the sprites groups. If the &quot;oneDimension&quot; parameter is set to false, it will return a {@link CB_AudioFileSpritesPool.getAudioFilesUsed_OBJECT} object whose property names will be the ID of each sprites group and their value will be a {@link CB_AudioFileSprites.getAudioFilesUsed_OBJECT} object whose property names are the sprite identifiers (including the &quot;_WITHOUT_SPRITE_ASSOCIATED&quot; property for sound instances without a sprite associated, if the &quot;includeWithoutSpriteAssociated&quot; is set to true) and their value will be a numeric array with the {@link CB_AudioFile} objects used. Otherwise, if the &quot;oneDimension&quot; parameter set to true, it will return a numeric array with the {@link CB_AudioFile} objects used (if the &quot;includeWithoutSpriteAssociated&quot; parameter is set to true, it will also contain the {@link CB_AudioFile} objects whose sound instance ID is not associated to any sprite).</p>"}],"name":"getAudioFilesUsed","longname":"CB_AudioFileSpritesPool#getAudioFilesUsed","memberof":"CB_AudioFileSpritesPool","scope":"instance"},{"comment":"/**\r\n * Callback that is used when finishes all iterations after looping through the items. Being \"this\" an array with all the items.\r\n * @memberof CB_AudioFileSpritesPool\r\n * @callback CB_AudioFileSpritesPool.executeFunctionAll_ON_FINISH_CALLBACK\r\n * @param {array} array - An array with all the items which were being looped.\r\n * @param {integer} itemsAffected - The number of times that the \"functionEach\" callback was called (the most likely, matches the number of elements unless they are undefined or null).\r\n * @param {integer} delayMaximum - The maximum \"delay\" used.\r\n */","meta":{"filename":"CB_AudioFileSpritesPool.js","lineno":749,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{}},"description":"<p>Callback that is used when finishes all iterations after looping through the items. Being &quot;this&quot; an array with all the items.</p>","memberof":"CB_AudioFileSpritesPool","kind":"typedef","name":"executeFunctionAll_ON_FINISH_CALLBACK","type":{"names":["function"]},"params":[{"type":{"names":["array"]},"description":"<p>An array with all the items which were being looped.</p>","name":"array"},{"type":{"names":["integer"]},"description":"<p>The number of times that the &quot;functionEach&quot; callback was called (the most likely, matches the number of elements unless they are undefined or null).</p>","name":"itemsAffected"},{"type":{"names":["integer"]},"description":"<p>The maximum &quot;delay&quot; used.</p>","name":"delayMaximum"}],"longname":"CB_AudioFileSpritesPool.executeFunctionAll_ON_FINISH_CALLBACK","scope":"static"},{"comment":"/**\r\n * Alias for {@link CB_AudioFileSpritesPool#executeFunctionAllSprites}.\r\n * @function CB_AudioFileSpritesPool#executeAllSprites\r\n * @see {@link CB_AudioFileSpritesPool#executeFunctionAllSprites}\r\n */","meta":{"filename":"CB_AudioFileSpritesPool.js","lineno":758,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{}},"description":"<p>Alias for {@link CB_AudioFileSpritesPool#executeFunctionAllSprites}.</p>","kind":"function","name":"executeAllSprites","see":["{@link CB_AudioFileSpritesPool#executeFunctionAllSprites}"],"memberof":"CB_AudioFileSpritesPool","longname":"CB_AudioFileSpritesPool#executeAllSprites","scope":"instance"},{"comment":"/**\r\n * Alias for {@link CB_AudioFileSpritesPool#executeFunctionAllSprites}.\r\n * @function CB_AudioFileSpritesPool#forEachSprite\r\n * @see {@link CB_AudioFileSpritesPool#executeFunctionAllSprites}\r\n */","meta":{"filename":"CB_AudioFileSpritesPool.js","lineno":763,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{}},"description":"<p>Alias for {@link CB_AudioFileSpritesPool#executeFunctionAllSprites}.</p>","kind":"function","name":"forEachSprite","see":["{@link CB_AudioFileSpritesPool#executeFunctionAllSprites}"],"memberof":"CB_AudioFileSpritesPool","longname":"CB_AudioFileSpritesPool#forEachSprite","scope":"instance"},{"comment":"/**\r\n * Executes a desired function for all the {@link CB_AudioFile} objects used by all the sound instances currently created of each sprite group. It calls the {@link CB_AudioFileSprites#executeFunctionAllSprites} method internally.\r\n * @function\r\n * @param {CB_Arrays.executeFunctionAll_ON_LOOP_CALLBACK} functionEach - Used as the \"functionEach\" parameter when calling the {@link CB_AudioFileSprites#executeFunctionAllSprites} method internally.\r\n * @param {number|CB_Arrays.executeFunctionAll_ON_LOOP_CALLBACK} [delayBetweenEach=0] - Used as the \"delayBetweenEach\" parameter when calling the {@link CB_AudioFileSprites#executeFunctionAllSprites} method internally. Note that each call to the {@link CB_AudioFileSprites#executeFunctionAllSprites} method will be performed sequentially one after the other, without adding a delay.\r\n * @param {boolean} [includeWithoutSpriteAssociated=false] - Used as the \"includeWithoutSpriteAssociated\" parameter when calling the {@link CB_AudioFileSprites#executeFunctionAllSprites} method internally.\r\n * @param {boolean} [avoidCancelled=false] - Used as the \"avoidCancelled\" parameter when calling the {@link CB_AudioFileSprites#executeFunctionAllSprites} method internally.\r\n * @param {boolean} [delayBetweenEachAffectsFirst=false] - Used as the \"delayBetweenEachAffectsFirst\" parameter when calling the {@link CB_AudioFileSprites#executeFunctionAllSprites} method internally. Internal usage only recommended. Note that each call to the {@link CB_AudioFileSprites#executeFunctionAllSprites} method will be performed sequentially one after the other, without adding a delay.\r\n * @param {CB_AudioFileSpritesPool.executeFunctionAll_ON_FINISH_CALLBACK} [functionFinish] - Function that will be called for when it has finished looping all the items. The first parameter will be the array containing all the items which were looped, the second parameter will be the number of times that the \"functionEach\" callback was called (the most likely, matches the number of elements unless they are undefined or null), and the third parameter will be the maximum \"delay\" used, being \"this\" the array itself.\r\n * @returns {integer} It will return the number of calls to the \"functionEach\" function that were performed (which should be the same number as the {@link CB_AudioFile} objects used by the sound instances that belong to the sprites of each sprites group). Note that if a value greater than 0 (zero) for the \"delayBetweenEach\" parameter has been provided, perhaps not all calls of the \"functionEach\" function will have been performed yet when exiting this method because of the asynchronous nature of the [setTimeout]{@link https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/setTimeout} function.\r\n * @todo Think about implementing a \"returnSetTimeoutsArray\" or similar (as in {@link CB_AudioFileSprites#executeFunctionAllSprites}).\r\n * @todo Think about consider executing only one by one (now it will loop {@link CB_AudioFile} objects from different sprites groups simultaneously).\r\n */","meta":{"range":[56919,58253],"filename":"CB_AudioFileSpritesPool.js","lineno":781,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100016833","name":"CB_AudioFileSpritesPool.prototype.executeFunctionAllSprites","type":"AssignmentExpression","value":"CB_AudioFileSpritesPool.prototype.executeAllSprites","paramnames":[]}},"description":"<p>Executes a desired function for all the {@link CB_AudioFile} objects used by all the sound instances currently created of each sprite group. It calls the {@link CB_AudioFileSprites#executeFunctionAllSprites} method internally.</p>","kind":"function","params":[{"type":{"names":["CB_Arrays.executeFunctionAll_ON_LOOP_CALLBACK"]},"description":"<p>Used as the &quot;functionEach&quot; parameter when calling the {@link CB_AudioFileSprites#executeFunctionAllSprites} method internally.</p>","name":"functionEach"},{"type":{"names":["number","CB_Arrays.executeFunctionAll_ON_LOOP_CALLBACK"]},"optional":true,"defaultvalue":0,"description":"<p>Used as the &quot;delayBetweenEach&quot; parameter when calling the {@link CB_AudioFileSprites#executeFunctionAllSprites} method internally. Note that each call to the {@link CB_AudioFileSprites#executeFunctionAllSprites} method will be performed sequentially one after the other, without adding a delay.</p>","name":"delayBetweenEach"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>Used as the &quot;includeWithoutSpriteAssociated&quot; parameter when calling the {@link CB_AudioFileSprites#executeFunctionAllSprites} method internally.</p>","name":"includeWithoutSpriteAssociated"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>Used as the &quot;avoidCancelled&quot; parameter when calling the {@link CB_AudioFileSprites#executeFunctionAllSprites} method internally.</p>","name":"avoidCancelled"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>Used as the &quot;delayBetweenEachAffectsFirst&quot; parameter when calling the {@link CB_AudioFileSprites#executeFunctionAllSprites} method internally. Internal usage only recommended. Note that each call to the {@link CB_AudioFileSprites#executeFunctionAllSprites} method will be performed sequentially one after the other, without adding a delay.</p>","name":"delayBetweenEachAffectsFirst"},{"type":{"names":["CB_AudioFileSpritesPool.executeFunctionAll_ON_FINISH_CALLBACK"]},"optional":true,"description":"<p>Function that will be called for when it has finished looping all the items. The first parameter will be the array containing all the items which were looped, the second parameter will be the number of times that the &quot;functionEach&quot; callback was called (the most likely, matches the number of elements unless they are undefined or null), and the third parameter will be the maximum &quot;delay&quot; used, being &quot;this&quot; the array itself.</p>","name":"functionFinish"}],"returns":[{"type":{"names":["integer"]},"description":"<p>It will return the number of calls to the &quot;functionEach&quot; function that were performed (which should be the same number as the {@link CB_AudioFile} objects used by the sound instances that belong to the sprites of each sprites group). Note that if a value greater than 0 (zero) for the &quot;delayBetweenEach&quot; parameter has been provided, perhaps not all calls of the &quot;functionEach&quot; function will have been performed yet when exiting this method because of the asynchronous nature of the [setTimeout]{@link https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/setTimeout} function.</p>"}],"todo":["Think about implementing a \"returnSetTimeoutsArray\" or similar (as in {@link CB_AudioFileSprites#executeFunctionAllSprites}).","Think about consider executing only one by one (now it will loop {@link CB_AudioFile} objects from different sprites groups simultaneously)."],"name":"executeFunctionAllSprites","longname":"CB_AudioFileSpritesPool#executeFunctionAllSprites","memberof":"CB_AudioFileSpritesPool","scope":"instance"},{"comment":"/**\r\n * Cleans the arrays of the {@link CB_AudioFile} objects (taking off the undefined or null ones) which is in the {@link CB_AudioFileCache#audioFiles} property used by each {@link CB_AudioFileSprites} object, just keeping the valid ones and clearing (destroying and removing) the others. For performance purposes. Uses the {@link CB_AudioFileSprites#clearAudioFiles} method internally. Internal usage only recommended.\r\n * @function\r\n * @param {boolean} [avoidCallingCheckCacheLoaded=false] - Used as the \"avoidCallingCheckCacheLoaded\" parameter when calling the {@link CB_AudioFileSprites#clearAudioFiles} method internally.\r\n * @returns {array} Returns an object whose each property name is the sprites group ID and each value is the returning value of calling internally the {@link CB_AudioFileSprites#clearAudioFiles} method.\r\n */","meta":{"range":[59102,59419],"filename":"CB_AudioFileSpritesPool.js","lineno":809,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100016968","name":"CB_AudioFileSpritesPool.prototype.clearAudioFiles","type":"FunctionExpression","paramnames":["avoidCallingCheckCacheLoaded"]},"vars":{"audioFiles":"CB_AudioFileSpritesPool#clearAudioFiles~audioFiles","spritesGroupId":"CB_AudioFileSpritesPool#clearAudioFiles~spritesGroupId","audioFiles[undefined]":"CB_AudioFileSpritesPool#clearAudioFiles~audioFiles.undefined]"}},"description":"<p>Cleans the arrays of the {@link CB_AudioFile} objects (taking off the undefined or null ones) which is in the {@link CB_AudioFileCache#audioFiles} property used by each {@link CB_AudioFileSprites} object, just keeping the valid ones and clearing (destroying and removing) the others. For performance purposes. Uses the {@link CB_AudioFileSprites#clearAudioFiles} method internally. Internal usage only recommended.</p>","kind":"function","params":[{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>Used as the &quot;avoidCallingCheckCacheLoaded&quot; parameter when calling the {@link CB_AudioFileSprites#clearAudioFiles} method internally.</p>","name":"avoidCallingCheckCacheLoaded"}],"returns":[{"type":{"names":["array"]},"description":"<p>Returns an object whose each property name is the sprites group ID and each value is the returning value of calling internally the {@link CB_AudioFileSprites#clearAudioFiles} method.</p>"}],"name":"clearAudioFiles","longname":"CB_AudioFileSpritesPool#clearAudioFiles","memberof":"CB_AudioFileSpritesPool","scope":"instance"},{"comment":"/**\r\n * Tries to purge the audio file cache of each {@link CB_AudioFileSprites} object until it reaches a desired number of {@link CB_AudioFile} objects internally (set in the {@link CB_AudioFileCache#audioFiles} property), by removing and destroying some of the current {@link CB_AudioFile} objects. Note that the desired number is for each {@link CB_AudioFileSprites} object and not a global number. For performance purposes. Uses the {@link CB_AudioFileSprites#purge} method internally.\r\n * @function\r\n * @param {integer} desiredNumber - Used as the \"desiredNumber\" parameter when calling the {@link CB_AudioFileSprites#purge} method internally. Note that the desired number is for each {@link CB_AudioFileSprites} object and not a global number.\r\n * @param {boolean} [setAsMinimumAudioFiles=false] - Used as the \"setAsMinimumAudioFiles\" parameter when calling the {@link CB_AudioFileSprites#purge} method internally.\r\n * @param {boolean} [includePlaying=false] - Used as the \"includePlaying\" parameter when calling the {@link CB_AudioFileSprites#purge} method internally.\r\n * @param {boolean} [stopSounds=false] - Used as the \"stopSounds\" parameter when calling the {@link CB_AudioFileSprites#purge} method internally.\r\n * @param {array} [statuses=Array({@link CB_AudioFile.LOADING}, {@link CB_AudioFile.UNCHECKED}, {@link CB_AudioFile.CHECKING}, {@link CB_AudioFile.LOADED})] - Used as the \"statuses\" parameter when calling the {@link CB_AudioFileSprites#purge} method internally.\r\n * @returns {integer} Returns the number of {@link CB_AudioFile} objects removed.\r\n */","meta":{"range":[61007,61394],"filename":"CB_AudioFileSpritesPool.js","lineno":830,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100017006","name":"CB_AudioFileSpritesPool.prototype.purge","type":"FunctionExpression","paramnames":["desiredNumber","setAsMinimumAudioFiles","includePlaying","stopSounds","statuses"]},"vars":{"objectsRemoved":"CB_AudioFileSpritesPool#purge~objectsRemoved","spritesGroupId":"CB_AudioFileSpritesPool#purge~spritesGroupId"}},"description":"<p>Tries to purge the audio file cache of each {@link CB_AudioFileSprites} object until it reaches a desired number of {@link CB_AudioFile} objects internally (set in the {@link CB_AudioFileCache#audioFiles} property), by removing and destroying some of the current {@link CB_AudioFile} objects. Note that the desired number is for each {@link CB_AudioFileSprites} object and not a global number. For performance purposes. Uses the {@link CB_AudioFileSprites#purge} method internally.</p>","kind":"function","params":[{"type":{"names":["integer"]},"description":"<p>Used as the &quot;desiredNumber&quot; parameter when calling the {@link CB_AudioFileSprites#purge} method internally. Note that the desired number is for each {@link CB_AudioFileSprites} object and not a global number.</p>","name":"desiredNumber"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>Used as the &quot;setAsMinimumAudioFiles&quot; parameter when calling the {@link CB_AudioFileSprites#purge} method internally.</p>","name":"setAsMinimumAudioFiles"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>Used as the &quot;includePlaying&quot; parameter when calling the {@link CB_AudioFileSprites#purge} method internally.</p>","name":"includePlaying"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>Used as the &quot;stopSounds&quot; parameter when calling the {@link CB_AudioFileSprites#purge} method internally.</p>","name":"stopSounds"},{"type":{"names":["array"]},"optional":true,"defaultvalue":"Array({@link CB_AudioFile.LOADING}, {@link CB_AudioFile.UNCHECKED}, {@link CB_AudioFile.CHECKING}, {@link CB_AudioFile.LOADED})","description":"<p>Used as the &quot;statuses&quot; parameter when calling the {@link CB_AudioFileSprites#purge} method internally.</p>","name":"statuses"}],"returns":[{"type":{"names":["integer"]},"description":"<p>Returns the number of {@link CB_AudioFile} objects removed.</p>"}],"name":"purge","longname":"CB_AudioFileSpritesPool#purge","memberof":"CB_AudioFileSpritesPool","scope":"instance"},{"comment":"/**\r\n * Tells whether a desired {@link CB_AudioFile} object is free (it is in the {@link CB_AudioFileCache#audioFilesFree} property of any {@link CB_AudioFileSprites} object) or not, by its identifier. A free {@link CB_AudioFile} object is an object which is not being used and it is available to be used. Uses the {@link CB_AudioFileSprites#isAudioFileFree} method internally.\r\n * @function\r\n * @param {string} id - Used as the \"id\" parameter when calling the {@link CB_AudioFileSprites#isAudioFileFree} method internally.\r\n * @returns {boolean} Returns whether a desired {@link CB_AudioFile} object is free (it is in the {@link CB_AudioFileCache#audioFilesFree} property of any {@link CB_AudioFileSprites} object) or not, by its identifier. A free {@link CB_AudioFile} object is an object which is not being used and it is available to be used.\r\n */","meta":{"range":[62256,62485],"filename":"CB_AudioFileSpritesPool.js","lineno":847,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100017050","name":"CB_AudioFileSpritesPool.prototype.isAudioFileFree","type":"FunctionExpression","paramnames":["id"]},"vars":{"spritesGroupId":"CB_AudioFileSpritesPool#isAudioFileFree~spritesGroupId"}},"description":"<p>Tells whether a desired {@link CB_AudioFile} object is free (it is in the {@link CB_AudioFileCache#audioFilesFree} property of any {@link CB_AudioFileSprites} object) or not, by its identifier. A free {@link CB_AudioFile} object is an object which is not being used and it is available to be used. Uses the {@link CB_AudioFileSprites#isAudioFileFree} method internally.</p>","kind":"function","params":[{"type":{"names":["string"]},"description":"<p>Used as the &quot;id&quot; parameter when calling the {@link CB_AudioFileSprites#isAudioFileFree} method internally.</p>","name":"id"}],"returns":[{"type":{"names":["boolean"]},"description":"<p>Returns whether a desired {@link CB_AudioFile} object is free (it is in the {@link CB_AudioFileCache#audioFilesFree} property of any {@link CB_AudioFileSprites} object) or not, by its identifier. A free {@link CB_AudioFile} object is an object which is not being used and it is available to be used.</p>"}],"name":"isAudioFileFree","longname":"CB_AudioFileSpritesPool#isAudioFileFree","memberof":"CB_AudioFileSpritesPool","scope":"instance"},{"comment":"/**\r\n * Clears the sound instances (created by the {@link CB_AudioFileCache#play} method) which have been cancelled. Uses the {@link CB_AudioFileSprites#clearSoundInstances} method internally.\r\n * @function\r\n * @param {boolean} [clearWithObjectAssociated=false] - Used as the \"clearWithObjectAssociated\" parameter when calling the {@link CB_AudioFileSprites#clearSoundInstances} method internally.\r\n * @returns {integer} Returns the number of cleared sound instances.\r\n */","meta":{"range":[62968,63262],"filename":"CB_AudioFileSpritesPool.js","lineno":863,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100017083","name":"CB_AudioFileSpritesPool.prototype.clearSoundInstances","type":"FunctionExpression","paramnames":["clearWithObjectAssociated"]},"vars":{"cleared":"CB_AudioFileSpritesPool#clearSoundInstances~cleared","spritesGroupId":"CB_AudioFileSpritesPool#clearSoundInstances~spritesGroupId"}},"description":"<p>Clears the sound instances (created by the {@link CB_AudioFileCache#play} method) which have been cancelled. Uses the {@link CB_AudioFileSprites#clearSoundInstances} method internally.</p>","kind":"function","params":[{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>Used as the &quot;clearWithObjectAssociated&quot; parameter when calling the {@link CB_AudioFileSprites#clearSoundInstances} method internally.</p>","name":"clearWithObjectAssociated"}],"returns":[{"type":{"names":["integer"]},"description":"<p>Returns the number of cleared sound instances.</p>"}],"name":"clearSoundInstances","longname":"CB_AudioFileSpritesPool#clearSoundInstances","memberof":"CB_AudioFileSpritesPool","scope":"instance"},{"comment":"/**\r\n * Cancels (to prevent they start playing) or enables all sound instances (created by the {@link CB_AudioFileCache#play} method). Uses the {@link CB_AudioFileSprites#cancelSoundInstances} method internally.\r\n * @function\r\n * @param {boolean} [cancel=false] - Used as the \"cancel\" parameter when calling the {@link CB_AudioFileSprites#cancelSoundInstances} method internally.\r\n * @param {boolean} [affectWithObjectAssociated=false] - Used as the \"affectWithObjectAssociated\" parameter when calling the {@link CB_AudioFileSprites#cancelSoundInstances} method internally.\r\n * @returns {integer} Returns the number of sound instances modified.\r\n */","meta":{"range":[63923,64243],"filename":"CB_AudioFileSpritesPool.js","lineno":881,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100017119","name":"CB_AudioFileSpritesPool.prototype.cancelSoundInstances","type":"FunctionExpression","paramnames":["cancel","affectWithObjectAssociated"]},"vars":{"performed":"CB_AudioFileSpritesPool#cancelSoundInstances~performed","spritesGroupId":"CB_AudioFileSpritesPool#cancelSoundInstances~spritesGroupId"}},"description":"<p>Cancels (to prevent they start playing) or enables all sound instances (created by the {@link CB_AudioFileCache#play} method). Uses the {@link CB_AudioFileSprites#cancelSoundInstances} method internally.</p>","kind":"function","params":[{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>Used as the &quot;cancel&quot; parameter when calling the {@link CB_AudioFileSprites#cancelSoundInstances} method internally.</p>","name":"cancel"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>Used as the &quot;affectWithObjectAssociated&quot; parameter when calling the {@link CB_AudioFileSprites#cancelSoundInstances} method internally.</p>","name":"affectWithObjectAssociated"}],"returns":[{"type":{"names":["integer"]},"description":"<p>Returns the number of sound instances modified.</p>"}],"name":"cancelSoundInstances","longname":"CB_AudioFileSpritesPool#cancelSoundInstances","memberof":"CB_AudioFileSpritesPool","scope":"instance"},{"comment":"/**\r\n * Cancels (to prevent it starts playing) or enables a sound instance (created by the {@link CB_AudioFileCache#play} method), by its identifier. Uses the {@link CB_AudioFileSprites#cancelSoundInstance} method internally.\r\n * @function\r\n * @param {integer} soundInstanceId - Used as the \"soundInstanceId\" parameter when calling the {@link CB_AudioFileSprites#cancelSoundInstance} method internally.\r\n * @param {boolean} [cancel=false] - Used as the \"cancel\" parameter when calling the {@link CB_AudioFileSprites#cancelSoundInstance} method internally.\r\n * @param {boolean} [affectWithObjectAssociated=false] - Used as the \"affectWithObjectAssociated\" parameter when calling the {@link CB_AudioFileSprites#cancelSoundInstance} method internally.\r\n * @returns {boolean} Returns true if the sound instance has been modified or false otherwise.\r\n */","meta":{"range":[65105,65440],"filename":"CB_AudioFileSpritesPool.js","lineno":900,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100017157","name":"CB_AudioFileSpritesPool.prototype.cancelSoundInstance","type":"FunctionExpression","paramnames":["soundInstanceId","cancel","affectWithObjectAssociated"]},"vars":{"spritesGroupId":"CB_AudioFileSpritesPool#cancelSoundInstance~spritesGroupId"}},"description":"<p>Cancels (to prevent it starts playing) or enables a sound instance (created by the {@link CB_AudioFileCache#play} method), by its identifier. Uses the {@link CB_AudioFileSprites#cancelSoundInstance} method internally.</p>","kind":"function","params":[{"type":{"names":["integer"]},"description":"<p>Used as the &quot;soundInstanceId&quot; parameter when calling the {@link CB_AudioFileSprites#cancelSoundInstance} method internally.</p>","name":"soundInstanceId"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>Used as the &quot;cancel&quot; parameter when calling the {@link CB_AudioFileSprites#cancelSoundInstance} method internally.</p>","name":"cancel"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>Used as the &quot;affectWithObjectAssociated&quot; parameter when calling the {@link CB_AudioFileSprites#cancelSoundInstance} method internally.</p>","name":"affectWithObjectAssociated"}],"returns":[{"type":{"names":["boolean"]},"description":"<p>Returns true if the sound instance has been modified or false otherwise.</p>"}],"name":"cancelSoundInstance","longname":"CB_AudioFileSpritesPool#cancelSoundInstance","memberof":"CB_AudioFileSpritesPool","scope":"instance"},{"comment":"/**\r\n * Gets the {@link CB_AudioFile} object associated to a given sound instance ID (created by the {@link CB_AudioFileCache#play} method), if any, or null otherwise. Uses the {@link CB_AudioFileSprites#getAudioFileBySoundInstanceId} method internally.\r\n * @function\r\n * @param {integer} soundInstanceId - Used as the \"soundInstanceId\" parameter when calling the {@link CB_AudioFileSprites#getAudioFileBySoundInstanceId} method internally.\r\n * @param {boolean} [avoidCancelled=false] - Used as the \"avoidCancelled\" parameter when calling the {@link CB_AudioFileSprites#getAudioFileBySoundInstanceId} method internally.\r\n * @returns {CB_AudioFile|null} Returns the {@link CB_AudioFile} object associated to a given sound instance ID, if any, or null otherwise.\r\n */","meta":{"range":[66217,66625],"filename":"CB_AudioFileSpritesPool.js","lineno":917,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100017194","name":"CB_AudioFileSpritesPool.prototype.getAudioFileBySoundInstanceId","type":"FunctionExpression","paramnames":["soundInstanceId","avoidCancelled"]},"vars":{"audioFile":"CB_AudioFileSpritesPool#getAudioFileBySoundInstanceId~audioFile","spritesGroupId":"CB_AudioFileSpritesPool#getAudioFileBySoundInstanceId~spritesGroupId"}},"description":"<p>Gets the {@link CB_AudioFile} object associated to a given sound instance ID (created by the {@link CB_AudioFileCache#play} method), if any, or null otherwise. Uses the {@link CB_AudioFileSprites#getAudioFileBySoundInstanceId} method internally.</p>","kind":"function","params":[{"type":{"names":["integer"]},"description":"<p>Used as the &quot;soundInstanceId&quot; parameter when calling the {@link CB_AudioFileSprites#getAudioFileBySoundInstanceId} method internally.</p>","name":"soundInstanceId"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>Used as the &quot;avoidCancelled&quot; parameter when calling the {@link CB_AudioFileSprites#getAudioFileBySoundInstanceId} method internally.</p>","name":"avoidCancelled"}],"returns":[{"type":{"names":["CB_AudioFile","null"]},"description":"<p>Returns the {@link CB_AudioFile} object associated to a given sound instance ID, if any, or null otherwise.</p>"}],"name":"getAudioFileBySoundInstanceId","longname":"CB_AudioFileSpritesPool#getAudioFileBySoundInstanceId","memberof":"CB_AudioFileSpritesPool","scope":"instance"},{"comment":"/**\r\n * Alias for {@link CB_AudioFileSpritesPool#executeFunctionAll}.\r\n * @function CB_AudioFileSpritesPool#executeAll\r\n * @see {@link CB_AudioFileSpritesPool#executeFunctionAll}\r\n */","meta":{"filename":"CB_AudioFileSpritesPool.js","lineno":929,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{}},"description":"<p>Alias for {@link CB_AudioFileSpritesPool#executeFunctionAll}.</p>","kind":"function","name":"executeAll","see":["{@link CB_AudioFileSpritesPool#executeFunctionAll}"],"memberof":"CB_AudioFileSpritesPool","longname":"CB_AudioFileSpritesPool#executeAll","scope":"instance"},{"comment":"/**\r\n * Alias for {@link CB_AudioFileSpritesPool#executeFunctionAll}.\r\n * @function CB_AudioFileSpritesPool#forEach\r\n * @see {@link CB_AudioFileSpritesPool#executeFunctionAll}\r\n */","meta":{"filename":"CB_AudioFileSpritesPool.js","lineno":934,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{}},"description":"<p>Alias for {@link CB_AudioFileSpritesPool#executeFunctionAll}.</p>","kind":"function","name":"forEach","see":["{@link CB_AudioFileSpritesPool#executeFunctionAll}"],"memberof":"CB_AudioFileSpritesPool","longname":"CB_AudioFileSpritesPool#forEach","scope":"instance"},{"comment":"/**\r\n * Performs a desired action, using the provided function, on all the existing {@link CB_AudioFile} objects or on the desired ones (if provided). Uses the {@link CB_AudioFileSprites#executeFunctionAll} method internally.\r\n * @function\r\n * @param {CB_Arrays.CB_Arrays.executeFunctionAll_ON_LOOP_CALLBACK} functionEach - Used as the \"functionEach\" parameter when calling the {@link CB_AudioFileSprites#executeFunctionAll} method internally.\r\n * @param {number|CB_Arrays.executeFunctionAll_ON_LOOP_CALLBACK} [delayBetweenEach=0] - Used as the \"delayBetweenEach\" parameter when calling the {@link CB_AudioFileSprites#executeFunctionAll} method internally. Note that each call to the {@link CB_AudioFileSprites#executeFunctionAll} method will be performed sequentially one after the other, without adding a delay.\r\n * @param {array} [audioFiles={@link CB_AudioFileCache#audioFiles}] - Used as the \"audioFiles\" parameter when calling the {@link CB_AudioFileSprites#executeFunctionAll} method internally.\r\n * @param {boolean} [returnArrayOfSetTimeoutsArray=false] - If it is set to false, it will return the number of calls to the \"functionEach\" function that were performed. Otherwise, if it is set to true, it will return a numeric array and each value (which will belong to each sprites group) will be another numeric array with a {@link CB_AudioFileCache.executeFunctionAll_OBJECT} object for each {@link CB_AudioFile} of that sprites group.\r\n * @param {boolean} [delayBetweenEachAffectsFirst=false] - Used as the \"delayBetweenEachAffectsFirst\" parameter when calling the {@link CB_AudioFileSprites#executeFunctionAll} method internally. Note that each call to the {@link CB_AudioFileSprites#executeFunctionAll} method will be performed sequentially one after the other, without adding a delay.\r\n * @param {CB_AudioFileSpritesPool.executeFunctionAll_ON_FINISH_CALLBACK} [functionFinish] - Function that will be called for when it has finished looping all the items. The first parameter will be the array containing all the items which were looped, the second parameter will be the number of times that the \"functionEach\" callback was called (the most likely, matches the number of elements unless they are undefined or null), and the third parameter will be the maximum \"delay\" used, being \"this\" the array itself.\r\n * @returns {integer|array} If the \"returnArrayOfSetTimeoutsArray\" parameter is set to false, it will return the number of calls to the \"functionEach\" function that were performed. Otherwise, if the \"returnArrayOfSetTimeoutsArray\" is set to true, it will return a numeric array and each value will be another numeric array with a {@link CB_AudioFileCache.executeFunctionAll_OBJECT} object for each {@link CB_AudioFile} given. Note that if a value greater than 0 (zero) for the \"delayBetweenEach\" parameter has been provided, perhaps not all calls of the \"functionEach\" function will have been performed yet when exiting this method because of the asynchronous nature of the [setTimeout]{@link https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/setTimeout} function.\r\n * @todo Think about consider executing only one by one (now it will loop {@link CB_AudioFile} objects from different sprites groups simultaneously).\r\n */","meta":{"range":[70279,72054],"filename":"CB_AudioFileSpritesPool.js","lineno":951,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100017243","name":"CB_AudioFileSpritesPool.prototype.executeFunctionAll","type":"AssignmentExpression","value":"CB_AudioFileSpritesPool.prototype.executeAll","paramnames":[]}},"description":"<p>Performs a desired action, using the provided function, on all the existing {@link CB_AudioFile} objects or on the desired ones (if provided). Uses the {@link CB_AudioFileSprites#executeFunctionAll} method internally.</p>","kind":"function","params":[{"type":{"names":["CB_Arrays.CB_Arrays.executeFunctionAll_ON_LOOP_CALLBACK"]},"description":"<p>Used as the &quot;functionEach&quot; parameter when calling the {@link CB_AudioFileSprites#executeFunctionAll} method internally.</p>","name":"functionEach"},{"type":{"names":["number","CB_Arrays.executeFunctionAll_ON_LOOP_CALLBACK"]},"optional":true,"defaultvalue":0,"description":"<p>Used as the &quot;delayBetweenEach&quot; parameter when calling the {@link CB_AudioFileSprites#executeFunctionAll} method internally. Note that each call to the {@link CB_AudioFileSprites#executeFunctionAll} method will be performed sequentially one after the other, without adding a delay.</p>","name":"delayBetweenEach"},{"type":{"names":["array"]},"optional":true,"defaultvalue":"{@link CB_AudioFileCache#audioFiles}","description":"<p>Used as the &quot;audioFiles&quot; parameter when calling the {@link CB_AudioFileSprites#executeFunctionAll} method internally.</p>","name":"audioFiles"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If it is set to false, it will return the number of calls to the &quot;functionEach&quot; function that were performed. Otherwise, if it is set to true, it will return a numeric array and each value (which will belong to each sprites group) will be another numeric array with a {@link CB_AudioFileCache.executeFunctionAll_OBJECT} object for each {@link CB_AudioFile} of that sprites group.</p>","name":"returnArrayOfSetTimeoutsArray"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>Used as the &quot;delayBetweenEachAffectsFirst&quot; parameter when calling the {@link CB_AudioFileSprites#executeFunctionAll} method internally. Note that each call to the {@link CB_AudioFileSprites#executeFunctionAll} method will be performed sequentially one after the other, without adding a delay.</p>","name":"delayBetweenEachAffectsFirst"},{"type":{"names":["CB_AudioFileSpritesPool.executeFunctionAll_ON_FINISH_CALLBACK"]},"optional":true,"description":"<p>Function that will be called for when it has finished looping all the items. The first parameter will be the array containing all the items which were looped, the second parameter will be the number of times that the &quot;functionEach&quot; callback was called (the most likely, matches the number of elements unless they are undefined or null), and the third parameter will be the maximum &quot;delay&quot; used, being &quot;this&quot; the array itself.</p>","name":"functionFinish"}],"returns":[{"type":{"names":["integer","array"]},"description":"<p>If the &quot;returnArrayOfSetTimeoutsArray&quot; parameter is set to false, it will return the number of calls to the &quot;functionEach&quot; function that were performed. Otherwise, if the &quot;returnArrayOfSetTimeoutsArray&quot; is set to true, it will return a numeric array and each value will be another numeric array with a {@link CB_AudioFileCache.executeFunctionAll_OBJECT} object for each {@link CB_AudioFile} given. Note that if a value greater than 0 (zero) for the &quot;delayBetweenEach&quot; parameter has been provided, perhaps not all calls of the &quot;functionEach&quot; function will have been performed yet when exiting this method because of the asynchronous nature of the [setTimeout]{@link https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/setTimeout} function.</p>"}],"todo":["Think about consider executing only one by one (now it will loop {@link CB_AudioFile} objects from different sprites groups simultaneously)."],"name":"executeFunctionAll","longname":"CB_AudioFileSpritesPool#executeFunctionAll","memberof":"CB_AudioFileSpritesPool","scope":"instance"},{"comment":"/**\r\n * Destroys all the {@link CB_AudioFile} objects and frees memory, by calling {@link CB_AudioFile#destructor}(stopSounds, false, true). Uses the {@link CB_AudioFileSprites#destroyAll} method internally.\r\n * @function\r\n * @param {boolean} [stopSounds=false] - Used as the \"stopSounds\" parameter when calling the {@link CB_AudioFileSprites#destroyAll} method internally.\r\n * @returns {integer} Returns the number of {@link CB_AudioFile} objects whose {@link CB_AudioFile#destructor} has been called.\r\n */","meta":{"range":[72572,72824],"filename":"CB_AudioFileSpritesPool.js","lineno":992,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100017416","name":"CB_AudioFileSpritesPool.prototype.destroyAll","type":"FunctionExpression","paramnames":["stopSounds"]},"vars":{"destroyed":"CB_AudioFileSpritesPool#destroyAll~destroyed","spritesGroupId":"CB_AudioFileSpritesPool#destroyAll~spritesGroupId"}},"description":"<p>Destroys all the {@link CB_AudioFile} objects and frees memory, by calling {@link CB_AudioFile#destructor}(stopSounds, false, true). Uses the {@link CB_AudioFileSprites#destroyAll} method internally.</p>","kind":"function","params":[{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>Used as the &quot;stopSounds&quot; parameter when calling the {@link CB_AudioFileSprites#destroyAll} method internally.</p>","name":"stopSounds"}],"returns":[{"type":{"names":["integer"]},"description":"<p>Returns the number of {@link CB_AudioFile} objects whose {@link CB_AudioFile#destructor} has been called.</p>"}],"name":"destroyAll","longname":"CB_AudioFileSpritesPool#destroyAll","memberof":"CB_AudioFileSpritesPool","scope":"instance"},{"comment":"/**\r\n * Callback function used by the {@link CB_AudioFileSpritesPool#checkPlayingAll} method that will be called when all the process was performed successfully.\r\n * @memberof CB_AudioFileSpritesPool\r\n * @callback CB_AudioFileSpritesPool.checkPlayingAll_CALLBACK_OK\r\n * @param {integer} performedActions - The number of {@link CB_AudioFile} objects that can be played.\r\n * @param {integer} uncheckedObjects - The number of {@link CB_AudioFile} objects that needed to be checked before calling this method.\r\n */","meta":{"filename":"CB_AudioFileSpritesPool.js","lineno":1003,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{}},"description":"<p>Callback function used by the {@link CB_AudioFileSpritesPool#checkPlayingAll} method that will be called when all the process was performed successfully.</p>","memberof":"CB_AudioFileSpritesPool","kind":"typedef","name":"checkPlayingAll_CALLBACK_OK","type":{"names":["function"]},"params":[{"type":{"names":["integer"]},"description":"<p>The number of {@link CB_AudioFile} objects that can be played.</p>","name":"performedActions"},{"type":{"names":["integer"]},"description":"<p>The number of {@link CB_AudioFile} objects that needed to be checked before calling this method.</p>","name":"uncheckedObjects"}],"longname":"CB_AudioFileSpritesPool.checkPlayingAll_CALLBACK_OK","scope":"static"},{"comment":"/**\r\n * Callback function used by the {@link CB_AudioFileSpritesPool#checkPlayingAll} method that will be called when not all was performed successfully.\r\n * @memberof CB_AudioFileSpritesPool\r\n * @callback CB_AudioFileSpritesPool.checkPlayingAll_CALLBACK_ERROR\r\n * @param {Object} errorsObject - Object whose property names are the ID of each sprites group or \"GENERAL_ERROR\" if the error is not related to any sprites group and their value will be a {@link CB_AudioFileSpritesPool.checkPlayingAll_CALLBACK_ERROR_OBJECT} object.\r\n * @param {integer} performedActions - The number of {@link CB_AudioFile} objects that can be played).\r\n * @param {integer|undefined} uncheckedObjects - The number of {@link CB_AudioFile} objects that needed to be checked before calling this method (it will be undefined if it could not be determined).\r\n */","meta":{"filename":"CB_AudioFileSpritesPool.js","lineno":1011,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{}},"description":"<p>Callback function used by the {@link CB_AudioFileSpritesPool#checkPlayingAll} method that will be called when not all was performed successfully.</p>","memberof":"CB_AudioFileSpritesPool","kind":"typedef","name":"checkPlayingAll_CALLBACK_ERROR","type":{"names":["function"]},"params":[{"type":{"names":["Object"]},"description":"<p>Object whose property names are the ID of each sprites group or &quot;GENERAL_ERROR&quot; if the error is not related to any sprites group and their value will be a {@link CB_AudioFileSpritesPool.checkPlayingAll_CALLBACK_ERROR_OBJECT} object.</p>","name":"errorsObject"},{"type":{"names":["integer"]},"description":"<p>The number of {@link CB_AudioFile} objects that can be played).</p>","name":"performedActions"},{"type":{"names":["integer","undefined"]},"description":"<p>The number of {@link CB_AudioFile} objects that needed to be checked before calling this method (it will be undefined if it could not be determined).</p>","name":"uncheckedObjects"}],"longname":"CB_AudioFileSpritesPool.checkPlayingAll_CALLBACK_ERROR","scope":"static"},{"comment":"/**\r\n * An object with errors, used by the {@link CB_AudioFileSpritesPool.checkPlayingAll_CALLBACK_ERROR} callback (used by the {@link CB_AudioFileSpritesPool#checkPlayingAll} method).\r\n * @memberof CB_AudioFileSpritesPool\r\n * @typedef {Object} CB_AudioFileSpritesPool.checkPlayingAll_CALLBACK_ERROR_OBJECT\r\n * @property {string} error - A string describing the error (if it was possible to be determined).\r\n * @property {integer} checked - The number of {@link CB_AudioFile} objects that can be played.\r\n * @property {integer|undefined} needed - The number of {@link CB_AudioFile} objects that needed to be checked before calling this method (it will be undefined if it could not be determined).\r\n */","meta":{"filename":"CB_AudioFileSpritesPool.js","lineno":1020,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{}},"description":"<p>An object with errors, used by the {@link CB_AudioFileSpritesPool.checkPlayingAll_CALLBACK_ERROR} callback (used by the {@link CB_AudioFileSpritesPool#checkPlayingAll} method).</p>","memberof":"CB_AudioFileSpritesPool","kind":"typedef","name":"checkPlayingAll_CALLBACK_ERROR_OBJECT","type":{"names":["Object"]},"properties":[{"type":{"names":["string"]},"description":"<p>A string describing the error (if it was possible to be determined).</p>","name":"error"},{"type":{"names":["integer"]},"description":"<p>The number of {@link CB_AudioFile} objects that can be played.</p>","name":"checked"},{"type":{"names":["integer","undefined"]},"description":"<p>The number of {@link CB_AudioFile} objects that needed to be checked before calling this method (it will be undefined if it could not be determined).</p>","name":"needed"}],"longname":"CB_AudioFileSpritesPool.checkPlayingAll_CALLBACK_ERROR_OBJECT","scope":"static"},{"comment":"/**\r\n * Checks whether each {@link CB_AudioFile} object whose {@link CB_AudioFile#getStatus} method returns the \"unchecked\" value (which belongs to the value of the {@link CB_AudioFile#UNCHECKED} property) can be played or not. After checking, if the audio can be played, the status of the {@link CB_AudioFile} object will get the value of {@link CB_AudioFile.LOADED}. Otherwise, if it cannot be played, the status of the {@link CB_AudioFile} object will get the value of {@link CB_AudioFile.FAILED}. If a {@link CB_AudioFile} object cannot be played and it is determined necessary, it will try to reload it internally (by calling the {@link CB_AudioFileCache#removeAudioFile} method). It will call the {@link CB_AudioFileCache#clearAudioFiles} method internally after finishing each call to the {@link CB_AudioFileSprites#checkPlayingAll} method. Uses the {@link CB_AudioFileSprites#checkPlayingAll} method internally. Recommended to be called through a user-driven event (as onClick, onTouch, etc.).\r\n * @function\r\n * @param {CB_AudioFileSpritesPool.checkPlayingAll_CALLBACK_OK} [callbackOk] - A function which will be called if all the {@link CB_AudioFile} objects whose {@link CB_AudioFile#getStatus} method returned the \"unchecked\" value (which belongs to the value of the {@link CB_AudioFile#UNCHECKED} property) could finally be checked successfully and all can be played, being \"this\" the {@link CB_AudioFileSpritesPool} object itself.\r\n * @param {CB_AudioFileSpritesPool.checkPlayingAll_CALLBACK_ERROR} [callbackError] - A function which will be called if not all the {@link CB_AudioFile} objects whose {@link CB_AudioFile#getStatus} method returned the \"unchecked\" value (which belongs to the value of the {@link CB_AudioFile#UNCHECKED} property) could finally be checked successfully and any cannot be played, being \"this\" the {@link CB_AudioFileSpritesPool} object itself. This function will be called immediately if the method was previously called and it is still running currently.\r\n * @param {boolean} [ignoreQueue=false] - Used as the \"ignoreQueue\" parameter when calling the {@link CB_AudioFileSprites#checkPlayingAll} method internally.\r\n * @param {boolean} [ignoreStatus=false] - If it is set to false and the sprites pool object is loaded (the {@link CB_AudioFileSpritesPool#getStatus} method returns the value set in the {@link CB_AudioFileSpritesPool.LOADED} property), it will exit returning an error. Otherwise, if it is set to true, it will ignore the current sprites pool object status.\r\n * @returns {integer} Returns the number of {@link CB_AudioFile} objects whose status belonged to the \"unchecked\" value (the value of the {@link CB_AudioFile#UNCHECKED} property) before the execution of this method. It will return 0 (zero) if the method is tried to be executed while there is another previous call of it still running. It will also return 0 (zero) if the status of audio sprites pool is neither loaded (the {@link CB_AudioFileSpritesPool#getStatus} method does not returns the value set in the {@link CB_AudioFileSpritesPool.LOADED} property) nor unchecked (the {@link CB_AudioFileSpritesPool#status} method does not return the value set in the {@link CB_AudioFileSpritesPool.UNCHECKED} property).\r\n */","meta":{"range":[78148,80510],"filename":"CB_AudioFileSpritesPool.js","lineno":1038,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100017452","name":"CB_AudioFileSpritesPool.prototype.checkPlayingAll","type":"FunctionExpression","paramnames":["callbackOk","callbackError","ignoreQueue","ignoreStatus"]},"vars":{"errorMessage":"CB_AudioFileSpritesPool#checkPlayingAll~errorMessage","this._checkPlayingAllPerforming":"CB_AudioFileSpritesPool#_checkPlayingAllPerforming","uncheckedObjects":"CB_AudioFileSpritesPool#checkPlayingAll~uncheckedObjects","failed":"CB_AudioFileSpritesPool#checkPlayingAll~failed","succeeded":"CB_AudioFileSpritesPool#checkPlayingAll~succeeded","needed":"CB_AudioFileSpritesPool#checkPlayingAll~needed","objectsChecked":"CB_AudioFileSpritesPool#checkPlayingAll~objectsChecked","errorsChecking":"CB_AudioFileSpritesPool#checkPlayingAll~errorsChecking","spritesGroupId":"CB_AudioFileSpritesPool#checkPlayingAll~spritesGroupId","":null,"that":"CB_AudioFileSpritesPool#checkPlayingAll~that","this._checkPlayingAllInterval":"CB_AudioFileSpritesPool#_checkPlayingAllInterval"}},"description":"<p>Checks whether each {@link CB_AudioFile} object whose {@link CB_AudioFile#getStatus} method returns the &quot;unchecked&quot; value (which belongs to the value of the {@link CB_AudioFile#UNCHECKED} property) can be played or not. After checking, if the audio can be played, the status of the {@link CB_AudioFile} object will get the value of {@link CB_AudioFile.LOADED}. Otherwise, if it cannot be played, the status of the {@link CB_AudioFile} object will get the value of {@link CB_AudioFile.FAILED}. If a {@link CB_AudioFile} object cannot be played and it is determined necessary, it will try to reload it internally (by calling the {@link CB_AudioFileCache#removeAudioFile} method). It will call the {@link CB_AudioFileCache#clearAudioFiles} method internally after finishing each call to the {@link CB_AudioFileSprites#checkPlayingAll} method. Uses the {@link CB_AudioFileSprites#checkPlayingAll} method internally. Recommended to be called through a user-driven event (as onClick, onTouch, etc.).</p>","kind":"function","params":[{"type":{"names":["CB_AudioFileSpritesPool.checkPlayingAll_CALLBACK_OK"]},"optional":true,"description":"<p>A function which will be called if all the {@link CB_AudioFile} objects whose {@link CB_AudioFile#getStatus} method returned the &quot;unchecked&quot; value (which belongs to the value of the {@link CB_AudioFile#UNCHECKED} property) could finally be checked successfully and all can be played, being &quot;this&quot; the {@link CB_AudioFileSpritesPool} object itself.</p>","name":"callbackOk"},{"type":{"names":["CB_AudioFileSpritesPool.checkPlayingAll_CALLBACK_ERROR"]},"optional":true,"description":"<p>A function which will be called if not all the {@link CB_AudioFile} objects whose {@link CB_AudioFile#getStatus} method returned the &quot;unchecked&quot; value (which belongs to the value of the {@link CB_AudioFile#UNCHECKED} property) could finally be checked successfully and any cannot be played, being &quot;this&quot; the {@link CB_AudioFileSpritesPool} object itself. This function will be called immediately if the method was previously called and it is still running currently.</p>","name":"callbackError"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>Used as the &quot;ignoreQueue&quot; parameter when calling the {@link CB_AudioFileSprites#checkPlayingAll} method internally.</p>","name":"ignoreQueue"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If it is set to false and the sprites pool object is loaded (the {@link CB_AudioFileSpritesPool#getStatus} method returns the value set in the {@link CB_AudioFileSpritesPool.LOADED} property), it will exit returning an error. Otherwise, if it is set to true, it will ignore the current sprites pool object status.</p>","name":"ignoreStatus"}],"returns":[{"type":{"names":["integer"]},"description":"<p>Returns the number of {@link CB_AudioFile} objects whose status belonged to the &quot;unchecked&quot; value (the value of the {@link CB_AudioFile#UNCHECKED} property) before the execution of this method. It will return 0 (zero) if the method is tried to be executed while there is another previous call of it still running. It will also return 0 (zero) if the status of audio sprites pool is neither loaded (the {@link CB_AudioFileSpritesPool#getStatus} method does not returns the value set in the {@link CB_AudioFileSpritesPool.LOADED} property) nor unchecked (the {@link CB_AudioFileSpritesPool#status} method does not return the value set in the {@link CB_AudioFileSpritesPool.UNCHECKED} property).</p>"}],"name":"checkPlayingAll","longname":"CB_AudioFileSpritesPool#checkPlayingAll","memberof":"CB_AudioFileSpritesPool","scope":"instance"},{"comment":"/**\r\n * Tries to play all the {@link CB_AudioFile} objects by calling their {@link CB_AudioFile#play} method internally. If a {@link CB_AudioFile} object cannot be played and it is determined necessary, it will try to reload it internally (by calling the {@link CB_AudioFileCache#removeAudioFile} method). Uses the {@link CB_AudioFileSprites#playAll} method internally.\r\n * @function\r\n * @param {number} [startAt=0 | {@link CB_AudioFile_API.WAAPI#lastStartAt} | {@link CB_AudioFile_API.SM2#lastStartAt} | {@link CB_AudioFile_API.ACMP#lastStartAt} | {@link CB_AudioFile_API.AAPI#lastStartAt} | stopAt] - Used as the \"startAt\" parameter when calling the {@link CB_AudioFileSprites#playAll} method internally.\r\n * @param {number} [stopAt={@link CB_AudioFile_API.WAAPI#getDuration}() | {@link CB_AudioFile_API.SM2#getDuration}() | {@link CB_AudioFile_API.ACMP#getDuration}() | {@link CB_AudioFile_API.AAPI#getDuration}()] - Used as the \"stopAt\" parameter when calling the {@link CB_AudioFileSprites#playAll} method internally.\r\n * @param {boolean} [loop={@link CB_AudioFile#loop}] - Used as the \"loop\" parameter when calling the {@link CB_AudioFileSprites#playAll} method internally.\r\n * @param {number} [volume=CB_Configuration.CrossBase.CB_AudioFile_AudioFileCache_USE_SPEAKER_VOLUME_AS_DEFAULT ? CB_Speaker.getVolume() : CB_Configuration.CrossBase.CB_Speaker_DEFAULT_VOLUME] - Used as the \"volume\" parameter when calling the {@link CB_AudioFileSprites#playAll} method internally.\r\n * @param {boolean} [avoidDelayedPlay=false] - Used as the \"avoidDelayedPlay\" parameter when calling the {@link CB_AudioFileSprites#playAll} method internally.\r\n * @param {boolean} [allowedRecursiveDelay={@link CB_Configuration.CrossBase.CB_AudioFile_AudioFileCache_ALLOWED_RECURSIVE_DELAY_DEFAULT}] - Used as the \"allowedRecursiveDelay\" parameter when calling the {@link CB_AudioFileSprites#playAll} method internally.\r\n * @param {function} [onPlayStart] - Used as the \"onPlayStart\" parameter when calling the {@link CB_AudioFileSprites#playAll} method internally.\r\n * @param {function} [onStop] - Used as the \"onStop\" parameter when calling the {@link CB_AudioFileSprites#playAll} method internally.\r\n * @param {boolean} [includingPlaying=false] - Used as the \"includingPlaying\" parameter when calling the {@link CB_AudioFileSprites#playAll} method internally.\r\n * @returns {integer} Returns the number of {@link CB_AudioFile} objects whose {@link CB_AudioFile#play} method did not return the value of \"-1\" (this does not mean necessarily that they could be played successfully).\r\n */","meta":{"range":[83095,83530],"filename":"CB_AudioFileSpritesPool.js","lineno":1144,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100017724","name":"CB_AudioFileSpritesPool.prototype.playAll","type":"FunctionExpression","paramnames":["startAt","stopAt","loop","volume","avoidDelayedPlay","allowedRecursiveDelay","onPlayStart","onStop","includingPlaying"]},"vars":{"played":"CB_AudioFileSpritesPool#playAll~played","spritesGroupId":"CB_AudioFileSpritesPool#playAll~spritesGroupId"}},"description":"<p>Tries to play all the {@link CB_AudioFile} objects by calling their {@link CB_AudioFile#play} method internally. If a {@link CB_AudioFile} object cannot be played and it is determined necessary, it will try to reload it internally (by calling the {@link CB_AudioFileCache#removeAudioFile} method). Uses the {@link CB_AudioFileSprites#playAll} method internally.</p>","kind":"function","params":[{"type":{"names":["number"]},"optional":true,"defaultvalue":"0 | {@link CB_AudioFile_API.WAAPI#lastStartAt} | {@link CB_AudioFile_API.SM2#lastStartAt} | {@link CB_AudioFile_API.ACMP#lastStartAt} | {@link CB_AudioFile_API.AAPI#lastStartAt} | stopAt","description":"<p>Used as the &quot;startAt&quot; parameter when calling the {@link CB_AudioFileSprites#playAll} method internally.</p>","name":"startAt"},{"type":{"names":["number"]},"optional":true,"defaultvalue":"{@link CB_AudioFile_API.WAAPI#getDuration}() | {@link CB_AudioFile_API.SM2#getDuration}() | {@link CB_AudioFile_API.ACMP#getDuration}() | {@link CB_AudioFile_API.AAPI#getDuration}()","description":"<p>Used as the &quot;stopAt&quot; parameter when calling the {@link CB_AudioFileSprites#playAll} method internally.</p>","name":"stopAt"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":"{@link CB_AudioFile#loop}","description":"<p>Used as the &quot;loop&quot; parameter when calling the {@link CB_AudioFileSprites#playAll} method internally.</p>","name":"loop"},{"type":{"names":["number"]},"optional":true,"defaultvalue":"CB_Configuration.CrossBase.CB_AudioFile_AudioFileCache_USE_SPEAKER_VOLUME_AS_DEFAULT ? CB_Speaker.getVolume() : CB_Configuration.CrossBase.CB_Speaker_DEFAULT_VOLUME","description":"<p>Used as the &quot;volume&quot; parameter when calling the {@link CB_AudioFileSprites#playAll} method internally.</p>","name":"volume"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>Used as the &quot;avoidDelayedPlay&quot; parameter when calling the {@link CB_AudioFileSprites#playAll} method internally.</p>","name":"avoidDelayedPlay"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":"{@link CB_Configuration.CrossBase.CB_AudioFile_AudioFileCache_ALLOWED_RECURSIVE_DELAY_DEFAULT}","description":"<p>Used as the &quot;allowedRecursiveDelay&quot; parameter when calling the {@link CB_AudioFileSprites#playAll} method internally.</p>","name":"allowedRecursiveDelay"},{"type":{"names":["function"]},"optional":true,"description":"<p>Used as the &quot;onPlayStart&quot; parameter when calling the {@link CB_AudioFileSprites#playAll} method internally.</p>","name":"onPlayStart"},{"type":{"names":["function"]},"optional":true,"description":"<p>Used as the &quot;onStop&quot; parameter when calling the {@link CB_AudioFileSprites#playAll} method internally.</p>","name":"onStop"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>Used as the &quot;includingPlaying&quot; parameter when calling the {@link CB_AudioFileSprites#playAll} method internally.</p>","name":"includingPlaying"}],"returns":[{"type":{"names":["integer"]},"description":"<p>Returns the number of {@link CB_AudioFile} objects whose {@link CB_AudioFile#play} method did not return the value of &quot;-1&quot; (this does not mean necessarily that they could be played successfully).</p>"}],"name":"playAll","longname":"CB_AudioFileSpritesPool#playAll","memberof":"CB_AudioFileSpritesPool","scope":"instance"},{"comment":"/**\r\n * Tries to stops all the existing {@link CB_AudioFile} objects or the desired ones (if provided), which are being played, by calling their {@link CB_AudioFile#stop} method internally. Uses the {@link CB_AudioFileSprites#stopAll} method internally.\r\n * @function\r\n * @param {array} [audioFiles={@link CB_AudioFileCache#audioFiles}] - Used as the \"audioFiles\" parameter when calling the {@link CB_AudioFileSprites#stopAll} method internally.\r\n * @returns {integer} Returns the number of calls to the {@link CB_AudioFile#stop} method that were performed.\r\n */","meta":{"range":[84103,84349],"filename":"CB_AudioFileSpritesPool.js","lineno":1161,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100017776","name":"CB_AudioFileSpritesPool.prototype.stopAll","type":"FunctionExpression","paramnames":["audioFiles"]},"vars":{"performed":"CB_AudioFileSpritesPool#stopAll~performed","spritesGroupId":"CB_AudioFileSpritesPool#stopAll~spritesGroupId"}},"description":"<p>Tries to stops all the existing {@link CB_AudioFile} objects or the desired ones (if provided), which are being played, by calling their {@link CB_AudioFile#stop} method internally. Uses the {@link CB_AudioFileSprites#stopAll} method internally.</p>","kind":"function","params":[{"type":{"names":["array"]},"optional":true,"defaultvalue":"{@link CB_AudioFileCache#audioFiles}","description":"<p>Used as the &quot;audioFiles&quot; parameter when calling the {@link CB_AudioFileSprites#stopAll} method internally.</p>","name":"audioFiles"}],"returns":[{"type":{"names":["integer"]},"description":"<p>Returns the number of calls to the {@link CB_AudioFile#stop} method that were performed.</p>"}],"name":"stopAll","longname":"CB_AudioFileSpritesPool#stopAll","memberof":"CB_AudioFileSpritesPool","scope":"instance"},{"comment":"/**\r\n * Plays silently and stops all {@link CB_AudioFile} objects after a desired time. It can be useful for some clients which need the {@link CB_AudioFile#play} method to be called through a user-driven event (as onClick, onTouch, etc.). Internally, it calls {@link CB_AudioFileCache#playAll}(0, null, false, 0, true, null, null, null, includingPlaying) and, after a desired delay, calls the {@link CB_AudioFileCache#stopAll} method. Uses the {@link CB_AudioFileSprites#playAndStopAll} method internally.\r\n * @function\r\n * @param {boolean} [includingPlaying=false] - Used as the \"includingPlaying\" parameter when calling the {@link CB_AudioFileSprites#playAndStopAll} method internally.\r\n * @param {number} [delayBeforeStop=100] - Used as the \"delayBeforeStop\" parameter when calling the {@link CB_AudioFileSprites#playAndStopAll} method internally.\r\n * @returns {integer} Returns the number of {@link CB_AudioFile} objects whose {@link CB_AudioFile#play} method did not return the value of \"-1\" (this does not mean necessarily that they could be played successfully).\r\n */","meta":{"range":[85436,85733],"filename":"CB_AudioFileSpritesPool.js","lineno":1179,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100017812","name":"CB_AudioFileSpritesPool.prototype.playAndStopAll","type":"FunctionExpression","paramnames":["includingPlaying","delayBeforeStop"]},"vars":{"played":"CB_AudioFileSpritesPool#playAndStopAll~played","spritesGroupId":"CB_AudioFileSpritesPool#playAndStopAll~spritesGroupId"}},"description":"<p>Plays silently and stops all {@link CB_AudioFile} objects after a desired time. It can be useful for some clients which need the {@link CB_AudioFile#play} method to be called through a user-driven event (as onClick, onTouch, etc.). Internally, it calls {@link CB_AudioFileCache#playAll}(0, null, false, 0, true, null, null, null, includingPlaying) and, after a desired delay, calls the {@link CB_AudioFileCache#stopAll} method. Uses the {@link CB_AudioFileSprites#playAndStopAll} method internally.</p>","kind":"function","params":[{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>Used as the &quot;includingPlaying&quot; parameter when calling the {@link CB_AudioFileSprites#playAndStopAll} method internally.</p>","name":"includingPlaying"},{"type":{"names":["number"]},"optional":true,"defaultvalue":100,"description":"<p>Used as the &quot;delayBeforeStop&quot; parameter when calling the {@link CB_AudioFileSprites#playAndStopAll} method internally.</p>","name":"delayBeforeStop"}],"returns":[{"type":{"names":["integer"]},"description":"<p>Returns the number of {@link CB_AudioFile} objects whose {@link CB_AudioFile#play} method did not return the value of &quot;-1&quot; (this does not mean necessarily that they could be played successfully).</p>"}],"name":"playAndStopAll","longname":"CB_AudioFileSpritesPool#playAndStopAll","memberof":"CB_AudioFileSpritesPool","scope":"instance"},{"comment":"/**\r\n * Tries to pause all the existing {@link CB_AudioFile} objects or the desired ones (if provided), which are being played, by calling their {@link CB_AudioFile#pause} method internally. Uses the {@link CB_AudioFileSprites#pauseAll} method internally.\r\n * @function\r\n * @param {function} [onPause] - Used as the \"onPause\" parameter when calling the {@link CB_AudioFileSprites#pauseAll} method internally.\r\n * @param {array} [audioFiles={@link CB_AudioFileCache#audioFiles}] - Used as the \"audioFiles\" parameter when calling the {@link CB_AudioFileSprites#pauseAll} method internally.\r\n * @returns {integer} Returns the number of calls to the {@link CB_AudioFile#pause} method that were performed.\r\n */","meta":{"range":[86450,86716],"filename":"CB_AudioFileSpritesPool.js","lineno":1197,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100017850","name":"CB_AudioFileSpritesPool.prototype.pauseAll","type":"FunctionExpression","paramnames":["onPause","audioFiles"]},"vars":{"performed":"CB_AudioFileSpritesPool#pauseAll~performed","spritesGroupId":"CB_AudioFileSpritesPool#pauseAll~spritesGroupId"}},"description":"<p>Tries to pause all the existing {@link CB_AudioFile} objects or the desired ones (if provided), which are being played, by calling their {@link CB_AudioFile#pause} method internally. Uses the {@link CB_AudioFileSprites#pauseAll} method internally.</p>","kind":"function","params":[{"type":{"names":["function"]},"optional":true,"description":"<p>Used as the &quot;onPause&quot; parameter when calling the {@link CB_AudioFileSprites#pauseAll} method internally.</p>","name":"onPause"},{"type":{"names":["array"]},"optional":true,"defaultvalue":"{@link CB_AudioFileCache#audioFiles}","description":"<p>Used as the &quot;audioFiles&quot; parameter when calling the {@link CB_AudioFileSprites#pauseAll} method internally.</p>","name":"audioFiles"}],"returns":[{"type":{"names":["integer"]},"description":"<p>Returns the number of calls to the {@link CB_AudioFile#pause} method that were performed.</p>"}],"name":"pauseAll","longname":"CB_AudioFileSpritesPool#pauseAll","memberof":"CB_AudioFileSpritesPool","scope":"instance"},{"comment":"/**\r\n * Resumes all the existing {@link CB_AudioFile} objects or the desired ones (if provided), which are paused (and not stopped). Can be focused on just one sprite ID if desired. Uses the {@link CB_AudioFileSprites#resumeAll} method internally. Internal usage only recommended. To resume a sprite, better use the {@link CB_AudioFileSprites#resumeSprite} method instead.\r\n * @function\r\n * @param {boolean} [loop={@link CB_AudioFile#loop}] - Used as the \"loop\" parameter when calling the {@link CB_AudioFileSprites#resumeAll} method internally.\r\n * @param {boolean} [allowedRecursiveDelay={@link CB_Configuration.CrossBase.CB_AudioFile_AudioFileCache_ALLOWED_RECURSIVE_DELAY_DEFAULT}] - Used as the \"allowedRecursiveDelay\" parameter when calling the {@link CB_AudioFileSprites#resumeAll} method internally.\r\n * @param {boolean} [allowedRecursiveDelaySkipping=stopAt-startAt] - Used as the \"allowedRecursiveDelaySkipping\" parameter when calling the {@link CB_AudioFileSprites#resumeAll} method internally.\r\n * @param {function} [onPlayStart] - Used as the \"onPlayStart\" parameter when calling the {@link CB_AudioFileSprites#resumeAll} method internally.\r\n * @param {function} [onStop] - Used as the \"onStop\" parameter when calling the {@link CB_AudioFileSprites#resumeAll} method internally.\r\n * @param {array} [audioFiles={@link CB_AudioFileCache#audioFiles}] - Used as the \"audioFiles\" parameter when calling the {@link CB_AudioFileSprites#resumeAll} method internally.\r\n * @param {string} [spriteId='_WITHOUT_SPRITE_ASSOCIATED'] - Used as the \"spriteId\" when calling the {@link CB_AudioFileSprites#resumeAll} method internally. Internal usage only recommended.\r\n * @returns {Object} Returns an object whose property names will be the ID of each sprites group and their value will be the returning value of the internal call to the {@link CB_AudioFileSprites#resumeAll} method.\r\n */","meta":{"range":[88617,89080],"filename":"CB_AudioFileSpritesPool.js","lineno":1220,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100017888","name":"CB_AudioFileSpritesPool.prototype.resumeAll","type":"FunctionExpression","paramnames":["loop","allowedRecursiveDelay","allowedRecursiveDelaySkipping","onPlayStart","onStop","audioFiles","spriteId"]},"vars":{"soundInstances":"CB_AudioFileSpritesPool#resumeAll~soundInstances","spritesGroupId":"CB_AudioFileSpritesPool#resumeAll~spritesGroupId","soundInstances[undefined]":"CB_AudioFileSpritesPool#resumeAll~soundInstances.undefined]"}},"description":"<p>Resumes all the existing {@link CB_AudioFile} objects or the desired ones (if provided), which are paused (and not stopped). Can be focused on just one sprite ID if desired. Uses the {@link CB_AudioFileSprites#resumeAll} method internally. Internal usage only recommended. To resume a sprite, better use the {@link CB_AudioFileSprites#resumeSprite} method instead.</p>","kind":"function","params":[{"type":{"names":["boolean"]},"optional":true,"defaultvalue":"{@link CB_AudioFile#loop}","description":"<p>Used as the &quot;loop&quot; parameter when calling the {@link CB_AudioFileSprites#resumeAll} method internally.</p>","name":"loop"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":"{@link CB_Configuration.CrossBase.CB_AudioFile_AudioFileCache_ALLOWED_RECURSIVE_DELAY_DEFAULT}","description":"<p>Used as the &quot;allowedRecursiveDelay&quot; parameter when calling the {@link CB_AudioFileSprites#resumeAll} method internally.</p>","name":"allowedRecursiveDelay"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":"stopAt-startAt","description":"<p>Used as the &quot;allowedRecursiveDelaySkipping&quot; parameter when calling the {@link CB_AudioFileSprites#resumeAll} method internally.</p>","name":"allowedRecursiveDelaySkipping"},{"type":{"names":["function"]},"optional":true,"description":"<p>Used as the &quot;onPlayStart&quot; parameter when calling the {@link CB_AudioFileSprites#resumeAll} method internally.</p>","name":"onPlayStart"},{"type":{"names":["function"]},"optional":true,"description":"<p>Used as the &quot;onStop&quot; parameter when calling the {@link CB_AudioFileSprites#resumeAll} method internally.</p>","name":"onStop"},{"type":{"names":["array"]},"optional":true,"defaultvalue":"{@link CB_AudioFileCache#audioFiles}","description":"<p>Used as the &quot;audioFiles&quot; parameter when calling the {@link CB_AudioFileSprites#resumeAll} method internally.</p>","name":"audioFiles"},{"type":{"names":["string"]},"optional":true,"defaultvalue":"'_WITHOUT_SPRITE_ASSOCIATED'","description":"<p>Used as the &quot;spriteId&quot; when calling the {@link CB_AudioFileSprites#resumeAll} method internally. Internal usage only recommended.</p>","name":"spriteId"}],"returns":[{"type":{"names":["Object"]},"description":"<p>Returns an object whose property names will be the ID of each sprites group and their value will be the returning value of the internal call to the {@link CB_AudioFileSprites#resumeAll} method.</p>"}],"name":"resumeAll","longname":"CB_AudioFileSpritesPool#resumeAll","memberof":"CB_AudioFileSpritesPool","scope":"instance"},{"comment":"/**\r\n * Mutes all the existing {@link CB_AudioFile} objects or the desired ones (if provided). Uses the {@link CB_AudioFileSprites#muteAll} method internally.\r\n * @function\r\n * @param {function} [onMute] - Used as the \"onMute\" parameter when calling the {@link CB_AudioFileSprites#muteAll} method internally.\r\n * @param {array} [audioFiles={@link CB_AudioFileCache#audioFiles}] - Used as the \"audioFiles\" parameter when calling the {@link CB_AudioFileSprites#muteAll} method internally.\r\n * @returns {integer} Returns the number of calls to the {@link CB_AudioFile#mute} method that were performed.\r\n */","meta":{"range":[89695,89957],"filename":"CB_AudioFileSpritesPool.js","lineno":1238,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100017938","name":"CB_AudioFileSpritesPool.prototype.muteAll","type":"FunctionExpression","paramnames":["onMute","audioFiles"]},"vars":{"performed":"CB_AudioFileSpritesPool#muteAll~performed","spritesGroupId":"CB_AudioFileSpritesPool#muteAll~spritesGroupId"}},"description":"<p>Mutes all the existing {@link CB_AudioFile} objects or the desired ones (if provided). Uses the {@link CB_AudioFileSprites#muteAll} method internally.</p>","kind":"function","params":[{"type":{"names":["function"]},"optional":true,"description":"<p>Used as the &quot;onMute&quot; parameter when calling the {@link CB_AudioFileSprites#muteAll} method internally.</p>","name":"onMute"},{"type":{"names":["array"]},"optional":true,"defaultvalue":"{@link CB_AudioFileCache#audioFiles}","description":"<p>Used as the &quot;audioFiles&quot; parameter when calling the {@link CB_AudioFileSprites#muteAll} method internally.</p>","name":"audioFiles"}],"returns":[{"type":{"names":["integer"]},"description":"<p>Returns the number of calls to the {@link CB_AudioFile#mute} method that were performed.</p>"}],"name":"muteAll","longname":"CB_AudioFileSpritesPool#muteAll","memberof":"CB_AudioFileSpritesPool","scope":"instance"},{"comment":"/**\r\n * Unmutes all the existing {@link CB_AudioFile} objects or the desired ones (if provided). Uses the {@link CB_AudioFileSprites#unmuteAll} method internally.\r\n * @function\r\n * @param {function} [onUnmute] - Used as the \"onUnmute\" parameter when calling the {@link CB_AudioFileSprites#unmuteAll} method internally.\r\n * @param {array} [audioFiles={@link CB_AudioFileCache#audioFiles}] - Used as the \"audioFiles\" parameter when calling the {@link CB_AudioFileSprites#unmuteAll} method internally.\r\n * @returns {integer} Returns the number of calls to the {@link CB_AudioFile#unmute} method that were performed.\r\n */","meta":{"range":[90586,90856],"filename":"CB_AudioFileSpritesPool.js","lineno":1256,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100017976","name":"CB_AudioFileSpritesPool.prototype.unmuteAll","type":"FunctionExpression","paramnames":["onUnmute","audioFiles"]},"vars":{"performed":"CB_AudioFileSpritesPool#unmuteAll~performed","spritesGroupId":"CB_AudioFileSpritesPool#unmuteAll~spritesGroupId"}},"description":"<p>Unmutes all the existing {@link CB_AudioFile} objects or the desired ones (if provided). Uses the {@link CB_AudioFileSprites#unmuteAll} method internally.</p>","kind":"function","params":[{"type":{"names":["function"]},"optional":true,"description":"<p>Used as the &quot;onUnmute&quot; parameter when calling the {@link CB_AudioFileSprites#unmuteAll} method internally.</p>","name":"onUnmute"},{"type":{"names":["array"]},"optional":true,"defaultvalue":"{@link CB_AudioFileCache#audioFiles}","description":"<p>Used as the &quot;audioFiles&quot; parameter when calling the {@link CB_AudioFileSprites#unmuteAll} method internally.</p>","name":"audioFiles"}],"returns":[{"type":{"names":["integer"]},"description":"<p>Returns the number of calls to the {@link CB_AudioFile#unmute} method that were performed.</p>"}],"name":"unmuteAll","longname":"CB_AudioFileSpritesPool#unmuteAll","memberof":"CB_AudioFileSpritesPool","scope":"instance"},{"comment":"/**\r\n * Sets the same volume for all the existing {@link CB_AudioFile} objects or the desired ones (if provided). Uses the {@link CB_AudioFileSprites#setVolumeAll} method internally.\r\n * @function\r\n * @param {number} [volume={@link CB_Speaker.getVolume()} | {@link CB_Configuration.CrossBase.CB_Speaker_DEFAULT_VOLUME}] - Used as the \"volume\" parameter when calling the {@link CB_AudioFileSprites#setVolumeAll} method internally.\r\n * @param {boolean} [forceSetVolumeProperty=false] - Used as the \"forceSetVolumeProperty\" parameter when calling the {@link CB_AudioFileSprites#setVolumeAll} method internally.\r\n * @param {function} [onSetVolume] - Used as the \"onSetVolume\" parameter when calling the {@link CB_AudioFileSprites#setVolumeAll} method internally.\r\n * @param {array} [audioFiles={@link CB_AudioFileCache#audioFiles}] - Used as the \"audioFiles\" parameter when calling the {@link CB_AudioFileSprites#setVolumeAll} method internally.\r\n * @returns {integer} Returns the number of calls to the {@link CB_AudioFile#setVolume} method that were performed internally.\r\n */","meta":{"range":[91944,92290],"filename":"CB_AudioFileSpritesPool.js","lineno":1276,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100018014","name":"CB_AudioFileSpritesPool.prototype.setVolumeAll","type":"FunctionExpression","paramnames":["volume","forceSetVolumeProperty","onSetVolume","audioFiles"]},"vars":{"performed":"CB_AudioFileSpritesPool#setVolumeAll~performed","spritesGroupId":"CB_AudioFileSpritesPool#setVolumeAll~spritesGroupId"}},"description":"<p>Sets the same volume for all the existing {@link CB_AudioFile} objects or the desired ones (if provided). Uses the {@link CB_AudioFileSprites#setVolumeAll} method internally.</p>","kind":"function","params":[{"type":{"names":["number"]},"optional":true,"defaultvalue":"{@link CB_Speaker.getVolume()} | {@link CB_Configuration.CrossBase.CB_Speaker_DEFAULT_VOLUME}","description":"<p>Used as the &quot;volume&quot; parameter when calling the {@link CB_AudioFileSprites#setVolumeAll} method internally.</p>","name":"volume"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>Used as the &quot;forceSetVolumeProperty&quot; parameter when calling the {@link CB_AudioFileSprites#setVolumeAll} method internally.</p>","name":"forceSetVolumeProperty"},{"type":{"names":["function"]},"optional":true,"description":"<p>Used as the &quot;onSetVolume&quot; parameter when calling the {@link CB_AudioFileSprites#setVolumeAll} method internally.</p>","name":"onSetVolume"},{"type":{"names":["array"]},"optional":true,"defaultvalue":"{@link CB_AudioFileCache#audioFiles}","description":"<p>Used as the &quot;audioFiles&quot; parameter when calling the {@link CB_AudioFileSprites#setVolumeAll} method internally.</p>","name":"audioFiles"}],"returns":[{"type":{"names":["integer"]},"description":"<p>Returns the number of calls to the {@link CB_AudioFile#setVolume} method that were performed internally.</p>"}],"name":"setVolumeAll","longname":"CB_AudioFileSpritesPool#setVolumeAll","memberof":"CB_AudioFileSpritesPool","scope":"instance"},{"comment":"/**\r\n * Callback function used by the {@link CB_AudioFileSpritesPool#setAudioAPIAll} method that will be called when all the process was performed successfully.\r\n * @memberof CB_AudioFileSpritesPool\r\n * @callback CB_AudioFileSpritesPool.setAudioAPIAll_CALLBACK_OK\r\n * @param {integer} objectsChangedAPI - The number of {@link CB_AudioFile} objects that actually changed its audio API.\r\n * @param {integer} performedActions - The number of {@link CB_AudioFile} objects that ended with a desired audio API, including those ones which were already using it.\r\n * @param {integer} actionsNeeded - The total number of {@link CB_AudioFile} objects that were considered to perform the action (it will be undefined if it could not be determined).\r\n */","meta":{"filename":"CB_AudioFileSpritesPool.js","lineno":1287,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{}},"description":"<p>Callback function used by the {@link CB_AudioFileSpritesPool#setAudioAPIAll} method that will be called when all the process was performed successfully.</p>","memberof":"CB_AudioFileSpritesPool","kind":"typedef","name":"setAudioAPIAll_CALLBACK_OK","type":{"names":["function"]},"params":[{"type":{"names":["integer"]},"description":"<p>The number of {@link CB_AudioFile} objects that actually changed its audio API.</p>","name":"objectsChangedAPI"},{"type":{"names":["integer"]},"description":"<p>The number of {@link CB_AudioFile} objects that ended with a desired audio API, including those ones which were already using it.</p>","name":"performedActions"},{"type":{"names":["integer"]},"description":"<p>The total number of {@link CB_AudioFile} objects that were considered to perform the action (it will be undefined if it could not be determined).</p>","name":"actionsNeeded"}],"longname":"CB_AudioFileSpritesPool.setAudioAPIAll_CALLBACK_OK","scope":"static"},{"comment":"/**\r\n * Callback function used by the {@link CB_AudioFileCache#setAudioAPIAll} method that will be called when any error happened.\r\n * @memberof CB_AudioFileSpritesPool\r\n * @callback CB_AudioFileSpritesPool.setAudioAPIAll_CALLBACK_ERROR\r\n * @param {Object} errorsObject - Object whose property names are the ID of each sprites group or \"GENERAL_ERROR\" if the error is not related to any sprites group and their value will be a {@link CB_AudioFileSpritesPool.setAudioAPIAll_CALLBACK_ERROR_OBJECT} object each.\r\n * @param {integer} errorsHappened - The number of errors that happened, which could be greater than 1 if more than one internal call to the {@link CB_AudioFile#setAudioAPI} method failed.\r\n * @param {integer} objectsChangedAPI - The number of {@link CB_AudioFile} objects that actually changed its audio API.\r\n * @param {integer} performedActions - The number of {@link CB_AudioFile} objects that ended with a desired audio API, including those ones which were already using it.\r\n * @param {integer|undefined} actionsNeeded - The total number of {@link CB_AudioFile} objects that were considered to perform the action (it will be undefined if it could not be determined).\r\n */","meta":{"filename":"CB_AudioFileSpritesPool.js","lineno":1296,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{}},"description":"<p>Callback function used by the {@link CB_AudioFileCache#setAudioAPIAll} method that will be called when any error happened.</p>","memberof":"CB_AudioFileSpritesPool","kind":"typedef","name":"setAudioAPIAll_CALLBACK_ERROR","type":{"names":["function"]},"params":[{"type":{"names":["Object"]},"description":"<p>Object whose property names are the ID of each sprites group or &quot;GENERAL_ERROR&quot; if the error is not related to any sprites group and their value will be a {@link CB_AudioFileSpritesPool.setAudioAPIAll_CALLBACK_ERROR_OBJECT} object each.</p>","name":"errorsObject"},{"type":{"names":["integer"]},"description":"<p>The number of errors that happened, which could be greater than 1 if more than one internal call to the {@link CB_AudioFile#setAudioAPI} method failed.</p>","name":"errorsHappened"},{"type":{"names":["integer"]},"description":"<p>The number of {@link CB_AudioFile} objects that actually changed its audio API.</p>","name":"objectsChangedAPI"},{"type":{"names":["integer"]},"description":"<p>The number of {@link CB_AudioFile} objects that ended with a desired audio API, including those ones which were already using it.</p>","name":"performedActions"},{"type":{"names":["integer","undefined"]},"description":"<p>The total number of {@link CB_AudioFile} objects that were considered to perform the action (it will be undefined if it could not be determined).</p>","name":"actionsNeeded"}],"longname":"CB_AudioFileSpritesPool.setAudioAPIAll_CALLBACK_ERROR","scope":"static"},{"comment":"/**\r\n * Object used by the {@link CB_AudioFileSpritesPool.setAudioAPIAll_CALLBACK_ERROR} callback. Unless it belongs to a general error, its information will only be regarding a certain sprites group.\r\n * @memberof CB_AudioFileSpritesPool\r\n * @typedef {Object} CB_AudioFileSpritesPool.setAudioAPIAll_CALLBACK_ERROR_OBJECT\r\n * @property {string} error - A string describing the error, if it was possible to be determined.\r\n * @property {integer} errors - The number of errors that happened, which could be greater than 1 if more than one internal call to the {@link CB_AudioFile#setAudioAPI} method failed.\r\n * @property {integer} changed - The number of objects that actually changed its audio API.\r\n * @property {integer} performed - The number of {@link CB_AudioFile} objects that ended with a desired audio API, including those ones which were already using it.\r\n * @property {integer|undefined} needed - The total number of {@link CB_AudioFile} objects that were considered to perform the action (it will be undefined if it could not be determined).\r\n */","meta":{"filename":"CB_AudioFileSpritesPool.js","lineno":1307,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{}},"description":"<p>Object used by the {@link CB_AudioFileSpritesPool.setAudioAPIAll_CALLBACK_ERROR} callback. Unless it belongs to a general error, its information will only be regarding a certain sprites group.</p>","memberof":"CB_AudioFileSpritesPool","kind":"typedef","name":"setAudioAPIAll_CALLBACK_ERROR_OBJECT","type":{"names":["Object"]},"properties":[{"type":{"names":["string"]},"description":"<p>A string describing the error, if it was possible to be determined.</p>","name":"error"},{"type":{"names":["integer"]},"description":"<p>The number of errors that happened, which could be greater than 1 if more than one internal call to the {@link CB_AudioFile#setAudioAPI} method failed.</p>","name":"errors"},{"type":{"names":["integer"]},"description":"<p>The number of objects that actually changed its audio API.</p>","name":"changed"},{"type":{"names":["integer"]},"description":"<p>The number of {@link CB_AudioFile} objects that ended with a desired audio API, including those ones which were already using it.</p>","name":"performed"},{"type":{"names":["integer","undefined"]},"description":"<p>The total number of {@link CB_AudioFile} objects that were considered to perform the action (it will be undefined if it could not be determined).</p>","name":"needed"}],"longname":"CB_AudioFileSpritesPool.setAudioAPIAll_CALLBACK_ERROR_OBJECT","scope":"static"},{"comment":"/**\r\n * Tries to change the audio API for all the existing {@link CB_AudioFile} objects or the desired ones (if provided). This method is not allowed to be called if a previous call to it did not finish yet. The function defined in the \"callbackError\" parameter, if any, will be called immediately if the method was previously called and it is still running currently. Uses the {@link CB_AudioFileSprites#setAudioAPIAll} method internally.\r\n * @function\r\n * @param {array|string} preferredAPIs - Used as the \"preferredAPIs\" parameter when calling the {@link CB_AudioFileSprites#setAudioAPIAll} method internally.\r\n * @param {CB_AudioFileSpritesPool.setAudioAPIAll_CALLBACK_OK} [callbackOk] - Function that will be called when all the process was performed successfully, being \"this\" the {@link CB_AudioFileSpritesPool} object.\r\n * @param {CB_AudioFileSpritesPool.setAudioAPIAll_CALLBACK_ERROR} [callbackError] - Function that will be called when any error happened, being \"this\" the {@link CB_AudioFileSpritesPool} object. This function will be called immediately if the method was previously called and it is still running currently.\r\n * @param {boolean} [mandatory=false] - Used as the \"mandatory\" parameter when calling the {@link CB_AudioFileSprites#setAudioAPIAll} method internally.\r\n * @param {string} [forceReload=false] - Used as the \"forceReload\" parameter when calling the {@link CB_AudioFileSprites#setAudioAPIAll} method internally.\r\n * @param {array} [audioFiles={@link CB_AudioFileCache#audioFiles}] - Used as the \"audioFiles\" parameter when calling the {@link CB_AudioFileSprites#setAudioAPIAll} method internally.\r\n * @returns {integer} Returns the number of calls to the {@link CB_AudioFile#setAudioAPI} method that were performed.\r\n */","meta":{"range":[97085,100239],"filename":"CB_AudioFileSpritesPool.js","lineno":1329,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100018056","name":"CB_AudioFileSpritesPool.prototype.setAudioAPIAll","type":"FunctionExpression","paramnames":["preferredAPIs","callbackOk","callbackError","mandatory","forceReload","audioFiles","ignoreStatus"]},"vars":{"errorMessage":"CB_AudioFileSpritesPool#setAudioAPIAll~errorMessage","this._setAudioAPIAllPerforming":"CB_AudioFileSpritesPool#_setAudioAPIAllPerforming","performedReturn":"CB_AudioFileSpritesPool#setAudioAPIAll~performedReturn","failed":"CB_AudioFileSpritesPool#setAudioAPIAll~failed","succeeded":"CB_AudioFileSpritesPool#setAudioAPIAll~succeeded","needed":"CB_AudioFileSpritesPool#setAudioAPIAll~needed","objectsChanged":"CB_AudioFileSpritesPool#setAudioAPIAll~objectsChanged","errorsChecking":"CB_AudioFileSpritesPool#setAudioAPIAll~errorsChecking","errors":"CB_AudioFileSpritesPool#setAudioAPIAll~errors","performed":"CB_AudioFileSpritesPool#setAudioAPIAll~performed","neededTotal":"CB_AudioFileSpritesPool#setAudioAPIAll~neededTotal","spritesGroupId":"CB_AudioFileSpritesPool#setAudioAPIAll~spritesGroupId","":null,"that":"CB_AudioFileSpritesPool#setAudioAPIAll~that","this._setAudioAPIAllInterval":"CB_AudioFileSpritesPool#_setAudioAPIAllInterval"}},"description":"<p>Tries to change the audio API for all the existing {@link CB_AudioFile} objects or the desired ones (if provided). This method is not allowed to be called if a previous call to it did not finish yet. The function defined in the &quot;callbackError&quot; parameter, if any, will be called immediately if the method was previously called and it is still running currently. Uses the {@link CB_AudioFileSprites#setAudioAPIAll} method internally.</p>","kind":"function","params":[{"type":{"names":["array","string"]},"description":"<p>Used as the &quot;preferredAPIs&quot; parameter when calling the {@link CB_AudioFileSprites#setAudioAPIAll} method internally.</p>","name":"preferredAPIs"},{"type":{"names":["CB_AudioFileSpritesPool.setAudioAPIAll_CALLBACK_OK"]},"optional":true,"description":"<p>Function that will be called when all the process was performed successfully, being &quot;this&quot; the {@link CB_AudioFileSpritesPool} object.</p>","name":"callbackOk"},{"type":{"names":["CB_AudioFileSpritesPool.setAudioAPIAll_CALLBACK_ERROR"]},"optional":true,"description":"<p>Function that will be called when any error happened, being &quot;this&quot; the {@link CB_AudioFileSpritesPool} object. This function will be called immediately if the method was previously called and it is still running currently.</p>","name":"callbackError"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>Used as the &quot;mandatory&quot; parameter when calling the {@link CB_AudioFileSprites#setAudioAPIAll} method internally.</p>","name":"mandatory"},{"type":{"names":["string"]},"optional":true,"defaultvalue":false,"description":"<p>Used as the &quot;forceReload&quot; parameter when calling the {@link CB_AudioFileSprites#setAudioAPIAll} method internally.</p>","name":"forceReload"},{"type":{"names":["array"]},"optional":true,"defaultvalue":"{@link CB_AudioFileCache#audioFiles}","description":"<p>Used as the &quot;audioFiles&quot; parameter when calling the {@link CB_AudioFileSprites#setAudioAPIAll} method internally.</p>","name":"audioFiles"}],"returns":[{"type":{"names":["integer"]},"description":"<p>Returns the number of calls to the {@link CB_AudioFile#setAudioAPI} method that were performed.</p>"}],"name":"setAudioAPIAll","longname":"CB_AudioFileSpritesPool#setAudioAPIAll","memberof":"CB_AudioFileSpritesPool","scope":"instance"},{"comment":"/**\r\n * Tells whether any of the {@link CB_AudioFile} objects is playing or not. Uses the {@link CB_AudioFileSprites#isPlaying} method internally.\r\n * @function\r\n * @returns {boolean} Returns whether any of the {@link CB_AudioFile} objects is playing or not.\r\n */","meta":{"range":[100512,100726],"filename":"CB_AudioFileSpritesPool.js","lineno":1449,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100018400","name":"CB_AudioFileSpritesPool.prototype.isPlaying","type":"FunctionExpression","paramnames":[]},"vars":{"spritesGroupId":"CB_AudioFileSpritesPool#isPlaying~spritesGroupId"}},"description":"<p>Tells whether any of the {@link CB_AudioFile} objects is playing or not. Uses the {@link CB_AudioFileSprites#isPlaying} method internally.</p>","kind":"function","returns":[{"type":{"names":["boolean"]},"description":"<p>Returns whether any of the {@link CB_AudioFile} objects is playing or not.</p>"}],"name":"isPlaying","longname":"CB_AudioFileSpritesPool#isPlaying","memberof":"CB_AudioFileSpritesPool","scope":"instance"},{"comment":"/**\r\n * Tells the current number of free {@link CB_AudioFile} objects (the number of objects which are available and ready to use). Uses the {@link CB_AudioFileSprites#getAudioFilesFreeNumber} method internally.\r\n * @function\r\n * @returns {integer} Returns the current number of free {@link CB_AudioFile} objects (the number of objects which are available and ready to use).\r\n */","meta":{"range":[101115,101364],"filename":"CB_AudioFileSpritesPool.js","lineno":1464,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100018431","name":"CB_AudioFileSpritesPool.prototype.getAudioFilesFreeNumber","type":"FunctionExpression","paramnames":[]},"vars":{"number":"CB_AudioFileSpritesPool#getAudioFilesFreeNumber~number","spritesGroupId":"CB_AudioFileSpritesPool#getAudioFilesFreeNumber~spritesGroupId"}},"description":"<p>Tells the current number of free {@link CB_AudioFile} objects (the number of objects which are available and ready to use). Uses the {@link CB_AudioFileSprites#getAudioFilesFreeNumber} method internally.</p>","kind":"function","returns":[{"type":{"names":["integer"]},"description":"<p>Returns the current number of free {@link CB_AudioFile} objects (the number of objects which are available and ready to use).</p>"}],"name":"getAudioFilesFreeNumber","longname":"CB_AudioFileSpritesPool#getAudioFilesFreeNumber","memberof":"CB_AudioFileSpritesPool","scope":"instance"},{"comment":"/**\r\n * Gets an object with arrays or a one-dimension array with all the {@link CB_AudioFile} objects. Uses the {@link CB_AudioFileSprites#getAudioFiles} method internally.\r\n * @function\r\n * @param {boolean} [copy=false] - Used as the \"copy\" parameter when calling the {@link CB_AudioFileSprites#getAudioFiles} method internally.\r\n * @param {boolean} [oneDimension=false] - If it is set to true, the method will return an array with all the {@link CB_AudioFile} objects. Otherwise, if it is set to false, the method will return an object whose property names will be the ID of each sprites group and their value will be an array with all the {@link CB_AudioFile} objects that belong to that sprites group.\r\n * @returns {Object|array} If the \"oneDimension\" parameter is set to true, returns an array with all the {@link CB_AudioFile} objects. Otherwise, if the \"oneDimension\" parameter is set to false, it will return an object whose property names will be the ID of each sprites group and their value will be an array with all the {@link CB_AudioFile} objects that belong to that sprites group.\r\n */","meta":{"range":[102475,103267],"filename":"CB_AudioFileSpritesPool.js","lineno":1482,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100018465","name":"CB_AudioFileSpritesPool.prototype.getAudioFiles","type":"FunctionExpression","paramnames":["copy","oneDimension"]},"vars":{"audioFiles":"CB_AudioFileSpritesPool#getAudioFiles~audioFiles","spritesGroupId":"CB_AudioFileSpritesPool#getAudioFiles~spritesGroupId","audioFiles[undefined]":"CB_AudioFileSpritesPool#getAudioFiles~audioFiles.undefined]","audioFilesSpritesGroup":"CB_AudioFileSpritesPool#getAudioFiles~audioFilesSpritesGroup","audioFilesSpritesGroupLength":"CB_AudioFileSpritesPool#getAudioFiles~audioFilesSpritesGroupLength","y":"CB_AudioFileSpritesPool#getAudioFiles~y","x":"CB_AudioFileSpritesPool#getAudioFiles~x"}},"description":"<p>Gets an object with arrays or a one-dimension array with all the {@link CB_AudioFile} objects. Uses the {@link CB_AudioFileSprites#getAudioFiles} method internally.</p>","kind":"function","params":[{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>Used as the &quot;copy&quot; parameter when calling the {@link CB_AudioFileSprites#getAudioFiles} method internally.</p>","name":"copy"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If it is set to true, the method will return an array with all the {@link CB_AudioFile} objects. Otherwise, if it is set to false, the method will return an object whose property names will be the ID of each sprites group and their value will be an array with all the {@link CB_AudioFile} objects that belong to that sprites group.</p>","name":"oneDimension"}],"returns":[{"type":{"names":["Object","array"]},"description":"<p>If the &quot;oneDimension&quot; parameter is set to true, returns an array with all the {@link CB_AudioFile} objects. Otherwise, if the &quot;oneDimension&quot; parameter is set to false, it will return an object whose property names will be the ID of each sprites group and their value will be an array with all the {@link CB_AudioFile} objects that belong to that sprites group.</p>"}],"name":"getAudioFiles","longname":"CB_AudioFileSpritesPool#getAudioFiles","memberof":"CB_AudioFileSpritesPool","scope":"instance"},{"comment":"/**\r\n * Gets an object with arrays or a one-dimension array with the free {@link CB_AudioFile} objects (the objects which are available and ready to use). Uses the {@link CB_AudioFileSprites#getAudioFilesFree} method internally.\r\n * @function\r\n * @param {boolean} [oneDimension=false] - If it is set to true, the method will return an array with the free {@link CB_AudioFile} objects. Otherwise, if it is set to false, the method will return an object whose property names will be the ID of each sprites group and their value will be an array with the free {@link CB_AudioFile} objects that belong to that sprites group.\r\n * @returns {Object|array} If the \"oneDimension\" parameter is set to true, returns an array with the free {@link CB_AudioFile} objects. Otherwise, if the \"oneDimension\" parameter is set to false, it will return an object whose property names will be the ID of each sprites group and their value will be an array with the free {@link CB_AudioFile} objects that belong to that sprites group.\r\n */","meta":{"range":[104294,105084],"filename":"CB_AudioFileSpritesPool.js","lineno":1520,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100018575","name":"CB_AudioFileSpritesPool.prototype.getAudioFilesFree","type":"FunctionExpression","paramnames":["oneDimension"]},"vars":{"audioFiles":"CB_AudioFileSpritesPool#getAudioFilesFree~audioFiles","spritesGroupId":"CB_AudioFileSpritesPool#getAudioFilesFree~spritesGroupId","audioFiles[undefined]":"CB_AudioFileSpritesPool#getAudioFilesFree~audioFiles.undefined]","audioFilesSpritesGroup":"CB_AudioFileSpritesPool#getAudioFilesFree~audioFilesSpritesGroup","audioFilesSpritesGroupLength":"CB_AudioFileSpritesPool#getAudioFilesFree~audioFilesSpritesGroupLength","y":"CB_AudioFileSpritesPool#getAudioFilesFree~y","x":"CB_AudioFileSpritesPool#getAudioFilesFree~x"}},"description":"<p>Gets an object with arrays or a one-dimension array with the free {@link CB_AudioFile} objects (the objects which are available and ready to use). Uses the {@link CB_AudioFileSprites#getAudioFilesFree} method internally.</p>","kind":"function","params":[{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If it is set to true, the method will return an array with the free {@link CB_AudioFile} objects. Otherwise, if it is set to false, the method will return an object whose property names will be the ID of each sprites group and their value will be an array with the free {@link CB_AudioFile} objects that belong to that sprites group.</p>","name":"oneDimension"}],"returns":[{"type":{"names":["Object","array"]},"description":"<p>If the &quot;oneDimension&quot; parameter is set to true, returns an array with the free {@link CB_AudioFile} objects. Otherwise, if the &quot;oneDimension&quot; parameter is set to false, it will return an object whose property names will be the ID of each sprites group and their value will be an array with the free {@link CB_AudioFile} objects that belong to that sprites group.</p>"}],"name":"getAudioFilesFree","longname":"CB_AudioFileSpritesPool#getAudioFilesFree","memberof":"CB_AudioFileSpritesPool","scope":"instance"},{"comment":"/**\r\n * Gets an object with arrays or a one-dimension array with the busy {@link CB_AudioFile} objects (the objects which are not available and ready to use). Uses the {@link CB_AudioFileSprites#getAudioFilesBusy} method internally.\r\n * @function\r\n * @param {boolean} [oneDimension=false] - If it is set to true, the method will return an array with the busy {@link CB_AudioFile} objects. Otherwise, if it is set to false, the method will return an object whose property names will be the ID of each sprites group and their value will be an array with the busy {@link CB_AudioFile} objects that belong to that sprites group.\r\n * @returns {Object|array} If the \"oneDimension\" parameter is set to true, returns an array with the busy {@link CB_AudioFile} objects. Otherwise, if the \"oneDimension\" parameter is set to false, it will return an object whose property names will be the ID of each sprites group and their value will be an array with the busy {@link CB_AudioFile} objects that belong to that sprites group.\r\n */","meta":{"range":[106115,106905],"filename":"CB_AudioFileSpritesPool.js","lineno":1558,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100018682","name":"CB_AudioFileSpritesPool.prototype.getAudioFilesBusy","type":"FunctionExpression","paramnames":["oneDimension"]},"vars":{"audioFiles":"CB_AudioFileSpritesPool#getAudioFilesBusy~audioFiles","spritesGroupId":"CB_AudioFileSpritesPool#getAudioFilesBusy~spritesGroupId","audioFiles[undefined]":"CB_AudioFileSpritesPool#getAudioFilesBusy~audioFiles.undefined]","audioFilesSpritesGroup":"CB_AudioFileSpritesPool#getAudioFilesBusy~audioFilesSpritesGroup","audioFilesSpritesGroupLength":"CB_AudioFileSpritesPool#getAudioFilesBusy~audioFilesSpritesGroupLength","y":"CB_AudioFileSpritesPool#getAudioFilesBusy~y","x":"CB_AudioFileSpritesPool#getAudioFilesBusy~x"}},"description":"<p>Gets an object with arrays or a one-dimension array with the busy {@link CB_AudioFile} objects (the objects which are not available and ready to use). Uses the {@link CB_AudioFileSprites#getAudioFilesBusy} method internally.</p>","kind":"function","params":[{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If it is set to true, the method will return an array with the busy {@link CB_AudioFile} objects. Otherwise, if it is set to false, the method will return an object whose property names will be the ID of each sprites group and their value will be an array with the busy {@link CB_AudioFile} objects that belong to that sprites group.</p>","name":"oneDimension"}],"returns":[{"type":{"names":["Object","array"]},"description":"<p>If the &quot;oneDimension&quot; parameter is set to true, returns an array with the busy {@link CB_AudioFile} objects. Otherwise, if the &quot;oneDimension&quot; parameter is set to false, it will return an object whose property names will be the ID of each sprites group and their value will be an array with the busy {@link CB_AudioFile} objects that belong to that sprites group.</p>"}],"name":"getAudioFilesBusy","longname":"CB_AudioFileSpritesPool#getAudioFilesBusy","memberof":"CB_AudioFileSpritesPool","scope":"instance"},{"comment":"/**\r\n * Tells the number of {@link CB_AudioFile} objects created. Uses the {@link CB_AudioFileSprites#getAudioFilesNumber} method internally.\r\n * @function\r\n * @param {boolean} [real=false] - Used as the \"real\" parameter when calling the {@link CB_AudioFileSprites#getAudioFilesNumber} method internally.\r\n * @returns {integer} Returns the number of {@link CB_AudioFile} objects created.\r\n */","meta":{"range":[107308,107557],"filename":"CB_AudioFileSpritesPool.js","lineno":1596,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100018789","name":"CB_AudioFileSpritesPool.prototype.getAudioFilesNumber","type":"FunctionExpression","paramnames":["real"]},"vars":{"number":"CB_AudioFileSpritesPool#getAudioFilesNumber~number","spritesGroupId":"CB_AudioFileSpritesPool#getAudioFilesNumber~spritesGroupId"}},"description":"<p>Tells the number of {@link CB_AudioFile} objects created. Uses the {@link CB_AudioFileSprites#getAudioFilesNumber} method internally.</p>","kind":"function","params":[{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>Used as the &quot;real&quot; parameter when calling the {@link CB_AudioFileSprites#getAudioFilesNumber} method internally.</p>","name":"real"}],"returns":[{"type":{"names":["integer"]},"description":"<p>Returns the number of {@link CB_AudioFile} objects created.</p>"}],"name":"getAudioFilesNumber","longname":"CB_AudioFileSpritesPool#getAudioFilesNumber","memberof":"CB_AudioFileSpritesPool","scope":"instance"},{"comment":"/**\r\n * Returns a number representing the percentage of the loading progress for the audio sprites pool object (from 0 to 100, being 100 a complete loading progress). The way to calculate it internally may differ from one audio API to another and it is not totally reliable. Uses the {@link CB_AudioFileSprites#getProgress} method internally.\r\n * @function\r\n * @param {boolean} [countLoadedObjects=false] - Used as the \"countLoadedObjects\" parameter when calling the {@link CB_AudioFileSprites#getProgress} method internally.\r\n * @param {boolean} [alsoUncheckedAndCheckingObjects=false] - Used as the \"alsoUncheckedAndCheckingObjects\" parameter when calling the {@link CB_AudioFileSprites#getProgress} method internally.\r\n * @returns {number} Returns a number representing the percentage of the loading progress for the audio sprites pool object (from 0 to 100, being 100 a complete loading progress). The way to calculate it internally may differ from one audio API to another and it is not totally reliable.\r\n */","meta":{"range":[108583,109019],"filename":"CB_AudioFileSpritesPool.js","lineno":1614,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100018825","name":"CB_AudioFileSpritesPool.prototype.getProgress","type":"FunctionExpression","paramnames":["countLoadedObjects","alsoUncheckedAndCheckingObjects"]},"vars":{"progress":"CB_AudioFileSpritesPool#getProgress~progress","spritesGroups":"CB_AudioFileSpritesPool#getProgress~spritesGroups","spritesGroupId":"CB_AudioFileSpritesPool#getProgress~spritesGroupId"}},"description":"<p>Returns a number representing the percentage of the loading progress for the audio sprites pool object (from 0 to 100, being 100 a complete loading progress). The way to calculate it internally may differ from one audio API to another and it is not totally reliable. Uses the {@link CB_AudioFileSprites#getProgress} method internally.</p>","kind":"function","params":[{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>Used as the &quot;countLoadedObjects&quot; parameter when calling the {@link CB_AudioFileSprites#getProgress} method internally.</p>","name":"countLoadedObjects"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>Used as the &quot;alsoUncheckedAndCheckingObjects&quot; parameter when calling the {@link CB_AudioFileSprites#getProgress} method internally.</p>","name":"alsoUncheckedAndCheckingObjects"}],"returns":[{"type":{"names":["number"]},"description":"<p>Returns a number representing the percentage of the loading progress for the audio sprites pool object (from 0 to 100, being 100 a complete loading progress). The way to calculate it internally may differ from one audio API to another and it is not totally reliable.</p>"}],"name":"getProgress","longname":"CB_AudioFileSpritesPool#getProgress","memberof":"CB_AudioFileSpritesPool","scope":"instance"},{"comment":"/**\r\n * Gets the current status of the audio file sprites pool object. Uses the {@link CB_AudioFileSprites#getStatus} method internally.\r\n * @function\r\n * @returns {number} Returns the current status of the audio file sprites pool object. It is a number, affected by the returning value of the {@link CB_AudioFileSprites#getStatus} method of each {@link CB_AudioFileSprites} object used internally, which should match the value of the {@link CB_AudioFileCache.UNLOADED} (still unloaded), {@link CB_AudioFileCache.LOADING} (loading), {@link CB_AudioFileCache.UNCHECKED} (not checked by calling the {@link CB_AudioFileCache#checkPlayingAll} method yet), {@link CB_AudioFileCache.CHECKING} (being checked by the {@link CB_AudioFileCache#checkPlayingAll} method), {@link CB_AudioFileCache.LOADED} (loaded), {@link CB_AudioFileCache.FAILED} (failed loading or failed to play or by any other reason) or {@link CB_AudioFileCache.ABORTED} (aborted because it was destroyed with the \"destructor\" method) property.\r\n */","meta":{"range":[110038,111830],"filename":"CB_AudioFileSpritesPool.js","lineno":1633,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100018879","name":"CB_AudioFileSpritesPool.prototype.getStatus","type":"FunctionExpression","paramnames":[]},"vars":{"status":"CB_AudioFileSpritesPool#getStatus~status","allLoaded":"CB_AudioFileSpritesPool#getStatus~allLoaded","loaded":"CB_AudioFileSpritesPool#getStatus~loaded","anyUnloaded":"CB_AudioFileSpritesPool#getStatus~anyUnloaded","anyLoading":"CB_AudioFileSpritesPool#getStatus~anyLoading","anyUnchecked":"CB_AudioFileSpritesPool#getStatus~anyUnchecked","anyChecking":"CB_AudioFileSpritesPool#getStatus~anyChecking","anyFailed":"CB_AudioFileSpritesPool#getStatus~anyFailed","anyAborted":"CB_AudioFileSpritesPool#getStatus~anyAborted","audioFileSpritesObject":"CB_AudioFileSpritesPool#getStatus~audioFileSpritesObject"}},"description":"<p>Gets the current status of the audio file sprites pool object. Uses the {@link CB_AudioFileSprites#getStatus} method internally.</p>","kind":"function","returns":[{"type":{"names":["number"]},"description":"<p>Returns the current status of the audio file sprites pool object. It is a number, affected by the returning value of the {@link CB_AudioFileSprites#getStatus} method of each {@link CB_AudioFileSprites} object used internally, which should match the value of the {@link CB_AudioFileCache.UNLOADED} (still unloaded), {@link CB_AudioFileCache.LOADING} (loading), {@link CB_AudioFileCache.UNCHECKED} (not checked by calling the {@link CB_AudioFileCache#checkPlayingAll} method yet), {@link CB_AudioFileCache.CHECKING} (being checked by the {@link CB_AudioFileCache#checkPlayingAll} method), {@link CB_AudioFileCache.LOADED} (loaded), {@link CB_AudioFileCache.FAILED} (failed loading or failed to play or by any other reason) or {@link CB_AudioFileCache.ABORTED} (aborted because it was destroyed with the &quot;destructor&quot; method) property.</p>"}],"name":"getStatus","longname":"CB_AudioFileSpritesPool#getStatus","memberof":"CB_AudioFileSpritesPool","scope":"instance"},{"comment":"/**\r\n * Gets the current status of the audio file sprites pool object, as a string.\r\n * @function\r\n * @returns {string} Returns the current status of the audio file sprites pool object, as a string. Possible return values are \"UNLOADED\", \"LOADING\", \"UNCHECKED\", \"CHECKING\", \"LOADED\", \"FAILED\", \"ABORTED\" or \"UNKNOWN (UNKNOWN_STATUS)\" (where \"UNKNOWN_STATUS\" will be a returning value from the {@link CB_AudioFileSpritesPool#getStatus} method not recognized as any possible status).\r\n */","meta":{"range":[112326,112650],"filename":"CB_AudioFileSpritesPool.js","lineno":1681,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100019134","name":"CB_AudioFileSpritesPool.prototype.getStatusString","type":"FunctionExpression","paramnames":[]},"vars":{"status":"CB_AudioFileSpritesPool#getStatusString~status","statuses":"CB_AudioFileSpritesPool#getStatusString~statuses"}},"description":"<p>Gets the current status of the audio file sprites pool object, as a string.</p>","kind":"function","returns":[{"type":{"names":["string"]},"description":"<p>Returns the current status of the audio file sprites pool object, as a string. Possible return values are &quot;UNLOADED&quot;, &quot;LOADING&quot;, &quot;UNCHECKED&quot;, &quot;CHECKING&quot;, &quot;LOADED&quot;, &quot;FAILED&quot;, &quot;ABORTED&quot; or &quot;UNKNOWN (UNKNOWN_STATUS)&quot; (where &quot;UNKNOWN_STATUS&quot; will be a returning value from the {@link CB_AudioFileSpritesPool#getStatus} method not recognized as any possible status).</p>"}],"name":"getStatusString","longname":"CB_AudioFileSpritesPool#getStatusString","memberof":"CB_AudioFileSpritesPool","scope":"instance"},{"comment":"/**\r\n * Calls the error function which should be set in the {@link CB_AudioFileSprites#onError} property (if any), being \"this\" the {@link CB_AudioFileSpritesPool} object itself. Internal usage only recommended.\r\n * @function\r\n * @param {string} [message] - The message describing the error that will be sent to the set {@link CB_AudioFileSprites#onError} function (if any) as the first and unique parameter. \r\n * @param {boolean} [ignorePreviousExecution=false] - If it is set to false, the function set in the {@link CB_AudioFileSprites#onError} property (if any) will only be called if it was not executed previously.\r\n * @returns {boolean} Returns true if the {@link CB_AudioFileSprites#onError} function could be called or false otherwise.\r\n */","meta":{"range":[113411,113727],"filename":"CB_AudioFileSpritesPool.js","lineno":1697,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100019180","name":"CB_AudioFileSpritesPool.prototype.errorFunction","type":"FunctionExpression","paramnames":["message","ignorePreviousExecution"]},"vars":{"this._errorFunctionExecuted":"CB_AudioFileSpritesPool#_errorFunctionExecuted"}},"description":"<p>Calls the error function which should be set in the {@link CB_AudioFileSprites#onError} property (if any), being &quot;this&quot; the {@link CB_AudioFileSpritesPool} object itself. Internal usage only recommended.</p>","kind":"function","params":[{"type":{"names":["string"]},"optional":true,"description":"<p>The message describing the error that will be sent to the set {@link CB_AudioFileSprites#onError} function (if any) as the first and unique parameter.</p>","name":"message"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If it is set to false, the function set in the {@link CB_AudioFileSprites#onError} property (if any) will only be called if it was not executed previously.</p>","name":"ignorePreviousExecution"}],"returns":[{"type":{"names":["boolean"]},"description":"<p>Returns true if the {@link CB_AudioFileSprites#onError} function could be called or false otherwise.</p>"}],"name":"errorFunction","longname":"CB_AudioFileSpritesPool#errorFunction","memberof":"CB_AudioFileSpritesPool","scope":"instance"},{"comment":"/**\r\n * @file Audio files management using \"AAPI\" ([HTML5 Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/audio}). Contains the {@link CB_AudioFile_API.AAPI} class.\r\n * @author Joan Alba Maldonado <workindalian@gmail.com>\r\n */","meta":{"filename":"CB_AudioFile_API_AAPI.js","lineno":1,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{}},"name":"CrossBase/audiovisual/audio/CB_AudioFile_API_AAPI.js","kind":"file","description":"<p>Audio files management using &quot;AAPI&quot; ([HTML5 Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/audio}). Contains the {@link CB_AudioFile_API.AAPI} class.</p>","preserveName":true,"author":["Joan Alba Maldonado <workindalian@gmail.com>"],"longname":"CrossBase/audiovisual/audio/CB_AudioFile_API_AAPI.js","scope":"global"},{"comment":"/**\r\n * The constructor is recommended to be called through a user-driven event (as onClick, onTouch, etc.) if the \"autoPlay\" option is set to true, as some web clients may need this at least the first time in order to be able to play the audio.\r\n * @class CB_AudioFile_API.AAPI\r\n * @memberof! <global>\r\n * @classdesc Class to manage an audio file using \"AAPI\" ([HTML5 Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/audio}). Used by the {@link CB_AudioFile} class internally and it shares most of its properties and methods. Recommended for internal usage only.\r\n * @param {string} filePath - The path of the audio file or a data URI. NOTE: Only some clients with some audio APIs will support data URIs.\r\n * @param {string} [audioId='CB_AUDIOFILE_AAPI_' + CB_AudioFile_API.AAPI._idUnique++] - Desired identifier for the audio object. If not provided, an automatic unique ID will be calculated. Note that it is not case sensitive and it should be unique for each object.\r\n * @param {CB_AudioFile_API.AAPI.OPTIONS} [options=CB_AudioFile_API.AAPI#DEFAULT_OPTIONS] - Object with the desired options.\r\n * @param {function} [callbackOk] - Function with no parameters to be called when the audio has been loaded successfully, being \"this\" the {@link CB_AudioFile_API.AAPI} object itself.\r\n * @param {function} [callbackError] - Function to be called if the audio has not been loaded successfully. The first and unique parameter will be a string describing the error found (if could be determined), being \"this\" the {@link CB_AudioFile_API.AAPI} object itself.\r\n * @returns {CB_AudioFile_API.AAPI} Returns a new {@link CB_AudioFile_API.AAPI} object.\r\n * @todo Do not allow to create one object with an \"id\" which has already been used (unless the value is undefined, null...). Note that the \"id\" is not case sensitive and it should be unique for each object.\r\n * @todo Method getCopy and static method filterProperties (similar to the ones from {@link CB_GraphicSprites} and {@link CB_GraphicSpritesScene}).\r\n */","meta":{"filename":"CB_AudioFile_API_AAPI.js","lineno":16,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{}},"description":"<p>The constructor is recommended to be called through a user-driven event (as onClick, onTouch, etc.) if the &quot;autoPlay&quot; option is set to true, as some web clients may need this at least the first time in order to be able to play the audio.</p>","kind":"class","name":"CB_AudioFile_API.AAPI","forceMemberof":true,"scope":"global","classdesc":"<p>Class to manage an audio file using &quot;AAPI&quot; ([HTML5 Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/audio}). Used by the {@link CB_AudioFile} class internally and it shares most of its properties and methods. Recommended for internal usage only.</p>","params":[{"type":{"names":["string"]},"description":"<p>The path of the audio file or a data URI. NOTE: Only some clients with some audio APIs will support data URIs.</p>","name":"filePath"},{"type":{"names":["string"]},"optional":true,"defaultvalue":"'CB_AUDIOFILE_AAPI_' + CB_AudioFile_API.AAPI._idUnique++","description":"<p>Desired identifier for the audio object. If not provided, an automatic unique ID will be calculated. Note that it is not case sensitive and it should be unique for each object.</p>","name":"audioId"},{"type":{"names":["CB_AudioFile_API.AAPI.OPTIONS"]},"optional":true,"defaultvalue":"CB_AudioFile_API.AAPI#DEFAULT_OPTIONS","description":"<p>Object with the desired options.</p>","name":"options"},{"type":{"names":["function"]},"optional":true,"description":"<p>Function with no parameters to be called when the audio has been loaded successfully, being &quot;this&quot; the {@link CB_AudioFile_API.AAPI} object itself.</p>","name":"callbackOk"},{"type":{"names":["function"]},"optional":true,"description":"<p>Function to be called if the audio has not been loaded successfully. The first and unique parameter will be a string describing the error found (if could be determined), being &quot;this&quot; the {@link CB_AudioFile_API.AAPI} object itself.</p>","name":"callbackError"}],"returns":[{"type":{"names":["CB_AudioFile_API.AAPI"]},"description":"<p>Returns a new {@link CB_AudioFile_API.AAPI} object.</p>"}],"todo":["Do not allow to create one object with an \"id\" which has already been used (unless the value is undefined, null...). Note that the \"id\" is not case sensitive and it should be unique for each object.","Method getCopy and static method filterProperties (similar to the ones from {@link CB_GraphicSprites} and {@link CB_GraphicSpritesScene})."],"longname":"CB_AudioFile_API.AAPI"},{"comment":"/**\r\n\t * Keeps the default volume. If the {@link CB_Configuration.CrossBase.CB_AudioFile_AudioFileCache_USE_SPEAKER_VOLUME_AS_DEFAULT} property is true, this will keep the result of calling the {@link CB_Speaker.getVolume} function. Otherwise, it will use the value of the {@link CB_Configuration.CrossBase.CB_Speaker_DEFAULT_VOLUME} variable.\r\n\t *\t@constant CB_AudioFile_API.AAPI#DEFAULT_VOLUME\r\n\t * @type {number}\r\n\t * @default CB_Configuration.CrossBase.CB_AudioFile_AudioFileCache_USE_SPEAKER_VOLUME_AS_DEFAULT ? CB_Speaker.getVolume() : CB_Configuration.CrossBase.CB_Speaker_DEFAULT_VOLUME\r\n\t */","meta":{"filename":"CB_AudioFile_API_AAPI.js","lineno":36,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{}},"description":"<p>Keeps the default volume. If the {@link CB_Configuration.CrossBase.CB_AudioFile_AudioFileCache_USE_SPEAKER_VOLUME_AS_DEFAULT} property is true, this will keep the result of calling the {@link CB_Speaker.getVolume} function. Otherwise, it will use the value of the {@link CB_Configuration.CrossBase.CB_Speaker_DEFAULT_VOLUME} variable.</p>","kind":"constant","name":"DEFAULT_VOLUME","type":{"names":["number"]},"defaultvalue":"CB_Configuration.CrossBase.CB_AudioFile_AudioFileCache_USE_SPEAKER_VOLUME_AS_DEFAULT ? CB_Speaker.getVolume() : CB_Configuration.CrossBase.CB_Speaker_DEFAULT_VOLUME","memberof":"CB_AudioFile_API.AAPI","longname":"CB_AudioFile_API.AAPI#DEFAULT_VOLUME","scope":"instance"},{"comment":"/**\r\n\t * Keeps the default options when an object is created. Format: { autoLoad: boolean, autoPlay: boolean, loop: boolean, volume: number }.\r\n\t *\t@constant CB_AudioFile_API.AAPI#DEFAULT_OPTIONS\r\n\t * @type {CB_AudioFile_API.AAPI.OPTIONS}\r\n\t * @default { autoLoad: true, autoPlay: false, loop: false, volume: [CB_AudioFile_API.AAPI.prototype.DEFAULT_VOLUME]{@link CB_AudioFile_API.AAPI#DEFAULT_VOLUME} }\r\n\t */","meta":{"filename":"CB_AudioFile_API_AAPI.js","lineno":44,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{}},"description":"<p>Keeps the default options when an object is created. Format: { autoLoad: boolean, autoPlay: boolean, loop: boolean, volume: number }.</p>","kind":"constant","name":"DEFAULT_OPTIONS","type":{"names":["CB_AudioFile_API.AAPI.OPTIONS"]},"defaultvalue":"{ autoLoad: true, autoPlay: false, loop: false, volume: [CB_AudioFile_API.AAPI.prototype.DEFAULT_VOLUME]{@link CB_AudioFile_API.AAPI#DEFAULT_VOLUME} }","memberof":"CB_AudioFile_API.AAPI","longname":"CB_AudioFile_API.AAPI#DEFAULT_OPTIONS","scope":"instance"},{"comment":"/**\r\n * Object with the options for an audio file. The format is the following one: { autoLoad: boolean, autoPlay: boolean, loop: boolean, volume: number }.\r\n * @memberof CB_AudioFile_API.AAPI\r\n * @typedef {Object} CB_AudioFile_API.AAPI.OPTIONS\r\n * @property {boolean} [autoLoad={@link CB_AudioFile_API.AAPI#DEFAULT_OPTIONS}.autoLoad] - If set to false, it will not call the {@link CB_AudioFile_API.AAPI#load} method internally when the constructor is called (not recommended).\r\n * @property {boolean} [autoPlay={@link CB_AudioFile_API.AAPI#DEFAULT_OPTIONS}.autoPlay] - Value which will be used as the \"autoPlay\" parameter when calling the {@link CB_AudioFile_API.AAPI#load} method internally, only when the \"autoLoad\" is set to true (when the constructor is called).\r\n * @property {boolean} [loop={@link CB_AudioFile_API.AAPI#DEFAULT_OPTIONS}.loop] - Value that will be used for the {@link CB_AudioFile_API.AAPI#loop} property.\r\n * @property {number} [volume={@link CB_AudioFile_API.AAPI#DEFAULT_OPTIONS}.volume] - The desired volume (from 0 to the maximum value, where the maximum value will be the returning value of calling the {@link CB_Speaker.getVolume} function if the {@link CB_Configuration.CrossBase.CB_AudioFile_AudioFileCache_USE_SPEAKER_VOLUME_AS_MAXIMUM} property is set to true or it will be 100 otherwise) that will be used for the {@link CB_AudioFile_API.AAPI#volume} property.\r\n */","meta":{"filename":"CB_AudioFile_API_AAPI.js","lineno":193,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{}},"description":"<p>Object with the options for an audio file. The format is the following one: { autoLoad: boolean, autoPlay: boolean, loop: boolean, volume: number }.</p>","memberof":"CB_AudioFile_API.AAPI","kind":"typedef","name":"OPTIONS","type":{"names":["Object"]},"properties":[{"type":{"names":["boolean"]},"optional":true,"defaultvalue":"{@link CB_AudioFile_API.AAPI#DEFAULT_OPTIONS}.autoLoad","description":"<p>If set to false, it will not call the {@link CB_AudioFile_API.AAPI#load} method internally when the constructor is called (not recommended).</p>","name":"autoLoad"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":"{@link CB_AudioFile_API.AAPI#DEFAULT_OPTIONS}.autoPlay","description":"<p>Value which will be used as the &quot;autoPlay&quot; parameter when calling the {@link CB_AudioFile_API.AAPI#load} method internally, only when the &quot;autoLoad&quot; is set to true (when the constructor is called).</p>","name":"autoPlay"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":"{@link CB_AudioFile_API.AAPI#DEFAULT_OPTIONS}.loop","description":"<p>Value that will be used for the {@link CB_AudioFile_API.AAPI#loop} property.</p>","name":"loop"},{"type":{"names":["number"]},"optional":true,"defaultvalue":"{@link CB_AudioFile_API.AAPI#DEFAULT_OPTIONS}.volume","description":"<p>The desired volume (from 0 to the maximum value, where the maximum value will be the returning value of calling the {@link CB_Speaker.getVolume} function if the {@link CB_Configuration.CrossBase.CB_AudioFile_AudioFileCache_USE_SPEAKER_VOLUME_AS_MAXIMUM} property is set to true or it will be 100 otherwise) that will be used for the {@link CB_AudioFile_API.AAPI#volume} property.</p>","name":"volume"}],"longname":"CB_AudioFile_API.AAPI.OPTIONS","scope":"static"},{"comment":"/**\r\n * Destroys the audio file object and frees memory. Sets its current {@link CB_AudioFile_API.AAPI#status} property to ABORTED ({@link CB_AudioFile.ABORTED} value).\r\n * @function CB_AudioFile_API.AAPI#destructor\r\n * @param {boolean} [stopSound=false] - If set to true, it will also call the {@link CB_AudioFile_API.AAPI#stop} method.\r\n * @param {boolean} [keepStoppedUnaltered=false] - Used internally as the \"keepStoppedUnaltered\" parameter to call the {@link CB_AudioFile_API.AAPI#stop} method. If the \"stopSound\" parameter is not set to true, this parameter will be ignored as the \"stop\" method will not be called.\r\n * @param {boolean} [avoidOnStop=false] - Used internally as the \"avoidOnStop\" parameter to call the {@link CB_AudioFile_API.AAPI#stop} method. If the \"stopSound\" parameter is not set to true, this parameter will be ignored as the \"stop\" method will not be called.\r\n * @param {boolean} [forceOnStop=false] - Used internally as the \"forceOnStop\" parameter to call the {@link CB_AudioFile_API.AAPI#stop} method. If the \"stopSound\" parameter is not set to true, this parameter will be ignored as the \"stop\" method will not be called.\r\n */","meta":{"filename":"CB_AudioFile_API_AAPI.js","lineno":254,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{}},"description":"<p>Destroys the audio file object and frees memory. Sets its current {@link CB_AudioFile_API.AAPI#status} property to ABORTED ({@link CB_AudioFile.ABORTED} value).</p>","kind":"function","name":"destructor","params":[{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If set to true, it will also call the {@link CB_AudioFile_API.AAPI#stop} method.</p>","name":"stopSound"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>Used internally as the &quot;keepStoppedUnaltered&quot; parameter to call the {@link CB_AudioFile_API.AAPI#stop} method. If the &quot;stopSound&quot; parameter is not set to true, this parameter will be ignored as the &quot;stop&quot; method will not be called.</p>","name":"keepStoppedUnaltered"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>Used internally as the &quot;avoidOnStop&quot; parameter to call the {@link CB_AudioFile_API.AAPI#stop} method. If the &quot;stopSound&quot; parameter is not set to true, this parameter will be ignored as the &quot;stop&quot; method will not be called.</p>","name":"avoidOnStop"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>Used internally as the &quot;forceOnStop&quot; parameter to call the {@link CB_AudioFile_API.AAPI#stop} method. If the &quot;stopSound&quot; parameter is not set to true, this parameter will be ignored as the &quot;stop&quot; method will not be called.</p>","name":"forceOnStop"}],"memberof":"CB_AudioFile_API.AAPI","longname":"CB_AudioFile_API.AAPI#destructor","scope":"instance"},{"comment":"/**\r\n * Loads the desired audio file with the desired options. Recommended to be called through a user-driven event (as onClick, onTouch, etc.), as some web clients may need this at least the first time in order to be able to play the audio. This method will be called automatically by the constructor if the \"autoLoad\" option was set to true in its given \"options\" parameter.\r\n * When this method is called, if the {@link CB_AudioFile_API.AAPI#status} property already has the \"LOADED\" status (defined in the {@link CB_AudioFile.LOADED} constant) and the \"forceReload\" parameter is not set to true, it will exit calling the given \"callbackOk\" function (if any) immediately. Otherwise, regardless the status, the status will be set to \"LOADING\" (defined in the {@link CB_AudioFile.LOADING} constant). After it, it will reach the \"UNCHECKED\" (defined in the {@link CB_AudioFile.UNCHECKED} constant). If the \"autoPlay\" parameter is not set to true, this will be the final status (and it will be necessary to call the {@link CB_AudioFile_API.AAPI#checkPlaying} method after it). After it and only if the \"autoPlay\" is set to true, as the {@link CB_AudioFile_API.AAPI#checkPlaying} method will be called internally, it will have the \"CHECKING\" status (defined in the {@link CB_AudioFile.CHECKING} constant) and finally the \"LOADED\" status (defined in the {@link CB_AudioFile.LOADED} constant) if all goes well.\r\n * @function CB_AudioFile_API.AAPI#load\r\n * @param {string} [filePath={@link CB_AudioFile_API.AAPI#filePath}] - The path of the audio file or a data URI. NOTE: Only some clients with some audio APIs will support data URIs.\r\n * @param {string} [autoPlay=false] - If set to true, it will start playing the audio automatically (by calling the {@link CB_AudioFile_API.AAPI#play} method internally). If set to true and the {@link CB_AudioFile_API.AAPI#status} property reaches to the \"UNCHECKED\" status (defined in the {@link CB_AudioFile.UNCHECKED} constant), it will also call internally the {@link CB_AudioFile_API.AAPI#checkPlaying} method.\r\n * @param {function} [callbackOk] - Function with no parameters to be called when the audio has been loaded successfully, being \"this\" the {@link CB_AudioFile_API.AAPI} object itself.\r\n * @param {function} [callbackError] - Function to be called if the audio has not been loaded successfully. The first and unique parameter will be a string describing the error found (if it could be determined), being \"this\" the {@link CB_AudioFile_API.AAPI} object itself.\r\n * @param {boolean} [forceReload=false] - If set to false, the \"filePath\" has not been changed from the previously used and the {@link CB_AudioFile_API.AAPI#status} property belongs to the \"LOADED\" status (defined in the {@link CB_AudioFile.LOADED} constant), it will exit the method without loading the audio file again (calling the \"callbackOk\" function, if any).\r\n * @returns {CB_AudioFile_API.AAPI|null} Returns the audio API object (if it was possible to create) or null otherwise.\r\n */","meta":{"filename":"CB_AudioFile_API_AAPI.js","lineno":293,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{}},"description":"<p>Loads the desired audio file with the desired options. Recommended to be called through a user-driven event (as onClick, onTouch, etc.), as some web clients may need this at least the first time in order to be able to play the audio. This method will be called automatically by the constructor if the &quot;autoLoad&quot; option was set to true in its given &quot;options&quot; parameter.<br>When this method is called, if the {@link CB_AudioFile_API.AAPI#status} property already has the &quot;LOADED&quot; status (defined in the {@link CB_AudioFile.LOADED} constant) and the &quot;forceReload&quot; parameter is not set to true, it will exit calling the given &quot;callbackOk&quot; function (if any) immediately. Otherwise, regardless the status, the status will be set to &quot;LOADING&quot; (defined in the {@link CB_AudioFile.LOADING} constant). After it, it will reach the &quot;UNCHECKED&quot; (defined in the {@link CB_AudioFile.UNCHECKED} constant). If the &quot;autoPlay&quot; parameter is not set to true, this will be the final status (and it will be necessary to call the {@link CB_AudioFile_API.AAPI#checkPlaying} method after it). After it and only if the &quot;autoPlay&quot; is set to true, as the {@link CB_AudioFile_API.AAPI#checkPlaying} method will be called internally, it will have the &quot;CHECKING&quot; status (defined in the {@link CB_AudioFile.CHECKING} constant) and finally the &quot;LOADED&quot; status (defined in the {@link CB_AudioFile.LOADED} constant) if all goes well.</p>","kind":"function","name":"load","params":[{"type":{"names":["string"]},"optional":true,"defaultvalue":"{@link CB_AudioFile_API.AAPI#filePath}","description":"<p>The path of the audio file or a data URI. NOTE: Only some clients with some audio APIs will support data URIs.</p>","name":"filePath"},{"type":{"names":["string"]},"optional":true,"defaultvalue":false,"description":"<p>If set to true, it will start playing the audio automatically (by calling the {@link CB_AudioFile_API.AAPI#play} method internally). If set to true and the {@link CB_AudioFile_API.AAPI#status} property reaches to the &quot;UNCHECKED&quot; status (defined in the {@link CB_AudioFile.UNCHECKED} constant), it will also call internally the {@link CB_AudioFile_API.AAPI#checkPlaying} method.</p>","name":"autoPlay"},{"type":{"names":["function"]},"optional":true,"description":"<p>Function with no parameters to be called when the audio has been loaded successfully, being &quot;this&quot; the {@link CB_AudioFile_API.AAPI} object itself.</p>","name":"callbackOk"},{"type":{"names":["function"]},"optional":true,"description":"<p>Function to be called if the audio has not been loaded successfully. The first and unique parameter will be a string describing the error found (if it could be determined), being &quot;this&quot; the {@link CB_AudioFile_API.AAPI} object itself.</p>","name":"callbackError"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If set to false, the &quot;filePath&quot; has not been changed from the previously used and the {@link CB_AudioFile_API.AAPI#status} property belongs to the &quot;LOADED&quot; status (defined in the {@link CB_AudioFile.LOADED} constant), it will exit the method without loading the audio file again (calling the &quot;callbackOk&quot; function, if any).</p>","name":"forceReload"}],"returns":[{"type":{"names":["CB_AudioFile_API.AAPI","null"]},"description":"<p>Returns the audio API object (if it was possible to create) or null otherwise.</p>"}],"memberof":"CB_AudioFile_API.AAPI","longname":"CB_AudioFile_API.AAPI#load","scope":"instance"},{"comment":"/**\r\n * Checks whether the audio can be played or not. Recommended to be called through a user-driven event (as onClick, onTouch, etc.), as some web clients may need this at least the first time in order to be able to play the audio. Also recommended to use before calling the {@link CB_AudioFile_API.AAPI#play} method the first time. The checking action will only be performed if the value of the {@link CB_AudioFile_API.AAPI#status} property belongs to the {@link CB_AudioFile.UNCHECKED} or to the {@link CB_AudioFile.CHECKING} value. After checking, if the audio can be played, the {@link CB_AudioFile_API.AAPI#status} of the object will get the value of {@link CB_AudioFile.LOADED}. Otherwise, if it cannot be played, the {@link CB_AudioFile_API.AAPI#status} property will get the value of {CB_AudioFile.FAILED}.\r\n * @function CB_AudioFile_API.AAPI#checkPlaying\r\n * @param {function} [callbackOk] - Function with no parameters to be called when the audio has been checked successfully, being \"this\" the {@link CB_AudioFile_API.AAPI} object itself.\r\n * @param {function} [callbackError] - Function to be called if the audio has not been checked successfully. The first and unique parameter will be a string describing the error found (if it could be determined), being \"this\" the {@link CB_AudioFile_API.AAPI} object itself.\r\n * @param {boolean} [ignoreStatus=false] - If set to false and the {@link CB_AudioFile_API.AAPI#status} property does not belong neither to the \"UNCHECKED\" status (defined in the {@link CB_AudioFile.UNCHECKED} constant) nor to the \"CHECKING\" status (defined in the {@link CB_AudioFile.CHECKING} constant), it will fail calling the \"callbackError\" function (if any). If set to true, it will try to perform the checking action regardless the status of the audio.\r\n * @param {boolean} [ignoreQueue=false] - If set to false and there is already the maximum number of audio files being checked (defined internally), the function will exit and it will call itself automatically again and again until the checking process can be performed (when its queue turn has been reached). This is done for performance purposes.\r\n * @param {boolean} [useCache=false] - This parameter will be ignored in this audio API.\r\n * @returns {boolean} Returns false if the checking could not be performed and failed. If it returns true, it can mean either the checking has been processed successfully or it will fail in the future, so it is recommended to ignore the returning value and use the callback functions instead.\r\n */","meta":{"filename":"CB_AudioFile_API_AAPI.js","lineno":516,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{}},"description":"<p>Checks whether the audio can be played or not. Recommended to be called through a user-driven event (as onClick, onTouch, etc.), as some web clients may need this at least the first time in order to be able to play the audio. Also recommended to use before calling the {@link CB_AudioFile_API.AAPI#play} method the first time. The checking action will only be performed if the value of the {@link CB_AudioFile_API.AAPI#status} property belongs to the {@link CB_AudioFile.UNCHECKED} or to the {@link CB_AudioFile.CHECKING} value. After checking, if the audio can be played, the {@link CB_AudioFile_API.AAPI#status} of the object will get the value of {@link CB_AudioFile.LOADED}. Otherwise, if it cannot be played, the {@link CB_AudioFile_API.AAPI#status} property will get the value of {CB_AudioFile.FAILED}.</p>","kind":"function","name":"checkPlaying","params":[{"type":{"names":["function"]},"optional":true,"description":"<p>Function with no parameters to be called when the audio has been checked successfully, being &quot;this&quot; the {@link CB_AudioFile_API.AAPI} object itself.</p>","name":"callbackOk"},{"type":{"names":["function"]},"optional":true,"description":"<p>Function to be called if the audio has not been checked successfully. The first and unique parameter will be a string describing the error found (if it could be determined), being &quot;this&quot; the {@link CB_AudioFile_API.AAPI} object itself.</p>","name":"callbackError"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If set to false and the {@link CB_AudioFile_API.AAPI#status} property does not belong neither to the &quot;UNCHECKED&quot; status (defined in the {@link CB_AudioFile.UNCHECKED} constant) nor to the &quot;CHECKING&quot; status (defined in the {@link CB_AudioFile.CHECKING} constant), it will fail calling the &quot;callbackError&quot; function (if any). If set to true, it will try to perform the checking action regardless the status of the audio.</p>","name":"ignoreStatus"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If set to false and there is already the maximum number of audio files being checked (defined internally), the function will exit and it will call itself automatically again and again until the checking process can be performed (when its queue turn has been reached). This is done for performance purposes.</p>","name":"ignoreQueue"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>This parameter will be ignored in this audio API.</p>","name":"useCache"}],"returns":[{"type":{"names":["boolean"]},"description":"<p>Returns false if the checking could not be performed and failed. If it returns true, it can mean either the checking has been processed successfully or it will fail in the future, so it is recommended to ignore the returning value and use the callback functions instead.</p>"}],"memberof":"CB_AudioFile_API.AAPI","longname":"CB_AudioFile_API.AAPI#checkPlaying","scope":"instance"},{"comment":"/**\r\n * Tells the duration of the audio (in milliseconds). Note that some clients might not calculate the duration correctly and, in this case, a zero (0) value would be returned.\r\n * @function CB_AudioFile_API.AAPI#getDuration\r\n * @returns {number} Returns the duration of the audio (in milliseconds). Note that some clients might not calculate the duration correctly and, in this case, a zero (0) value would be returned.\r\n */","meta":{"filename":"CB_AudioFile_API_AAPI.js","lineno":712,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{}},"description":"<p>Tells the duration of the audio (in milliseconds). Note that some clients might not calculate the duration correctly and, in this case, a zero (0) value would be returned.</p>","kind":"function","name":"getDuration","returns":[{"type":{"names":["number"]},"description":"<p>Returns the duration of the audio (in milliseconds). Note that some clients might not calculate the duration correctly and, in this case, a zero (0) value would be returned.</p>"}],"memberof":"CB_AudioFile_API.AAPI","longname":"CB_AudioFile_API.AAPI#getDuration","scope":"instance"},{"comment":"/**\r\n * Plays the audio.\r\n * @function CB_AudioFile_API.AAPI#play\r\n * @param {number} [startAt=0 | {@link CB_AudioFile_API.AAPI#lastStartAt} | stopAt] - Time in milliseconds where we want the audio to start at. If not provided or it is not a valid number, it will use zero (0) as default which belongs to the beginning of the audio. If the value provided is greater than the \"stopAt\" provided, it will use the value set in the {@link CB_AudioFile_API.AAPI#lastStartAt} property (which belongs to the \"startAt\" value the last time that this method was called). If, even using the {@link CB_AudioFile_API.AAPI#lastStartAt} value is still greather than the \"stopAt\" provided, it will use the same value as the \"stopAt\" which means it will not play and will stop immediately.\r\n * @param {number} [stopAt={@link CB_AudioFile_API.AAPI#getDuration}()] - Time in milliseconds where we want the audio to stop at. If not provided or it is not a valid number, it will use the returning value of the {@link CB_AudioFile_API.AAPI#getDuration} method (which should belong to the total duration of the audio, if it was calculated correctly).\r\n * @param {boolean} [loop={@link CB_AudioFile_API.AAPI#loop}] - Sets whether we want to play the audio looping (starting again and again) or just play it once. Note that at the end of each loop the \"onStop\" function defined (through the {@link CB_AudioFile_API.AAPI#onStop} method) will not be called.\r\n * @param {boolean} [avoidDelayedPlay=false] - If set to false (recommended) and the audio failed previously or was aborted (destroyed), it will try to load it correctly again automatically and play it after that if possible (this can take some time so the audio could start playing after a delay). Otherwise, if set to true and the audio failed or was aborted (destroyed), the audio will not play at all and the \"stop\" method will be called immediately.\r\n * @param {boolean} [allowedRecursiveDelay={@link CB_Configuration.CrossBase.CB_AudioFile_AudioFileCache_ALLOWED_RECURSIVE_DELAY_DEFAULT}] - The maximum amount of time (in milliseconds) of delay that we accept before start playing the audio. If the amount of time is overcome, the audio will not play at all and the {@link CB_AudioFile_API.AAPI#stop} method will be called immediately. Used only when the \"avoidDelayedPlay\" parameter is set to false and the audio needs to be loaded because it failed previously or was aborted (destroyed).\r\n * @param {function} [onPlayStart] - Function to be called when the audio starts playing successfully. The function will be called with the following parameters (in order): \"startAt\", \"stopAt\", \"startAtNextLoop\", \"loop\", \"avoidDelayedPlay\", \"allowedRecursiveDelay\" and \"startPlayingTime\", being \"this\" the {@link CB_AudioFile_API.AAPI} object. If the audio is looping, this will be called only once when the audio starts playing the first time and it will not be called next loops.\r\n * @param {function} [onLoadError] - Function to be called if the audio cannot be played successfully. The first and unique parameter will be a string describing the error found (if it could be determined), being \"this\" the {@link CB_AudioFile_API.AAPI} object.\r\n * @param {boolean} [isResume=false] - If set to true (not recommended) and it is a looping audio, the next loop will use the value of the {@link CB_AudioFile_API.AAPI#lastStartAt} property as the \"startAt\" parameter when it calls this method again automatically (internally). Recommended for internal usage only.\r\n * @param {boolean} [isLooping=false] - Used to determine whether this method was called automatically again by itself because it is looping the audio. Recommended for internal usage only.\r\n * @param {integer} [startPlayingTime] - Contains the time when the audio should start playing. Recommended for internal usage only.\r\n * @returns {boolean|integer} It returns false if the duration is 0 (\"startAt\" and \"stopAt\" are the same number), returns \"-1\" if the audio cannot be played and an error is detected or returns true otherwise. Note that even when it returns true there can be a non-detectable error and maybe the audio is not played.\r\n */","meta":{"filename":"CB_AudioFile_API_AAPI.js","lineno":788,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{}},"description":"<p>Plays the audio.</p>","kind":"function","name":"play","params":[{"type":{"names":["number"]},"optional":true,"defaultvalue":"0 | {@link CB_AudioFile_API.AAPI#lastStartAt} | stopAt","description":"<p>Time in milliseconds where we want the audio to start at. If not provided or it is not a valid number, it will use zero (0) as default which belongs to the beginning of the audio. If the value provided is greater than the &quot;stopAt&quot; provided, it will use the value set in the {@link CB_AudioFile_API.AAPI#lastStartAt} property (which belongs to the &quot;startAt&quot; value the last time that this method was called). If, even using the {@link CB_AudioFile_API.AAPI#lastStartAt} value is still greather than the &quot;stopAt&quot; provided, it will use the same value as the &quot;stopAt&quot; which means it will not play and will stop immediately.</p>","name":"startAt"},{"type":{"names":["number"]},"optional":true,"defaultvalue":"{@link CB_AudioFile_API.AAPI#getDuration}()","description":"<p>Time in milliseconds where we want the audio to stop at. If not provided or it is not a valid number, it will use the returning value of the {@link CB_AudioFile_API.AAPI#getDuration} method (which should belong to the total duration of the audio, if it was calculated correctly).</p>","name":"stopAt"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":"{@link CB_AudioFile_API.AAPI#loop}","description":"<p>Sets whether we want to play the audio looping (starting again and again) or just play it once. Note that at the end of each loop the &quot;onStop&quot; function defined (through the {@link CB_AudioFile_API.AAPI#onStop} method) will not be called.</p>","name":"loop"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If set to false (recommended) and the audio failed previously or was aborted (destroyed), it will try to load it correctly again automatically and play it after that if possible (this can take some time so the audio could start playing after a delay). Otherwise, if set to true and the audio failed or was aborted (destroyed), the audio will not play at all and the &quot;stop&quot; method will be called immediately.</p>","name":"avoidDelayedPlay"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":"{@link CB_Configuration.CrossBase.CB_AudioFile_AudioFileCache_ALLOWED_RECURSIVE_DELAY_DEFAULT}","description":"<p>The maximum amount of time (in milliseconds) of delay that we accept before start playing the audio. If the amount of time is overcome, the audio will not play at all and the {@link CB_AudioFile_API.AAPI#stop} method will be called immediately. Used only when the &quot;avoidDelayedPlay&quot; parameter is set to false and the audio needs to be loaded because it failed previously or was aborted (destroyed).</p>","name":"allowedRecursiveDelay"},{"type":{"names":["function"]},"optional":true,"description":"<p>Function to be called when the audio starts playing successfully. The function will be called with the following parameters (in order): &quot;startAt&quot;, &quot;stopAt&quot;, &quot;startAtNextLoop&quot;, &quot;loop&quot;, &quot;avoidDelayedPlay&quot;, &quot;allowedRecursiveDelay&quot; and &quot;startPlayingTime&quot;, being &quot;this&quot; the {@link CB_AudioFile_API.AAPI} object. If the audio is looping, this will be called only once when the audio starts playing the first time and it will not be called next loops.</p>","name":"onPlayStart"},{"type":{"names":["function"]},"optional":true,"description":"<p>Function to be called if the audio cannot be played successfully. The first and unique parameter will be a string describing the error found (if it could be determined), being &quot;this&quot; the {@link CB_AudioFile_API.AAPI} object.</p>","name":"onLoadError"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If set to true (not recommended) and it is a looping audio, the next loop will use the value of the {@link CB_AudioFile_API.AAPI#lastStartAt} property as the &quot;startAt&quot; parameter when it calls this method again automatically (internally). Recommended for internal usage only.</p>","name":"isResume"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>Used to determine whether this method was called automatically again by itself because it is looping the audio. Recommended for internal usage only.</p>","name":"isLooping"},{"type":{"names":["integer"]},"optional":true,"description":"<p>Contains the time when the audio should start playing. Recommended for internal usage only.</p>","name":"startPlayingTime"}],"returns":[{"type":{"names":["boolean","integer"]},"description":"<p>It returns false if the duration is 0 (&quot;startAt&quot; and &quot;stopAt&quot; are the same number), returns &quot;-1&quot; if the audio cannot be played and an error is detected or returns true otherwise. Note that even when it returns true there can be a non-detectable error and maybe the audio is not played.</p>"}],"memberof":"CB_AudioFile_API.AAPI","longname":"CB_AudioFile_API.AAPI#play","scope":"instance"},{"comment":"/**\r\n * Resumes the audio (after being paused), starting from the same point it was paused previously.\r\n * @function CB_AudioFile_API.AAPI#resume\r\n * @param {boolean} [loop={@link CB_AudioFile_API.AAPI#loop}] - Sets whether we want to play the audio looping (starting again and again) or just play it once. Note that at the end of each loop the \"onStop\" function defined (through the {@link CB_AudioFile_API.AAPI#onStop} method) will not be called.\r\n * @param {boolean} [avoidDelayedPlay=false] - If set to false (recommended) and the audio failed previously or was aborted (destroyed), it will try to load it correctly again automatically and play it after that if possible (this can take some time so the audio could start playing after a delay). Otherwise, if set to true and the audio failed or was aborted (destroyed), the audio will not play at all and the {@link CB_AudioFile_API.AAPI#stop} method will be called immediately.\r\n * @param {boolean} [allowedRecursiveDelay={@link CB_Configuration.CrossBase.CB_AudioFile_AudioFileCache_ALLOWED_RECURSIVE_DELAY_DEFAULT}] - The maximum amount of time (in milliseconds) of delay that we accept before start playing the audio. If the amount of time is overcome, the audio will not play at all and the {@link CB_AudioFile_API.AAPI#stop} method will be called immediately. Used only when the \"avoidDelayedPlay\" parameter is set to false and the audio needs to be loaded because it failed previously or was aborted (destroyed).\r\n * @param {function} [onPlayStart] - Function to be called when the audio starts playing successfully. The function will be called with the following parameters (in order): \"startAt\", \"stopAt\", \"startAtNextLoop\", \"loop\", \"avoidDelayedPlay\", \"allowedRecursiveDelay\" and \"startPlayingTime\", being \"this\" the {@link CB_AudioFile_API.AAPI} object. If the audio is looping, this will be called only once when the audio starts playing the first time and it will not be called next loops.\r\n * @param {function} [onLoadError] - Function to be called if the audio cannot be played successfully. It will not be called if the audio is not paused or is stopped. The first and unique parameter will be a string describing the error found (if it could be determined), being \"this\" the {@link CB_AudioFile_API.AAPI} object.\r\n * @returns {boolean|integer} Returns the returning value of the {@link CB_AudioFile_API.AAPI#play} method which is called internally. It returns false if the audio is not paused or it is stopped, returns \"-1\" if the audio cannot be played and an error is detected or returns true otherwise. Note that even when it returns true there can be a non-detectable error and maybe the audio is not played.\r\n */","meta":{"filename":"CB_AudioFile_API_AAPI.js","lineno":997,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{}},"description":"<p>Resumes the audio (after being paused), starting from the same point it was paused previously.</p>","kind":"function","name":"resume","params":[{"type":{"names":["boolean"]},"optional":true,"defaultvalue":"{@link CB_AudioFile_API.AAPI#loop}","description":"<p>Sets whether we want to play the audio looping (starting again and again) or just play it once. Note that at the end of each loop the &quot;onStop&quot; function defined (through the {@link CB_AudioFile_API.AAPI#onStop} method) will not be called.</p>","name":"loop"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If set to false (recommended) and the audio failed previously or was aborted (destroyed), it will try to load it correctly again automatically and play it after that if possible (this can take some time so the audio could start playing after a delay). Otherwise, if set to true and the audio failed or was aborted (destroyed), the audio will not play at all and the {@link CB_AudioFile_API.AAPI#stop} method will be called immediately.</p>","name":"avoidDelayedPlay"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":"{@link CB_Configuration.CrossBase.CB_AudioFile_AudioFileCache_ALLOWED_RECURSIVE_DELAY_DEFAULT}","description":"<p>The maximum amount of time (in milliseconds) of delay that we accept before start playing the audio. If the amount of time is overcome, the audio will not play at all and the {@link CB_AudioFile_API.AAPI#stop} method will be called immediately. Used only when the &quot;avoidDelayedPlay&quot; parameter is set to false and the audio needs to be loaded because it failed previously or was aborted (destroyed).</p>","name":"allowedRecursiveDelay"},{"type":{"names":["function"]},"optional":true,"description":"<p>Function to be called when the audio starts playing successfully. The function will be called with the following parameters (in order): &quot;startAt&quot;, &quot;stopAt&quot;, &quot;startAtNextLoop&quot;, &quot;loop&quot;, &quot;avoidDelayedPlay&quot;, &quot;allowedRecursiveDelay&quot; and &quot;startPlayingTime&quot;, being &quot;this&quot; the {@link CB_AudioFile_API.AAPI} object. If the audio is looping, this will be called only once when the audio starts playing the first time and it will not be called next loops.</p>","name":"onPlayStart"},{"type":{"names":["function"]},"optional":true,"description":"<p>Function to be called if the audio cannot be played successfully. It will not be called if the audio is not paused or is stopped. The first and unique parameter will be a string describing the error found (if it could be determined), being &quot;this&quot; the {@link CB_AudioFile_API.AAPI} object.</p>","name":"onLoadError"}],"returns":[{"type":{"names":["boolean","integer"]},"description":"<p>Returns the returning value of the {@link CB_AudioFile_API.AAPI#play} method which is called internally. It returns false if the audio is not paused or it is stopped, returns &quot;-1&quot; if the audio cannot be played and an error is detected or returns true otherwise. Note that even when it returns true there can be a non-detectable error and maybe the audio is not played.</p>"}],"memberof":"CB_AudioFile_API.AAPI","longname":"CB_AudioFile_API.AAPI#resume","scope":"instance"},{"comment":"/**\r\n * Pauses the audio when it is being played.\r\n * @function CB_AudioFile_API.AAPI#pause\r\n * @param {function} [onPause] - Function without parameters to be called when the audio is paused successfully, being \"this\" the {@link CB_AudioFile_API.AAPI} object.\r\n * @param {boolean} [keepPausedUnaltered=false] - If set to true (not recommended), the {@link CB_AudioFile_API.AAPI#paused} property will not be set to true and it will remain with its current value.\r\n * @returns {boolean} It returns false if the audio is already paused or it is stopped or if it cannot be paused. Returns true otherwise.\r\n */","meta":{"filename":"CB_AudioFile_API_AAPI.js","lineno":1024,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{}},"description":"<p>Pauses the audio when it is being played.</p>","kind":"function","name":"pause","params":[{"type":{"names":["function"]},"optional":true,"description":"<p>Function without parameters to be called when the audio is paused successfully, being &quot;this&quot; the {@link CB_AudioFile_API.AAPI} object.</p>","name":"onPause"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If set to true (not recommended), the {@link CB_AudioFile_API.AAPI#paused} property will not be set to true and it will remain with its current value.</p>","name":"keepPausedUnaltered"}],"returns":[{"type":{"names":["boolean"]},"description":"<p>It returns false if the audio is already paused or it is stopped or if it cannot be paused. Returns true otherwise.</p>"}],"memberof":"CB_AudioFile_API.AAPI","longname":"CB_AudioFile_API.AAPI#pause","scope":"instance"},{"comment":"/**\r\n * Stops the audio.\r\n * @function CB_AudioFile_API.AAPI#stop\r\n * @param {boolean} [keepStoppedUnaltered=false] - If set to true (not recommended), the {@link CB_AudioFile_API.AAPI#stopped} property will not be set to true and it will remain with its current value.\r\n * @param {boolean} [avoidOnStop=false] - If set to false and there is an \"onStop\" function defined (through the {@link CB_AudioFile_API.AAPI#onStop} method), it will be called after stopping the audio (or after trying to do it, at least) but only if either the \"forceOnStop\" parameter is set to true or if the \"keepStoppedUnaltered\" parameter is set to false and the audio was not already stopped before. If set to true, the \"onStop\" function (if any) will not be called at all.\r\n * @param {boolean} [forceOnStop=false] - If it is set to true and the \"avoidOnStop\" parameter is set to false and there is an \"onStop\" function defined (through the {@link CB_AudioFile_API.AAPI#onStop} method), it will be called regardless the audio was stopped before or not. If set to false, the \"onStop\" function (if any) will only be called if the \"keepStoppedUnaltered\" parameter is set to false and the audio was not already stopped before. This parameter will be ignored if the \"avoidOnStop\" parameter is set to true.\r\n * @returns {boolean} It returns false if the stopping action cannot be performed at all (this could happen when the audio has not been loaded properly, for example). Returns true otherwise (this only means that it has been tried to be stopped but it could not be successfully).\r\n */","meta":{"filename":"CB_AudioFile_API_AAPI.js","lineno":1050,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{}},"description":"<p>Stops the audio.</p>","kind":"function","name":"stop","params":[{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If set to true (not recommended), the {@link CB_AudioFile_API.AAPI#stopped} property will not be set to true and it will remain with its current value.</p>","name":"keepStoppedUnaltered"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If set to false and there is an &quot;onStop&quot; function defined (through the {@link CB_AudioFile_API.AAPI#onStop} method), it will be called after stopping the audio (or after trying to do it, at least) but only if either the &quot;forceOnStop&quot; parameter is set to true or if the &quot;keepStoppedUnaltered&quot; parameter is set to false and the audio was not already stopped before. If set to true, the &quot;onStop&quot; function (if any) will not be called at all.</p>","name":"avoidOnStop"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If it is set to true and the &quot;avoidOnStop&quot; parameter is set to false and there is an &quot;onStop&quot; function defined (through the {@link CB_AudioFile_API.AAPI#onStop} method), it will be called regardless the audio was stopped before or not. If set to false, the &quot;onStop&quot; function (if any) will only be called if the &quot;keepStoppedUnaltered&quot; parameter is set to false and the audio was not already stopped before. This parameter will be ignored if the &quot;avoidOnStop&quot; parameter is set to true.</p>","name":"forceOnStop"}],"returns":[{"type":{"names":["boolean"]},"description":"<p>It returns false if the stopping action cannot be performed at all (this could happen when the audio has not been loaded properly, for example). Returns true otherwise (this only means that it has been tried to be stopped but it could not be successfully).</p>"}],"memberof":"CB_AudioFile_API.AAPI","longname":"CB_AudioFile_API.AAPI#stop","scope":"instance"},{"comment":"/**\r\n * Sets the desired volume for the audio file (from 0 to the maximum value, where the maximum value will be the returning value of calling the {@link CB_Speaker.getVolume} function if the {@link CB_Configuration.CrossBase.CB_AudioFile_AudioFileCache_USE_SPEAKER_VOLUME_AS_MAXIMUM} property is set to true or it will be 100 otherwise).\r\n * @function CB_AudioFile_API.AAPI#setVolume\r\n * @param {number} [volume={@link CB_Speaker.getVolume()} | {@link CB_Configuration.CrossBase.CB_Speaker_DEFAULT_VOLUME}] - Desired volume (from 0 to the maximum value, where the maximum value will be the returning value of calling the {@link CB_Speaker.getVolume} function if the {@link CB_Configuration.CrossBase.CB_AudioFile_AudioFileCache_USE_SPEAKER_VOLUME_AS_MAXIMUM} property is set to true or it will be 100 otherwise).\r\n * @param {boolean} [forceSetVolumeProperty=false] - If set to true (not recommended), it will change the {@link CB_AudioFile_API.AAPI#volume} property even when the volume failed to be changed.\r\n * @param {function} [onSetVolume] - Callback function which will be called if it has been possible to set the volume (or at least it was possible to try it). It will not receive any parameters, being \"this\" the {@link CB_AudioFile_API.AAPI} object.\r\n * @param {boolean} [saveForUnmute=false] - If set to true (not recommended), it will save internally the current volume before setting it so it will restore the same volume again after calling the {@link CB_AudioFile_API.AAPI#unmute} method. Internal usage only recommended.\r\n * @returns {number} Returns the current volume (from 0 to the maximum value, where the maximum value will be the returning value of calling the {@link CB_Speaker.getVolume} function if the {@link CB_Configuration.CrossBase.CB_AudioFile_AudioFileCache_USE_SPEAKER_VOLUME_AS_MAXIMUM} property is set to true or it will be 100 otherwise).\r\n */","meta":{"filename":"CB_AudioFile_API_AAPI.js","lineno":1080,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{}},"description":"<p>Sets the desired volume for the audio file (from 0 to the maximum value, where the maximum value will be the returning value of calling the {@link CB_Speaker.getVolume} function if the {@link CB_Configuration.CrossBase.CB_AudioFile_AudioFileCache_USE_SPEAKER_VOLUME_AS_MAXIMUM} property is set to true or it will be 100 otherwise).</p>","kind":"function","name":"setVolume","params":[{"type":{"names":["number"]},"optional":true,"defaultvalue":"{@link CB_Speaker.getVolume()} | {@link CB_Configuration.CrossBase.CB_Speaker_DEFAULT_VOLUME}","description":"<p>Desired volume (from 0 to the maximum value, where the maximum value will be the returning value of calling the {@link CB_Speaker.getVolume} function if the {@link CB_Configuration.CrossBase.CB_AudioFile_AudioFileCache_USE_SPEAKER_VOLUME_AS_MAXIMUM} property is set to true or it will be 100 otherwise).</p>","name":"volume"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If set to true (not recommended), it will change the {@link CB_AudioFile_API.AAPI#volume} property even when the volume failed to be changed.</p>","name":"forceSetVolumeProperty"},{"type":{"names":["function"]},"optional":true,"description":"<p>Callback function which will be called if it has been possible to set the volume (or at least it was possible to try it). It will not receive any parameters, being &quot;this&quot; the {@link CB_AudioFile_API.AAPI} object.</p>","name":"onSetVolume"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If set to true (not recommended), it will save internally the current volume before setting it so it will restore the same volume again after calling the {@link CB_AudioFile_API.AAPI#unmute} method. Internal usage only recommended.</p>","name":"saveForUnmute"}],"returns":[{"type":{"names":["number"]},"description":"<p>Returns the current volume (from 0 to the maximum value, where the maximum value will be the returning value of calling the {@link CB_Speaker.getVolume} function if the {@link CB_Configuration.CrossBase.CB_AudioFile_AudioFileCache_USE_SPEAKER_VOLUME_AS_MAXIMUM} property is set to true or it will be 100 otherwise).</p>"}],"memberof":"CB_AudioFile_API.AAPI","longname":"CB_AudioFile_API.AAPI#setVolume","scope":"instance"},{"comment":"/**\r\n * Mutes the audio file.\r\n * @function CB_AudioFile_API.AAPI#mute\r\n * @param {function} [onMute] - Callback function which will be called if it has been possible to mute the audio file (or at least it was possible to try it). It will not receive any parameters, being \"this\" the {@link CB_AudioFile_API.AAPI} object.\r\n * @returns {number} Returns the current volume (from 0 to the maximum value, where the maximum value will be the returning value of calling the {@link CB_Speaker.getVolume} function if the {@link CB_Configuration.CrossBase.CB_AudioFile_AudioFileCache_USE_SPEAKER_VOLUME_AS_MAXIMUM} property is set to true or it will be 100 otherwise). If all goes well, the returning value should be zero (0). Note that, even when it returns a zero (0) value, this does not always mean that the mute has been applied successfully.\r\n */","meta":{"filename":"CB_AudioFile_API_AAPI.js","lineno":1118,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{}},"description":"<p>Mutes the audio file.</p>","kind":"function","name":"mute","params":[{"type":{"names":["function"]},"optional":true,"description":"<p>Callback function which will be called if it has been possible to mute the audio file (or at least it was possible to try it). It will not receive any parameters, being &quot;this&quot; the {@link CB_AudioFile_API.AAPI} object.</p>","name":"onMute"}],"returns":[{"type":{"names":["number"]},"description":"<p>Returns the current volume (from 0 to the maximum value, where the maximum value will be the returning value of calling the {@link CB_Speaker.getVolume} function if the {@link CB_Configuration.CrossBase.CB_AudioFile_AudioFileCache_USE_SPEAKER_VOLUME_AS_MAXIMUM} property is set to true or it will be 100 otherwise). If all goes well, the returning value should be zero (0). Note that, even when it returns a zero (0) value, this does not always mean that the mute has been applied successfully.</p>"}],"memberof":"CB_AudioFile_API.AAPI","longname":"CB_AudioFile_API.AAPI#mute","scope":"instance"},{"comment":"/**\r\n * Restores audio after muting it (unmutes it).\r\n * @function CB_AudioFile_API.AAPI#unmute\r\n * @param {function} [onUnmute] - Callback function which will be called if it has been possible to unmute the audio file (or at least it was possible to try it). It will not receive any parameters, being \"this\" the {@link CB_AudioFile_API.AAPI} object.\r\n * @returns {number} Returns the current volume (from 0 to the maximum value, where the maximum value will be the returning value of calling the {@link CB_Speaker.getVolume} function if the {@link CB_Configuration.CrossBase.CB_AudioFile_AudioFileCache_USE_SPEAKER_VOLUME_AS_MAXIMUM} property is set to true or it will be 100 otherwise).\r\n */","meta":{"filename":"CB_AudioFile_API_AAPI.js","lineno":1136,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{}},"description":"<p>Restores audio after muting it (unmutes it).</p>","kind":"function","name":"unmute","params":[{"type":{"names":["function"]},"optional":true,"description":"<p>Callback function which will be called if it has been possible to unmute the audio file (or at least it was possible to try it). It will not receive any parameters, being &quot;this&quot; the {@link CB_AudioFile_API.AAPI} object.</p>","name":"onUnmute"}],"returns":[{"type":{"names":["number"]},"description":"<p>Returns the current volume (from 0 to the maximum value, where the maximum value will be the returning value of calling the {@link CB_Speaker.getVolume} function if the {@link CB_Configuration.CrossBase.CB_AudioFile_AudioFileCache_USE_SPEAKER_VOLUME_AS_MAXIMUM} property is set to true or it will be 100 otherwise).</p>"}],"memberof":"CB_AudioFile_API.AAPI","longname":"CB_AudioFile_API.AAPI#unmute","scope":"instance"},{"comment":"/**\r\n * Gets the current time (in milliseconds) which belongs to the position where the audio is currently playing or where it has been paused. Note that some audio APIs and clients could give wrong values.\r\n * @function CB_AudioFile_API.AAPI#getCurrentTime\r\n * @returns {number} Returns the current time (in milliseconds). Note that some audio APIs and clients could give wrong values.\r\n */","meta":{"filename":"CB_AudioFile_API_AAPI.js","lineno":1154,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{}},"description":"<p>Gets the current time (in milliseconds) which belongs to the position where the audio is currently playing or where it has been paused. Note that some audio APIs and clients could give wrong values.</p>","kind":"function","name":"getCurrentTime","returns":[{"type":{"names":["number"]},"description":"<p>Returns the current time (in milliseconds). Note that some audio APIs and clients could give wrong values.</p>"}],"memberof":"CB_AudioFile_API.AAPI","longname":"CB_AudioFile_API.AAPI#getCurrentTime","scope":"instance"},{"comment":"/**\r\n * Sets a function to execute when the audio file stops playing or removes it.\r\n * @function CB_AudioFile_API.AAPI#onStop\r\n * @param {function|null} callbackFunction - The function (event listener) that we want to execute when the event is fired. No parameters will be received, being \"this\" the {@link CB_AudioFile_API.AAPI} object. If a null value is used, the event will be removed.\r\n * @param {boolean} [keepOldFunction=true] - Defines whether we want to keep any possible previous event listener or not.\r\n * @returns {boolean} Returns whether the event has been set or not (removed).\r\n */","meta":{"filename":"CB_AudioFile_API_AAPI.js","lineno":1176,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{}},"description":"<p>Sets a function to execute when the audio file stops playing or removes it.</p>","kind":"function","name":"onStop","params":[{"type":{"names":["function","null"]},"description":"<p>The function (event listener) that we want to execute when the event is fired. No parameters will be received, being &quot;this&quot; the {@link CB_AudioFile_API.AAPI} object. If a null value is used, the event will be removed.</p>","name":"callbackFunction"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":true,"description":"<p>Defines whether we want to keep any possible previous event listener or not.</p>","name":"keepOldFunction"}],"returns":[{"type":{"names":["boolean"]},"description":"<p>Returns whether the event has been set or not (removed).</p>"}],"memberof":"CB_AudioFile_API.AAPI","longname":"CB_AudioFile_API.AAPI#onStop","scope":"instance"},{"comment":"/**\r\n * Returns a number representing the percentage of the loading progress for the audio file (from 0 to 100, being 100 a complete loading progress). The way to calculate it internally may differ from one audio API to another and it is not totally reliable.\r\n * @function CB_AudioFile_API.AAPI#getProgress\r\n * @returns {number} Returns a number representing the percentage of the loading progress for the audio file (from 0 to 100, being 100 a complete loading progress). The way to calculate it internally may differ from one audio API to another and it is not totally reliable.\r\n */","meta":{"filename":"CB_AudioFile_API_AAPI.js","lineno":1213,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{}},"description":"<p>Returns a number representing the percentage of the loading progress for the audio file (from 0 to 100, being 100 a complete loading progress). The way to calculate it internally may differ from one audio API to another and it is not totally reliable.</p>","kind":"function","name":"getProgress","returns":[{"type":{"names":["number"]},"description":"<p>Returns a number representing the percentage of the loading progress for the audio file (from 0 to 100, being 100 a complete loading progress). The way to calculate it internally may differ from one audio API to another and it is not totally reliable.</p>"}],"memberof":"CB_AudioFile_API.AAPI","longname":"CB_AudioFile_API.AAPI#getProgress","scope":"instance"},{"comment":"/**\r\n * @file Audio files management using \"ACMP\" ([Apache Cordova Media Plugin]{@link https://github.com/apache/cordova-plugin-media}). Contains the {@link CB_AudioFile_API.ACMP} class.\r\n * @author Joan Alba Maldonado <workindalian@gmail.com>\r\n */","meta":{"filename":"CB_AudioFile_API_ACMP.js","lineno":1,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{}},"name":"CrossBase/audiovisual/audio/CB_AudioFile_API_ACMP.js","kind":"file","description":"<p>Audio files management using &quot;ACMP&quot; ([Apache Cordova Media Plugin]{@link https://github.com/apache/cordova-plugin-media}). Contains the {@link CB_AudioFile_API.ACMP} class.</p>","preserveName":true,"author":["Joan Alba Maldonado <workindalian@gmail.com>"],"longname":"CrossBase/audiovisual/audio/CB_AudioFile_API_ACMP.js","scope":"global"},{"comment":"/**\r\n * The constructor is recommended to be called through a user-driven event (as onClick, onTouch, etc.) if the \"autoPlay\" option is set to true, as some web clients may need this at least the first time in order to be able to play the audio.\r\n * @class CB_AudioFile_API.ACMP\r\n * @memberof! <global>\r\n * @classdesc Class to manage an audio file using \"ACMP\" ([Apache Cordova Media Plugin]{@link https://github.com/apache/cordova-plugin-media}). Used by the {@link CB_AudioFile} class internally and it shares most of its properties and methods. Recommended for internal usage only.\r\n * @param {string} filePath - The path of the audio file or a data URI. NOTE: Only some clients with some audio APIs will support data URIs.\r\n * @param {string} [audioId='CB_AUDIOFILE_ACMP_' + CB_AudioFile_API.ACMP._idUnique++] - Desired identifier for the audio object. If not provided, an automatic unique ID will be calculated. Note that it is not case sensitive and it should be unique for each object.\r\n * @param {CB_AudioFile_API.ACMP.OPTIONS} [options=CB_AudioFile_API.ACMP#DEFAULT_OPTIONS] - Object with the desired options.\r\n * @param {function} [callbackOk] - Function with no parameters to be called when the audio has been loaded successfully, being \"this\" the {@link CB_AudioFile_API.ACMP} object itself.\r\n * @param {function} [callbackError] - Function to be called if the audio has not been loaded successfully. The first and unique parameter will be a string describing the error found (if could be determined), being \"this\" the {@link CB_AudioFile_API.ACMP} object itself.\r\n * @returns {CB_AudioFile_API.ACMP} Returns a new {@link CB_AudioFile_API.ACMP} object.\r\n * @todo Do not allow to create one object with an \"id\" which has already been used (unless the value is undefined, null...). Note that the \"id\" is not case sensitive and it should be unique for each object.\r\n * @todo Method getCopy and static method filterProperties (similar to the ones from {@link CB_GraphicSprites} and {@link CB_GraphicSpritesScene}).\r\n */","meta":{"filename":"CB_AudioFile_API_ACMP.js","lineno":9,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{}},"description":"<p>The constructor is recommended to be called through a user-driven event (as onClick, onTouch, etc.) if the &quot;autoPlay&quot; option is set to true, as some web clients may need this at least the first time in order to be able to play the audio.</p>","kind":"class","name":"CB_AudioFile_API.ACMP","forceMemberof":true,"scope":"global","classdesc":"<p>Class to manage an audio file using &quot;ACMP&quot; ([Apache Cordova Media Plugin]{@link https://github.com/apache/cordova-plugin-media}). Used by the {@link CB_AudioFile} class internally and it shares most of its properties and methods. Recommended for internal usage only.</p>","params":[{"type":{"names":["string"]},"description":"<p>The path of the audio file or a data URI. NOTE: Only some clients with some audio APIs will support data URIs.</p>","name":"filePath"},{"type":{"names":["string"]},"optional":true,"defaultvalue":"'CB_AUDIOFILE_ACMP_' + CB_AudioFile_API.ACMP._idUnique++","description":"<p>Desired identifier for the audio object. If not provided, an automatic unique ID will be calculated. Note that it is not case sensitive and it should be unique for each object.</p>","name":"audioId"},{"type":{"names":["CB_AudioFile_API.ACMP.OPTIONS"]},"optional":true,"defaultvalue":"CB_AudioFile_API.ACMP#DEFAULT_OPTIONS","description":"<p>Object with the desired options.</p>","name":"options"},{"type":{"names":["function"]},"optional":true,"description":"<p>Function with no parameters to be called when the audio has been loaded successfully, being &quot;this&quot; the {@link CB_AudioFile_API.ACMP} object itself.</p>","name":"callbackOk"},{"type":{"names":["function"]},"optional":true,"description":"<p>Function to be called if the audio has not been loaded successfully. The first and unique parameter will be a string describing the error found (if could be determined), being &quot;this&quot; the {@link CB_AudioFile_API.ACMP} object itself.</p>","name":"callbackError"}],"returns":[{"type":{"names":["CB_AudioFile_API.ACMP"]},"description":"<p>Returns a new {@link CB_AudioFile_API.ACMP} object.</p>"}],"todo":["Do not allow to create one object with an \"id\" which has already been used (unless the value is undefined, null...). Note that the \"id\" is not case sensitive and it should be unique for each object.","Method getCopy and static method filterProperties (similar to the ones from {@link CB_GraphicSprites} and {@link CB_GraphicSpritesScene})."],"longname":"CB_AudioFile_API.ACMP"},{"comment":"/**\r\n\t * Keeps the default volume. If the {@link CB_Configuration.CrossBase.CB_AudioFile_AudioFileCache_USE_SPEAKER_VOLUME_AS_DEFAULT} property is true, this will keep the result of calling the {@link CB_Speaker.getVolume} function. Otherwise, it will use the value of the {@link CB_Configuration.CrossBase.CB_Speaker_DEFAULT_VOLUME} variable.\r\n\t *\t@constant CB_AudioFile_API.ACMP#DEFAULT_VOLUME\r\n\t * @type {number}\r\n\t * @default CB_Configuration.CrossBase.CB_AudioFile_AudioFileCache_USE_SPEAKER_VOLUME_AS_DEFAULT ? CB_Speaker.getVolume() : CB_Configuration.CrossBase.CB_Speaker_DEFAULT_VOLUME\r\n\t */","meta":{"filename":"CB_AudioFile_API_ACMP.js","lineno":29,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{}},"description":"<p>Keeps the default volume. If the {@link CB_Configuration.CrossBase.CB_AudioFile_AudioFileCache_USE_SPEAKER_VOLUME_AS_DEFAULT} property is true, this will keep the result of calling the {@link CB_Speaker.getVolume} function. Otherwise, it will use the value of the {@link CB_Configuration.CrossBase.CB_Speaker_DEFAULT_VOLUME} variable.</p>","kind":"constant","name":"DEFAULT_VOLUME","type":{"names":["number"]},"defaultvalue":"CB_Configuration.CrossBase.CB_AudioFile_AudioFileCache_USE_SPEAKER_VOLUME_AS_DEFAULT ? CB_Speaker.getVolume() : CB_Configuration.CrossBase.CB_Speaker_DEFAULT_VOLUME","memberof":"CB_AudioFile_API.ACMP","longname":"CB_AudioFile_API.ACMP#DEFAULT_VOLUME","scope":"instance"},{"comment":"/**\r\n\t * Keeps the default options when an object is created. Format: { autoLoad: boolean, autoPlay: boolean, loop: boolean, volume: number }.\r\n\t *\t@constant CB_AudioFile_API.ACMP#DEFAULT_OPTIONS\r\n\t * @type {CB_AudioFile_API.ACMP.OPTIONS}\r\n\t * @default { autoLoad: true, autoPlay: false, loop: false, volume: [CB_AudioFile_API.ACMP.prototype.DEFAULT_VOLUME]{@link CB_AudioFile_API.ACMP#DEFAULT_VOLUME} }\r\n\t */","meta":{"filename":"CB_AudioFile_API_ACMP.js","lineno":37,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{}},"description":"<p>Keeps the default options when an object is created. Format: { autoLoad: boolean, autoPlay: boolean, loop: boolean, volume: number }.</p>","kind":"constant","name":"DEFAULT_OPTIONS","type":{"names":["CB_AudioFile_API.ACMP.OPTIONS"]},"defaultvalue":"{ autoLoad: true, autoPlay: false, loop: false, volume: [CB_AudioFile_API.ACMP.prototype.DEFAULT_VOLUME]{@link CB_AudioFile_API.ACMP#DEFAULT_VOLUME} }","memberof":"CB_AudioFile_API.ACMP","longname":"CB_AudioFile_API.ACMP#DEFAULT_OPTIONS","scope":"instance"},{"comment":"/**\r\n * Object with the options for an audio file. The format is the following one: { autoLoad: boolean, autoPlay: boolean, loop: boolean, volume: number }.\r\n * @memberof CB_AudioFile_API.ACMP\r\n * @typedef {Object} CB_AudioFile_API.ACMP.OPTIONS\r\n * @property {boolean} [autoLoad={@link CB_AudioFile_API.ACMP#DEFAULT_OPTIONS}.autoLoad] - If set to false, it will not call the {@link CB_AudioFile_API.ACMP#load} method internally when the constructor is called (not recommended).\r\n * @property {boolean} [autoPlay={@link CB_AudioFile_API.ACMP#DEFAULT_OPTIONS}.autoPlay] - Value which will be used as the \"autoPlay\" parameter when calling the {@link CB_AudioFile_API.ACMP#load} method internally, only when the \"autoLoad\" is set to true (when the constructor is called).\r\n * @property {boolean} [loop={@link CB_AudioFile_API.ACMP#DEFAULT_OPTIONS}.loop] - Value that will be used for the {@link CB_AudioFile_API.ACMP#loop} property.\r\n * @property {number} [volume={@link CB_AudioFile_API.ACMP#DEFAULT_OPTIONS}.volume] - The desired volume (from 0 to the maximum value, where the maximum value will be the returning value of calling the {@link CB_Speaker.getVolume} function if the {@link CB_Configuration.CrossBase.CB_AudioFile_AudioFileCache_USE_SPEAKER_VOLUME_AS_MAXIMUM} property is set to true or it will be 100 otherwise) that will be used for the {@link CB_AudioFile_API.ACMP#volume} property.\r\n */","meta":{"filename":"CB_AudioFile_API_ACMP.js","lineno":193,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{}},"description":"<p>Object with the options for an audio file. The format is the following one: { autoLoad: boolean, autoPlay: boolean, loop: boolean, volume: number }.</p>","memberof":"CB_AudioFile_API.ACMP","kind":"typedef","name":"OPTIONS","type":{"names":["Object"]},"properties":[{"type":{"names":["boolean"]},"optional":true,"defaultvalue":"{@link CB_AudioFile_API.ACMP#DEFAULT_OPTIONS}.autoLoad","description":"<p>If set to false, it will not call the {@link CB_AudioFile_API.ACMP#load} method internally when the constructor is called (not recommended).</p>","name":"autoLoad"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":"{@link CB_AudioFile_API.ACMP#DEFAULT_OPTIONS}.autoPlay","description":"<p>Value which will be used as the &quot;autoPlay&quot; parameter when calling the {@link CB_AudioFile_API.ACMP#load} method internally, only when the &quot;autoLoad&quot; is set to true (when the constructor is called).</p>","name":"autoPlay"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":"{@link CB_AudioFile_API.ACMP#DEFAULT_OPTIONS}.loop","description":"<p>Value that will be used for the {@link CB_AudioFile_API.ACMP#loop} property.</p>","name":"loop"},{"type":{"names":["number"]},"optional":true,"defaultvalue":"{@link CB_AudioFile_API.ACMP#DEFAULT_OPTIONS}.volume","description":"<p>The desired volume (from 0 to the maximum value, where the maximum value will be the returning value of calling the {@link CB_Speaker.getVolume} function if the {@link CB_Configuration.CrossBase.CB_AudioFile_AudioFileCache_USE_SPEAKER_VOLUME_AS_MAXIMUM} property is set to true or it will be 100 otherwise) that will be used for the {@link CB_AudioFile_API.ACMP#volume} property.</p>","name":"volume"}],"longname":"CB_AudioFile_API.ACMP.OPTIONS","scope":"static"},{"comment":"/**\r\n * Destroys the audio file object and frees memory. Sets its current {@link CB_AudioFile_API.ACMP#status} property to ABORTED ({@link CB_AudioFile.ABORTED} value).\r\n * @function CB_AudioFile_API.ACMP#destructor\r\n * @param {boolean} [stopSound=false] - If set to true, it will also call the {@link CB_AudioFile_API.ACMP#stop} method.\r\n * @param {boolean} [keepStoppedUnaltered=false] - Used internally as the \"keepStoppedUnaltered\" parameter to call the {@link CB_AudioFile_API.ACMP#stop} method. If the \"stopSound\" parameter is not set to true, this parameter will be ignored as the \"stop\" method will not be called.\r\n * @param {boolean} [avoidOnStop=false] - Used internally as the \"avoidOnStop\" parameter to call the {@link CB_AudioFile_API.ACMP#stop} method. If the \"stopSound\" parameter is not set to true, this parameter will be ignored as the \"stop\" method will not be called.\r\n * @param {boolean} [forceOnStop=false] - Used internally as the \"forceOnStop\" parameter to call the {@link CB_AudioFile_API.ACMP#stop} method. If the \"stopSound\" parameter is not set to true, this parameter will be ignored as the \"stop\" method will not be called.\r\n */","meta":{"filename":"CB_AudioFile_API_ACMP.js","lineno":254,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{}},"description":"<p>Destroys the audio file object and frees memory. Sets its current {@link CB_AudioFile_API.ACMP#status} property to ABORTED ({@link CB_AudioFile.ABORTED} value).</p>","kind":"function","name":"destructor","params":[{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If set to true, it will also call the {@link CB_AudioFile_API.ACMP#stop} method.</p>","name":"stopSound"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>Used internally as the &quot;keepStoppedUnaltered&quot; parameter to call the {@link CB_AudioFile_API.ACMP#stop} method. If the &quot;stopSound&quot; parameter is not set to true, this parameter will be ignored as the &quot;stop&quot; method will not be called.</p>","name":"keepStoppedUnaltered"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>Used internally as the &quot;avoidOnStop&quot; parameter to call the {@link CB_AudioFile_API.ACMP#stop} method. If the &quot;stopSound&quot; parameter is not set to true, this parameter will be ignored as the &quot;stop&quot; method will not be called.</p>","name":"avoidOnStop"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>Used internally as the &quot;forceOnStop&quot; parameter to call the {@link CB_AudioFile_API.ACMP#stop} method. If the &quot;stopSound&quot; parameter is not set to true, this parameter will be ignored as the &quot;stop&quot; method will not be called.</p>","name":"forceOnStop"}],"memberof":"CB_AudioFile_API.ACMP","longname":"CB_AudioFile_API.ACMP#destructor","scope":"instance"},{"comment":"/**\r\n * Loads the desired audio file with the desired options. Recommended to be called through a user-driven event (as onClick, onTouch, etc.), as some web clients may need this at least the first time in order to be able to play the audio. This method will be called automatically by the constructor if the \"autoLoad\" option was set to true in its given \"options\" parameter.\r\n * When this method is called, if the {@link CB_AudioFile_API.ACMP#status} property already has the \"LOADED\" status (defined in the {@link CB_AudioFile.LOADED} constant) and the \"forceReload\" parameter is not set to true, it will exit calling the given \"callbackOk\" function (if any) immediately. Otherwise, regardless the status, the status will be set to \"LOADING\" (defined in the {@link CB_AudioFile.LOADING} constant). After it, it will reach the \"UNCHECKED\" (defined in the {@link CB_AudioFile.UNCHECKED} constant). If the \"autoPlay\" parameter is not set to true, this will be the final status (and it will be necessary to call the {@link CB_AudioFile_API.ACMP#checkPlaying} method after it). After it and only if the \"autoPlay\" is set to true, as the {@link CB_AudioFile_API.ACMP#checkPlaying} method will be called internally, it will have the \"CHECKING\" status (defined in the {@link CB_AudioFile.CHECKING} constant) and finally the \"LOADED\" status (defined in the {@link CB_AudioFile.LOADED} constant) if all goes well.\r\n * @function CB_AudioFile_API.ACMP#load\r\n * @param {string} [filePath={@link CB_AudioFile_API.ACMP#filePath}] - The path of the audio file or a data URI. NOTE: Only some clients with some audio APIs will support data URIs.\r\n * @param {string} [autoPlay=false] - If set to true, it will start playing the audio automatically (by calling the {@link CB_AudioFile_API.ACMP#play} method internally). If set to true and the {@link CB_AudioFile_API.ACMP#status} property reaches to the \"UNCHECKED\" status (defined in the {@link CB_AudioFile.UNCHECKED} constant), it will also call internally the {@link CB_AudioFile_API.ACMP#checkPlaying} method.\r\n * @param {function} [callbackOk] - Function with no parameters to be called when the audio has been loaded successfully, being \"this\" the {@link CB_AudioFile_API.ACMP} object itself.\r\n * @param {function} [callbackError] - Function to be called if the audio has not been loaded successfully. The first and unique parameter will be a string describing the error found (if it could be determined), being \"this\" the {@link CB_AudioFile_API.ACMP} object itself.\r\n * @param {boolean} [forceReload=false] - If set to false, the \"filePath\" has not been changed from the previously used and the {@link CB_AudioFile_API.ACMP#status} property belongs to the \"LOADED\" status (defined in the {@link CB_AudioFile.LOADED} constant), it will exit the method without loading the audio file again (calling the \"callbackOk\" function, if any).\r\n * @returns {CB_AudioFile_API.ACMP|null} Returns the audio API object (if it was possible to create) or null otherwise.\r\n */","meta":{"filename":"CB_AudioFile_API_ACMP.js","lineno":287,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{}},"description":"<p>Loads the desired audio file with the desired options. Recommended to be called through a user-driven event (as onClick, onTouch, etc.), as some web clients may need this at least the first time in order to be able to play the audio. This method will be called automatically by the constructor if the &quot;autoLoad&quot; option was set to true in its given &quot;options&quot; parameter.<br>When this method is called, if the {@link CB_AudioFile_API.ACMP#status} property already has the &quot;LOADED&quot; status (defined in the {@link CB_AudioFile.LOADED} constant) and the &quot;forceReload&quot; parameter is not set to true, it will exit calling the given &quot;callbackOk&quot; function (if any) immediately. Otherwise, regardless the status, the status will be set to &quot;LOADING&quot; (defined in the {@link CB_AudioFile.LOADING} constant). After it, it will reach the &quot;UNCHECKED&quot; (defined in the {@link CB_AudioFile.UNCHECKED} constant). If the &quot;autoPlay&quot; parameter is not set to true, this will be the final status (and it will be necessary to call the {@link CB_AudioFile_API.ACMP#checkPlaying} method after it). After it and only if the &quot;autoPlay&quot; is set to true, as the {@link CB_AudioFile_API.ACMP#checkPlaying} method will be called internally, it will have the &quot;CHECKING&quot; status (defined in the {@link CB_AudioFile.CHECKING} constant) and finally the &quot;LOADED&quot; status (defined in the {@link CB_AudioFile.LOADED} constant) if all goes well.</p>","kind":"function","name":"load","params":[{"type":{"names":["string"]},"optional":true,"defaultvalue":"{@link CB_AudioFile_API.ACMP#filePath}","description":"<p>The path of the audio file or a data URI. NOTE: Only some clients with some audio APIs will support data URIs.</p>","name":"filePath"},{"type":{"names":["string"]},"optional":true,"defaultvalue":false,"description":"<p>If set to true, it will start playing the audio automatically (by calling the {@link CB_AudioFile_API.ACMP#play} method internally). If set to true and the {@link CB_AudioFile_API.ACMP#status} property reaches to the &quot;UNCHECKED&quot; status (defined in the {@link CB_AudioFile.UNCHECKED} constant), it will also call internally the {@link CB_AudioFile_API.ACMP#checkPlaying} method.</p>","name":"autoPlay"},{"type":{"names":["function"]},"optional":true,"description":"<p>Function with no parameters to be called when the audio has been loaded successfully, being &quot;this&quot; the {@link CB_AudioFile_API.ACMP} object itself.</p>","name":"callbackOk"},{"type":{"names":["function"]},"optional":true,"description":"<p>Function to be called if the audio has not been loaded successfully. The first and unique parameter will be a string describing the error found (if it could be determined), being &quot;this&quot; the {@link CB_AudioFile_API.ACMP} object itself.</p>","name":"callbackError"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If set to false, the &quot;filePath&quot; has not been changed from the previously used and the {@link CB_AudioFile_API.ACMP#status} property belongs to the &quot;LOADED&quot; status (defined in the {@link CB_AudioFile.LOADED} constant), it will exit the method without loading the audio file again (calling the &quot;callbackOk&quot; function, if any).</p>","name":"forceReload"}],"returns":[{"type":{"names":["CB_AudioFile_API.ACMP","null"]},"description":"<p>Returns the audio API object (if it was possible to create) or null otherwise.</p>"}],"memberof":"CB_AudioFile_API.ACMP","longname":"CB_AudioFile_API.ACMP#load","scope":"instance"},{"comment":"/**\r\n * Checks whether the audio can be played or not. Recommended to be called through a user-driven event (as onClick, onTouch, etc.), as some web clients may need this at least the first time in order to be able to play the audio. Also recommended to use before calling the {@link CB_AudioFile_API.ACMP#play} method the first time. The checking action will only be performed if the value of the {@link CB_AudioFile_API.ACMP#status} property belongs to the {@link CB_AudioFile.UNCHECKED} or to the {@link CB_AudioFile.CHECKING} value. After checking, if the audio can be played, the {@link CB_AudioFile_API.ACMP#status} of the object will get the value of {@link CB_AudioFile.LOADED}. Otherwise, if it cannot be played, the {@link CB_AudioFile_API.ACMP#status} property will get the value of {CB_AudioFile.FAILED}.\r\n * @function CB_AudioFile_API.ACMP#checkPlaying\r\n * @param {function} [callbackOk] - Function with no parameters to be called when the audio has been checked successfully, being \"this\" the {@link CB_AudioFile_API.ACMP} object itself.\r\n * @param {function} [callbackError] - Function to be called if the audio has not been checked successfully. The first and unique parameter will be a string describing the error found (if it could be determined), being \"this\" the {@link CB_AudioFile_API.ACMP} object itself.\r\n * @param {boolean} [ignoreStatus=false] - If set to false and the {@link CB_AudioFile_API.ACMP#status} property does not belong neither to the \"UNCHECKED\" status (defined in the {@link CB_AudioFile.UNCHECKED} constant) nor to the \"CHECKING\" status (defined in the {@link CB_AudioFile.CHECKING} constant), it will fail calling the \"callbackError\" function (if any). If set to true, it will try to perform the checking action regardless the status of the audio.\r\n * @param {boolean} [ignoreQueue=false] - This parameter will be ignored in this audio API.\r\n * @param {boolean} [useCache=false] - This parameter will be ignored in this audio API.\r\n * @param {boolean} [isSwapObject=false] - Defines whether the [Media]{@link https://cordova.apache.org/docs/en/latest/reference/cordova-plugin-media/} object to check is a swap object or the normal one (a swap object is stored internally as it is necessary due ACMP issues when looping a sprite near the end of the audio file). Internal usage only recommended.\r\n * @returns {boolean} Returns false if the checking could not be performed and failed. If it returns true, it can mean either the checking has been processed successfully or it will fail in the future, so it is recommended to ignore the returning value and use the callback functions instead.\r\n */","meta":{"filename":"CB_AudioFile_API_ACMP.js","lineno":520,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{}},"description":"<p>Checks whether the audio can be played or not. Recommended to be called through a user-driven event (as onClick, onTouch, etc.), as some web clients may need this at least the first time in order to be able to play the audio. Also recommended to use before calling the {@link CB_AudioFile_API.ACMP#play} method the first time. The checking action will only be performed if the value of the {@link CB_AudioFile_API.ACMP#status} property belongs to the {@link CB_AudioFile.UNCHECKED} or to the {@link CB_AudioFile.CHECKING} value. After checking, if the audio can be played, the {@link CB_AudioFile_API.ACMP#status} of the object will get the value of {@link CB_AudioFile.LOADED}. Otherwise, if it cannot be played, the {@link CB_AudioFile_API.ACMP#status} property will get the value of {CB_AudioFile.FAILED}.</p>","kind":"function","name":"checkPlaying","params":[{"type":{"names":["function"]},"optional":true,"description":"<p>Function with no parameters to be called when the audio has been checked successfully, being &quot;this&quot; the {@link CB_AudioFile_API.ACMP} object itself.</p>","name":"callbackOk"},{"type":{"names":["function"]},"optional":true,"description":"<p>Function to be called if the audio has not been checked successfully. The first and unique parameter will be a string describing the error found (if it could be determined), being &quot;this&quot; the {@link CB_AudioFile_API.ACMP} object itself.</p>","name":"callbackError"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If set to false and the {@link CB_AudioFile_API.ACMP#status} property does not belong neither to the &quot;UNCHECKED&quot; status (defined in the {@link CB_AudioFile.UNCHECKED} constant) nor to the &quot;CHECKING&quot; status (defined in the {@link CB_AudioFile.CHECKING} constant), it will fail calling the &quot;callbackError&quot; function (if any). If set to true, it will try to perform the checking action regardless the status of the audio.</p>","name":"ignoreStatus"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>This parameter will be ignored in this audio API.</p>","name":"ignoreQueue"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>This parameter will be ignored in this audio API.</p>","name":"useCache"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>Defines whether the [Media]{@link https://cordova.apache.org/docs/en/latest/reference/cordova-plugin-media/} object to check is a swap object or the normal one (a swap object is stored internally as it is necessary due ACMP issues when looping a sprite near the end of the audio file). Internal usage only recommended.</p>","name":"isSwapObject"}],"returns":[{"type":{"names":["boolean"]},"description":"<p>Returns false if the checking could not be performed and failed. If it returns true, it can mean either the checking has been processed successfully or it will fail in the future, so it is recommended to ignore the returning value and use the callback functions instead.</p>"}],"memberof":"CB_AudioFile_API.ACMP","longname":"CB_AudioFile_API.ACMP#checkPlaying","scope":"instance"},{"comment":"/**\r\n * Tells the duration of the audio (in milliseconds). Note that some clients might not calculate the duration correctly and, in this case, a zero (0) value would be returned.\r\n * @function CB_AudioFile_API.ACMP#getDuration\r\n * @param {Object} [mediaObject={@link CB_AudioFile_API.ACMP#mediaObject}] - [Media]{@link https://cordova.apache.org/docs/en/latest/reference/cordova-plugin-media/} object whose audio duration we want to check. Used internally to check either normal or swap [Media]{@link https://cordova.apache.org/docs/en/latest/reference/cordova-plugin-media/} object (a swap object is stored internally as it is necessary due ACMP issues when looping a sprite near the end of the audio file). Internal usage only recommended.\r\n * @returns {number} Returns the duration of the audio (in milliseconds). Note that some clients might not calculate the duration correctly and, in this case, a zero (0) value would be returned.\r\n */","meta":{"filename":"CB_AudioFile_API_ACMP.js","lineno":679,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{}},"description":"<p>Tells the duration of the audio (in milliseconds). Note that some clients might not calculate the duration correctly and, in this case, a zero (0) value would be returned.</p>","kind":"function","name":"getDuration","params":[{"type":{"names":["Object"]},"optional":true,"defaultvalue":"{@link CB_AudioFile_API.ACMP#mediaObject}","description":"<p>[Media]{@link https://cordova.apache.org/docs/en/latest/reference/cordova-plugin-media/} object whose audio duration we want to check. Used internally to check either normal or swap [Media]{@link https://cordova.apache.org/docs/en/latest/reference/cordova-plugin-media/} object (a swap object is stored internally as it is necessary due ACMP issues when looping a sprite near the end of the audio file). Internal usage only recommended.</p>","name":"mediaObject"}],"returns":[{"type":{"names":["number"]},"description":"<p>Returns the duration of the audio (in milliseconds). Note that some clients might not calculate the duration correctly and, in this case, a zero (0) value would be returned.</p>"}],"memberof":"CB_AudioFile_API.ACMP","longname":"CB_AudioFile_API.ACMP#getDuration","scope":"instance"},{"comment":"/**\r\n * Plays the audio.\r\n * @function CB_AudioFile_API.ACMP#play\r\n * @param {number} [startAt=0 | {@link CB_AudioFile_API.ACMP#lastStartAt} | stopAt] - Time in milliseconds where we want the audio to start at. If not provided or it is not a valid number, it will use zero (0) as default which belongs to the beginning of the audio. If the value provided is greater than the \"stopAt\" provided, it will use the value set in the {@link CB_AudioFile_API.ACMP#lastStartAt} property (which belongs to the \"startAt\" value the last time that this method was called). If, even using the {@link CB_AudioFile_API.ACMP#lastStartAt} value is still greather than the \"stopAt\" provided, it will use the same value as the \"stopAt\" which means it will not play and will stop immediately.\r\n * @param {number} [stopAt={@link CB_AudioFile_API.ACMP#getDuration}()] - Time in milliseconds where we want the audio to stop at. If not provided or it is not a valid number, it will use the returning value of the {@link CB_AudioFile_API.ACMP#getDuration} method (which should belong to the total duration of the audio, if it was calculated correctly).\r\n * @param {boolean} [loop={@link CB_AudioFile_API.ACMP#loop}] - Sets whether we want to play the audio looping (starting again and again) or just play it once. Note that at the end of each loop the \"onStop\" function defined (through the {@link CB_AudioFile_API.ACMP#onStop} method) will not be called.\r\n * @param {boolean} [avoidDelayedPlay=false] - If set to false (recommended) and the audio failed previously or was aborted (destroyed), it will try to load it correctly again automatically and play it after that if possible (this can take some time so the audio could start playing after a delay). Otherwise, if set to true and the audio failed or was aborted (destroyed), the audio will not play at all and the \"stop\" method will be called immediately.\r\n * @param {boolean} [allowedRecursiveDelay={@link CB_Configuration.CrossBase.CB_AudioFile_AudioFileCache_ALLOWED_RECURSIVE_DELAY_DEFAULT}] - The maximum amount of time (in milliseconds) of delay that we accept before start playing the audio. If the amount of time is overcome, the audio will not play at all and the {@link CB_AudioFile_API.ACMP#stop} method will be called immediately. Used only when the \"avoidDelayedPlay\" parameter is set to false and the audio needs to be loaded because it failed previously or was aborted (destroyed).\r\n * @param {function} [onPlayStart] - Function to be called when the audio starts playing successfully. The function will be called with the following parameters (in order): \"startAt\", \"stopAt\", \"startAtNextLoop\", \"loop\", \"avoidDelayedPlay\", \"allowedRecursiveDelay\" and \"startPlayingTime\", being \"this\" the {@link CB_AudioFile_API.ACMP} object. If the audio is looping, this will be called only once when the audio starts playing the first time and it will not be called next loops.\r\n * @param {function} [onLoadError] - Function to be called if the audio cannot be played successfully. The first and unique parameter will be a string describing the error found (if it could be determined), being \"this\" the {@link CB_AudioFile_API.ACMP} object.\r\n * @param {boolean} [isResume=false] - If set to true (not recommended) and it is a looping audio, the next loop will use the value of the {@link CB_AudioFile_API.ACMP#lastStartAt} property as the \"startAt\" parameter when it calls this method again automatically (internally). Recommended for internal usage only.\r\n * @param {boolean} [isLooping=false] - Used to determine whether this method was called automatically again by itself because it is looping the audio. Recommended for internal usage only.\r\n * @param {integer} [startPlayingTime] - Contains the time when the audio should start playing. Recommended for internal usage only.\r\n * @returns {boolean|integer} It returns false if the duration is 0 (\"startAt\" and \"stopAt\" are the same number), returns \"-1\" if the audio cannot be played and an error is detected or returns true otherwise. Note that even when it returns true there can be a non-detectable error and maybe the audio is not played.\r\n */","meta":{"filename":"CB_AudioFile_API_ACMP.js","lineno":702,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{}},"description":"<p>Plays the audio.</p>","kind":"function","name":"play","params":[{"type":{"names":["number"]},"optional":true,"defaultvalue":"0 | {@link CB_AudioFile_API.ACMP#lastStartAt} | stopAt","description":"<p>Time in milliseconds where we want the audio to start at. If not provided or it is not a valid number, it will use zero (0) as default which belongs to the beginning of the audio. If the value provided is greater than the &quot;stopAt&quot; provided, it will use the value set in the {@link CB_AudioFile_API.ACMP#lastStartAt} property (which belongs to the &quot;startAt&quot; value the last time that this method was called). If, even using the {@link CB_AudioFile_API.ACMP#lastStartAt} value is still greather than the &quot;stopAt&quot; provided, it will use the same value as the &quot;stopAt&quot; which means it will not play and will stop immediately.</p>","name":"startAt"},{"type":{"names":["number"]},"optional":true,"defaultvalue":"{@link CB_AudioFile_API.ACMP#getDuration}()","description":"<p>Time in milliseconds where we want the audio to stop at. If not provided or it is not a valid number, it will use the returning value of the {@link CB_AudioFile_API.ACMP#getDuration} method (which should belong to the total duration of the audio, if it was calculated correctly).</p>","name":"stopAt"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":"{@link CB_AudioFile_API.ACMP#loop}","description":"<p>Sets whether we want to play the audio looping (starting again and again) or just play it once. Note that at the end of each loop the &quot;onStop&quot; function defined (through the {@link CB_AudioFile_API.ACMP#onStop} method) will not be called.</p>","name":"loop"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If set to false (recommended) and the audio failed previously or was aborted (destroyed), it will try to load it correctly again automatically and play it after that if possible (this can take some time so the audio could start playing after a delay). Otherwise, if set to true and the audio failed or was aborted (destroyed), the audio will not play at all and the &quot;stop&quot; method will be called immediately.</p>","name":"avoidDelayedPlay"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":"{@link CB_Configuration.CrossBase.CB_AudioFile_AudioFileCache_ALLOWED_RECURSIVE_DELAY_DEFAULT}","description":"<p>The maximum amount of time (in milliseconds) of delay that we accept before start playing the audio. If the amount of time is overcome, the audio will not play at all and the {@link CB_AudioFile_API.ACMP#stop} method will be called immediately. Used only when the &quot;avoidDelayedPlay&quot; parameter is set to false and the audio needs to be loaded because it failed previously or was aborted (destroyed).</p>","name":"allowedRecursiveDelay"},{"type":{"names":["function"]},"optional":true,"description":"<p>Function to be called when the audio starts playing successfully. The function will be called with the following parameters (in order): &quot;startAt&quot;, &quot;stopAt&quot;, &quot;startAtNextLoop&quot;, &quot;loop&quot;, &quot;avoidDelayedPlay&quot;, &quot;allowedRecursiveDelay&quot; and &quot;startPlayingTime&quot;, being &quot;this&quot; the {@link CB_AudioFile_API.ACMP} object. If the audio is looping, this will be called only once when the audio starts playing the first time and it will not be called next loops.</p>","name":"onPlayStart"},{"type":{"names":["function"]},"optional":true,"description":"<p>Function to be called if the audio cannot be played successfully. The first and unique parameter will be a string describing the error found (if it could be determined), being &quot;this&quot; the {@link CB_AudioFile_API.ACMP} object.</p>","name":"onLoadError"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If set to true (not recommended) and it is a looping audio, the next loop will use the value of the {@link CB_AudioFile_API.ACMP#lastStartAt} property as the &quot;startAt&quot; parameter when it calls this method again automatically (internally). Recommended for internal usage only.</p>","name":"isResume"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>Used to determine whether this method was called automatically again by itself because it is looping the audio. Recommended for internal usage only.</p>","name":"isLooping"},{"type":{"names":["integer"]},"optional":true,"description":"<p>Contains the time when the audio should start playing. Recommended for internal usage only.</p>","name":"startPlayingTime"}],"returns":[{"type":{"names":["boolean","integer"]},"description":"<p>It returns false if the duration is 0 (&quot;startAt&quot; and &quot;stopAt&quot; are the same number), returns &quot;-1&quot; if the audio cannot be played and an error is detected or returns true otherwise. Note that even when it returns true there can be a non-detectable error and maybe the audio is not played.</p>"}],"memberof":"CB_AudioFile_API.ACMP","longname":"CB_AudioFile_API.ACMP#play","scope":"instance"},{"comment":"/**\r\n * Resumes the audio (after being paused), starting from the same point it was paused previously.\r\n * @function CB_AudioFile_API.ACMP#resume\r\n * @param {boolean} [loop={@link CB_AudioFile_API.ACMP#loop}] - Sets whether we want to play the audio looping (starting again and again) or just play it once. Note that at the end of each loop the \"onStop\" function defined (through the {@link CB_AudioFile_API.ACMP#onStop} method) will not be called.\r\n * @param {boolean} [avoidDelayedPlay=false] - If set to false (recommended) and the audio failed previously or was aborted (destroyed), it will try to load it correctly again automatically and play it after that if possible (this can take some time so the audio could start playing after a delay). Otherwise, if set to true and the audio failed or was aborted (destroyed), the audio will not play at all and the {@link CB_AudioFile_API.ACMP#stop} method will be called immediately.\r\n * @param {boolean} [allowedRecursiveDelay={@link CB_Configuration.CrossBase.CB_AudioFile_AudioFileCache_ALLOWED_RECURSIVE_DELAY_DEFAULT}] - The maximum amount of time (in milliseconds) of delay that we accept before start playing the audio. If the amount of time is overcome, the audio will not play at all and the {@link CB_AudioFile_API.ACMP#stop} method will be called immediately. Used only when the \"avoidDelayedPlay\" parameter is set to false and the audio needs to be loaded because it failed previously or was aborted (destroyed).\r\n * @param {function} [onPlayStart] - Function to be called when the audio starts playing successfully. The function will be called with the following parameters (in order): \"startAt\", \"stopAt\", \"startAtNextLoop\", \"loop\", \"avoidDelayedPlay\", \"allowedRecursiveDelay\" and \"startPlayingTime\", being \"this\" the {@link CB_AudioFile_API.ACMP} object. If the audio is looping, this will be called only once when the audio starts playing the first time and it will not be called next loops.\r\n * @param {function} [onLoadError] - Function to be called if the audio cannot be played successfully. It will not be called if the audio is not paused or is stopped. The first and unique parameter will be a string describing the error found (if it could be determined), being \"this\" the {@link CB_AudioFile_API.ACMP} object.\r\n * @returns {boolean|integer} Returns the returning value of the {@link CB_AudioFile_API.ACMP#play} method which is called internally. It returns false if the audio is not paused or it is stopped, returns \"-1\" if the audio cannot be played and an error is detected or returns true otherwise. Note that even when it returns true there can be a non-detectable error and maybe the audio is not played.\r\n */","meta":{"filename":"CB_AudioFile_API_ACMP.js","lineno":901,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{}},"description":"<p>Resumes the audio (after being paused), starting from the same point it was paused previously.</p>","kind":"function","name":"resume","params":[{"type":{"names":["boolean"]},"optional":true,"defaultvalue":"{@link CB_AudioFile_API.ACMP#loop}","description":"<p>Sets whether we want to play the audio looping (starting again and again) or just play it once. Note that at the end of each loop the &quot;onStop&quot; function defined (through the {@link CB_AudioFile_API.ACMP#onStop} method) will not be called.</p>","name":"loop"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If set to false (recommended) and the audio failed previously or was aborted (destroyed), it will try to load it correctly again automatically and play it after that if possible (this can take some time so the audio could start playing after a delay). Otherwise, if set to true and the audio failed or was aborted (destroyed), the audio will not play at all and the {@link CB_AudioFile_API.ACMP#stop} method will be called immediately.</p>","name":"avoidDelayedPlay"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":"{@link CB_Configuration.CrossBase.CB_AudioFile_AudioFileCache_ALLOWED_RECURSIVE_DELAY_DEFAULT}","description":"<p>The maximum amount of time (in milliseconds) of delay that we accept before start playing the audio. If the amount of time is overcome, the audio will not play at all and the {@link CB_AudioFile_API.ACMP#stop} method will be called immediately. Used only when the &quot;avoidDelayedPlay&quot; parameter is set to false and the audio needs to be loaded because it failed previously or was aborted (destroyed).</p>","name":"allowedRecursiveDelay"},{"type":{"names":["function"]},"optional":true,"description":"<p>Function to be called when the audio starts playing successfully. The function will be called with the following parameters (in order): &quot;startAt&quot;, &quot;stopAt&quot;, &quot;startAtNextLoop&quot;, &quot;loop&quot;, &quot;avoidDelayedPlay&quot;, &quot;allowedRecursiveDelay&quot; and &quot;startPlayingTime&quot;, being &quot;this&quot; the {@link CB_AudioFile_API.ACMP} object. If the audio is looping, this will be called only once when the audio starts playing the first time and it will not be called next loops.</p>","name":"onPlayStart"},{"type":{"names":["function"]},"optional":true,"description":"<p>Function to be called if the audio cannot be played successfully. It will not be called if the audio is not paused or is stopped. The first and unique parameter will be a string describing the error found (if it could be determined), being &quot;this&quot; the {@link CB_AudioFile_API.ACMP} object.</p>","name":"onLoadError"}],"returns":[{"type":{"names":["boolean","integer"]},"description":"<p>Returns the returning value of the {@link CB_AudioFile_API.ACMP#play} method which is called internally. It returns false if the audio is not paused or it is stopped, returns &quot;-1&quot; if the audio cannot be played and an error is detected or returns true otherwise. Note that even when it returns true there can be a non-detectable error and maybe the audio is not played.</p>"}],"memberof":"CB_AudioFile_API.ACMP","longname":"CB_AudioFile_API.ACMP#resume","scope":"instance"},{"comment":"/**\r\n * Pauses the audio when it is being played.\r\n * @function CB_AudioFile_API.ACMP#pause\r\n * @param {function} [onPause] - Function without parameters to be called when the audio is paused successfully, being \"this\" the {@link CB_AudioFile_API.ACMP} object.\r\n * @param {boolean} [keepPausedUnaltered=false] - If set to true (not recommended), the {@link CB_AudioFile_API.ACMP#paused} property will not be set to true and it will remain with its current value.\r\n * @returns {boolean} It returns false if the audio is already paused or it is stopped or if it cannot be paused. Returns true otherwise.\r\n */","meta":{"filename":"CB_AudioFile_API_ACMP.js","lineno":930,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{}},"description":"<p>Pauses the audio when it is being played.</p>","kind":"function","name":"pause","params":[{"type":{"names":["function"]},"optional":true,"description":"<p>Function without parameters to be called when the audio is paused successfully, being &quot;this&quot; the {@link CB_AudioFile_API.ACMP} object.</p>","name":"onPause"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If set to true (not recommended), the {@link CB_AudioFile_API.ACMP#paused} property will not be set to true and it will remain with its current value.</p>","name":"keepPausedUnaltered"}],"returns":[{"type":{"names":["boolean"]},"description":"<p>It returns false if the audio is already paused or it is stopped or if it cannot be paused. Returns true otherwise.</p>"}],"memberof":"CB_AudioFile_API.ACMP","longname":"CB_AudioFile_API.ACMP#pause","scope":"instance"},{"comment":"/**\r\n * Stops the audio.\r\n * @function CB_AudioFile_API.ACMP#stop\r\n * @param {boolean} [keepStoppedUnaltered=false] - If set to true (not recommended), the {@link CB_AudioFile_API.ACMP#stopped} property will not be set to true and it will remain with its current value.\r\n * @param {boolean} [avoidOnStop=false] - If set to false and there is an \"onStop\" function defined (through the {@link CB_AudioFile_API.ACMP#onStop} method), it will be called after stopping the audio (or after trying to do it, at least) but only if either the \"forceOnStop\" parameter is set to true or if the \"keepStoppedUnaltered\" parameter is set to false and the audio was not already stopped before. If set to true, the \"onStop\" function (if any) will not be called at all.\r\n * @param {boolean} [forceOnStop=false] - If it is set to true and the \"avoidOnStop\" parameter is set to false and there is an \"onStop\" function defined (through the {@link CB_AudioFile_API.ACMP#onStop} method), it will be called regardless the audio was stopped before or not. If set to false, the \"onStop\" function (if any) will only be called if the \"keepStoppedUnaltered\" parameter is set to false and the audio was not already stopped before. This parameter will be ignored if the \"avoidOnStop\" parameter is set to true.\r\n * @returns {boolean} It returns false if the stopping action cannot be performed at all (this could happen when the audio has not been loaded properly, for example). Returns true otherwise (this only means that it has been tried to be stopped but it could not be successfully).\r\n */","meta":{"filename":"CB_AudioFile_API_ACMP.js","lineno":958,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{}},"description":"<p>Stops the audio.</p>","kind":"function","name":"stop","params":[{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If set to true (not recommended), the {@link CB_AudioFile_API.ACMP#stopped} property will not be set to true and it will remain with its current value.</p>","name":"keepStoppedUnaltered"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If set to false and there is an &quot;onStop&quot; function defined (through the {@link CB_AudioFile_API.ACMP#onStop} method), it will be called after stopping the audio (or after trying to do it, at least) but only if either the &quot;forceOnStop&quot; parameter is set to true or if the &quot;keepStoppedUnaltered&quot; parameter is set to false and the audio was not already stopped before. If set to true, the &quot;onStop&quot; function (if any) will not be called at all.</p>","name":"avoidOnStop"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If it is set to true and the &quot;avoidOnStop&quot; parameter is set to false and there is an &quot;onStop&quot; function defined (through the {@link CB_AudioFile_API.ACMP#onStop} method), it will be called regardless the audio was stopped before or not. If set to false, the &quot;onStop&quot; function (if any) will only be called if the &quot;keepStoppedUnaltered&quot; parameter is set to false and the audio was not already stopped before. This parameter will be ignored if the &quot;avoidOnStop&quot; parameter is set to true.</p>","name":"forceOnStop"}],"returns":[{"type":{"names":["boolean"]},"description":"<p>It returns false if the stopping action cannot be performed at all (this could happen when the audio has not been loaded properly, for example). Returns true otherwise (this only means that it has been tried to be stopped but it could not be successfully).</p>"}],"memberof":"CB_AudioFile_API.ACMP","longname":"CB_AudioFile_API.ACMP#stop","scope":"instance"},{"comment":"/**\r\n * Sets the desired volume for the audio file (from 0 to the maximum value, where the maximum value will be the returning value of calling the {@link CB_Speaker.getVolume} function if the {@link CB_Configuration.CrossBase.CB_AudioFile_AudioFileCache_USE_SPEAKER_VOLUME_AS_MAXIMUM} property is set to true or it will be 100 otherwise).\r\n * @function CB_AudioFile_API.ACMP#setVolume\r\n * @param {number} [volume={@link CB_Speaker.getVolume()} | {@link CB_Configuration.CrossBase.CB_Speaker_DEFAULT_VOLUME}] - Desired volume (from 0 to the maximum value, where the maximum value will be the returning value of calling the {@link CB_Speaker.getVolume} function if the {@link CB_Configuration.CrossBase.CB_AudioFile_AudioFileCache_USE_SPEAKER_VOLUME_AS_MAXIMUM} property is set to true or it will be 100 otherwise).\r\n * @param {boolean} [forceSetVolumeProperty=false] - If set to true (not recommended), it will change the {@link CB_AudioFile_API.ACMP#volume} property even when the volume failed to be changed.\r\n * @param {function} [onSetVolume] - Callback function which will be called if it has been possible to set the volume (or at least it was possible to try it). It will not receive any parameters, being \"this\" the {@link CB_AudioFile_API.ACMP} object.\r\n * @param {boolean} [saveForUnmute=false] - If set to true (not recommended), it will save internally the current volume before setting it so it will restore the same volume again after calling the {@link CB_AudioFile_API.ACMP#unmute} method. Internal usage only recommended.\r\n * @param {Object} [mediaObject={@link CB_AudioFile_API.ACMP#mediaObject}] - [Media]{@link https://cordova.apache.org/docs/en/latest/reference/cordova-plugin-media/} object whose volume we want to set. Used internally to affect either normal or swap [Media]{@link https://cordova.apache.org/docs/en/latest/reference/cordova-plugin-media/} object (a swap object is stored internally as it is necessary due ACMP issues when looping a sprite near the end of the audio file). Internal usage only recommended.\r\n * @returns {number} Returns the current volume (from 0 to the maximum value, where the maximum value will be the returning value of calling the {@link CB_Speaker.getVolume} function if the {@link CB_Configuration.CrossBase.CB_AudioFile_AudioFileCache_USE_SPEAKER_VOLUME_AS_MAXIMUM} property is set to true or it will be 100 otherwise).\r\n */","meta":{"filename":"CB_AudioFile_API_ACMP.js","lineno":984,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{}},"description":"<p>Sets the desired volume for the audio file (from 0 to the maximum value, where the maximum value will be the returning value of calling the {@link CB_Speaker.getVolume} function if the {@link CB_Configuration.CrossBase.CB_AudioFile_AudioFileCache_USE_SPEAKER_VOLUME_AS_MAXIMUM} property is set to true or it will be 100 otherwise).</p>","kind":"function","name":"setVolume","params":[{"type":{"names":["number"]},"optional":true,"defaultvalue":"{@link CB_Speaker.getVolume()} | {@link CB_Configuration.CrossBase.CB_Speaker_DEFAULT_VOLUME}","description":"<p>Desired volume (from 0 to the maximum value, where the maximum value will be the returning value of calling the {@link CB_Speaker.getVolume} function if the {@link CB_Configuration.CrossBase.CB_AudioFile_AudioFileCache_USE_SPEAKER_VOLUME_AS_MAXIMUM} property is set to true or it will be 100 otherwise).</p>","name":"volume"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If set to true (not recommended), it will change the {@link CB_AudioFile_API.ACMP#volume} property even when the volume failed to be changed.</p>","name":"forceSetVolumeProperty"},{"type":{"names":["function"]},"optional":true,"description":"<p>Callback function which will be called if it has been possible to set the volume (or at least it was possible to try it). It will not receive any parameters, being &quot;this&quot; the {@link CB_AudioFile_API.ACMP} object.</p>","name":"onSetVolume"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If set to true (not recommended), it will save internally the current volume before setting it so it will restore the same volume again after calling the {@link CB_AudioFile_API.ACMP#unmute} method. Internal usage only recommended.</p>","name":"saveForUnmute"},{"type":{"names":["Object"]},"optional":true,"defaultvalue":"{@link CB_AudioFile_API.ACMP#mediaObject}","description":"<p>[Media]{@link https://cordova.apache.org/docs/en/latest/reference/cordova-plugin-media/} object whose volume we want to set. Used internally to affect either normal or swap [Media]{@link https://cordova.apache.org/docs/en/latest/reference/cordova-plugin-media/} object (a swap object is stored internally as it is necessary due ACMP issues when looping a sprite near the end of the audio file). Internal usage only recommended.</p>","name":"mediaObject"}],"returns":[{"type":{"names":["number"]},"description":"<p>Returns the current volume (from 0 to the maximum value, where the maximum value will be the returning value of calling the {@link CB_Speaker.getVolume} function if the {@link CB_Configuration.CrossBase.CB_AudioFile_AudioFileCache_USE_SPEAKER_VOLUME_AS_MAXIMUM} property is set to true or it will be 100 otherwise).</p>"}],"memberof":"CB_AudioFile_API.ACMP","longname":"CB_AudioFile_API.ACMP#setVolume","scope":"instance"},{"comment":"/**\r\n * Mutes the audio file.\r\n * @function CB_AudioFile_API.ACMP#mute\r\n * @param {function} [onMute] - Callback function which will be called if it has been possible to mute the audio file (or at least it was possible to try it). It will not receive any parameters, being \"this\" the {@link CB_AudioFile_API.ACMP} object.\r\n * @returns {number} Returns the current volume (from 0 to the maximum value, where the maximum value will be the returning value of calling the {@link CB_Speaker.getVolume} function if the {@link CB_Configuration.CrossBase.CB_AudioFile_AudioFileCache_USE_SPEAKER_VOLUME_AS_MAXIMUM} property is set to true or it will be 100 otherwise). If all goes well, the returning value should be zero (0). Note that, even when it returns a zero (0) value, this does not always mean that the mute has been applied successfully.\r\n */","meta":{"filename":"CB_AudioFile_API_ACMP.js","lineno":1029,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{}},"description":"<p>Mutes the audio file.</p>","kind":"function","name":"mute","params":[{"type":{"names":["function"]},"optional":true,"description":"<p>Callback function which will be called if it has been possible to mute the audio file (or at least it was possible to try it). It will not receive any parameters, being &quot;this&quot; the {@link CB_AudioFile_API.ACMP} object.</p>","name":"onMute"}],"returns":[{"type":{"names":["number"]},"description":"<p>Returns the current volume (from 0 to the maximum value, where the maximum value will be the returning value of calling the {@link CB_Speaker.getVolume} function if the {@link CB_Configuration.CrossBase.CB_AudioFile_AudioFileCache_USE_SPEAKER_VOLUME_AS_MAXIMUM} property is set to true or it will be 100 otherwise). If all goes well, the returning value should be zero (0). Note that, even when it returns a zero (0) value, this does not always mean that the mute has been applied successfully.</p>"}],"memberof":"CB_AudioFile_API.ACMP","longname":"CB_AudioFile_API.ACMP#mute","scope":"instance"},{"comment":"/**\r\n * Restores audio after muting it (unmutes it).\r\n * @function CB_AudioFile_API.ACMP#unmute\r\n * @param {function} [onUnmute] - Callback function which will be called if it has been possible to unmute the audio file (or at least it was possible to try it). It will not receive any parameters, being \"this\" the {@link CB_AudioFile_API.ACMP} object.\r\n * @returns {number} Returns the current volume (from 0 to the maximum value, where the maximum value will be the returning value of calling the {@link CB_Speaker.getVolume} function if the {@link CB_Configuration.CrossBase.CB_AudioFile_AudioFileCache_USE_SPEAKER_VOLUME_AS_MAXIMUM} property is set to true or it will be 100 otherwise).\r\n */","meta":{"filename":"CB_AudioFile_API_ACMP.js","lineno":1047,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{}},"description":"<p>Restores audio after muting it (unmutes it).</p>","kind":"function","name":"unmute","params":[{"type":{"names":["function"]},"optional":true,"description":"<p>Callback function which will be called if it has been possible to unmute the audio file (or at least it was possible to try it). It will not receive any parameters, being &quot;this&quot; the {@link CB_AudioFile_API.ACMP} object.</p>","name":"onUnmute"}],"returns":[{"type":{"names":["number"]},"description":"<p>Returns the current volume (from 0 to the maximum value, where the maximum value will be the returning value of calling the {@link CB_Speaker.getVolume} function if the {@link CB_Configuration.CrossBase.CB_AudioFile_AudioFileCache_USE_SPEAKER_VOLUME_AS_MAXIMUM} property is set to true or it will be 100 otherwise).</p>"}],"memberof":"CB_AudioFile_API.ACMP","longname":"CB_AudioFile_API.ACMP#unmute","scope":"instance"},{"comment":"/**\r\n * Gets the current time (in milliseconds) which belongs to the position where the audio is currently playing or where it has been paused. Note that some audio APIs and clients could give wrong values.\r\n * @function CB_AudioFile_API.ACMP#getCurrentTime\r\n * @returns {number} Returns the current time (in milliseconds). Note that some audio APIs and clients could give wrong values.\r\n */","meta":{"filename":"CB_AudioFile_API_ACMP.js","lineno":1065,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{}},"description":"<p>Gets the current time (in milliseconds) which belongs to the position where the audio is currently playing or where it has been paused. Note that some audio APIs and clients could give wrong values.</p>","kind":"function","name":"getCurrentTime","returns":[{"type":{"names":["number"]},"description":"<p>Returns the current time (in milliseconds). Note that some audio APIs and clients could give wrong values.</p>"}],"memberof":"CB_AudioFile_API.ACMP","longname":"CB_AudioFile_API.ACMP#getCurrentTime","scope":"instance"},{"comment":"/**\r\n * Sets a function to execute when the audio file stops playing or removes it.\r\n * @function CB_AudioFile_API.ACMP#onStop\r\n * @param {function|null} callbackFunction - The function (event listener) that we want to execute when the event is fired. No parameters will be received, being \"this\" the {@link CB_AudioFile_API.ACMP} object. If a null value is used, the event will be removed.\r\n * @param {boolean} [keepOldFunction=true] - Defines whether we want to keep any possible previous event listener or not.\r\n * @returns {boolean} Returns whether the event has been set or not (removed).\r\n */","meta":{"filename":"CB_AudioFile_API_ACMP.js","lineno":1088,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{}},"description":"<p>Sets a function to execute when the audio file stops playing or removes it.</p>","kind":"function","name":"onStop","params":[{"type":{"names":["function","null"]},"description":"<p>The function (event listener) that we want to execute when the event is fired. No parameters will be received, being &quot;this&quot; the {@link CB_AudioFile_API.ACMP} object. If a null value is used, the event will be removed.</p>","name":"callbackFunction"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":true,"description":"<p>Defines whether we want to keep any possible previous event listener or not.</p>","name":"keepOldFunction"}],"returns":[{"type":{"names":["boolean"]},"description":"<p>Returns whether the event has been set or not (removed).</p>"}],"memberof":"CB_AudioFile_API.ACMP","longname":"CB_AudioFile_API.ACMP#onStop","scope":"instance"},{"comment":"/**\r\n * Returns a number representing the percentage of the loading progress for the audio file (from 0 to 100, being 100 a complete loading progress). The way to calculate it internally may differ from one audio API to another and it is not totally reliable.\r\n * @function CB_AudioFile_API.ACMP#getProgress\r\n * @returns {number} Returns a number representing the percentage of the loading progress for the audio file (from 0 to 100, being 100 a complete loading progress). The way to calculate it internally may differ from one audio API to another and it is not totally reliable.\r\n */","meta":{"filename":"CB_AudioFile_API_ACMP.js","lineno":1125,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{}},"description":"<p>Returns a number representing the percentage of the loading progress for the audio file (from 0 to 100, being 100 a complete loading progress). The way to calculate it internally may differ from one audio API to another and it is not totally reliable.</p>","kind":"function","name":"getProgress","returns":[{"type":{"names":["number"]},"description":"<p>Returns a number representing the percentage of the loading progress for the audio file (from 0 to 100, being 100 a complete loading progress). The way to calculate it internally may differ from one audio API to another and it is not totally reliable.</p>"}],"memberof":"CB_AudioFile_API.ACMP","longname":"CB_AudioFile_API.ACMP#getProgress","scope":"instance"},{"comment":"/**\r\n * @file Audio files management using \"SM2\" ([SoundManager 2]{@link http://schillmania.com/projects/soundmanager2/}). Contains the {@link CB_AudioFile_API.SM2} class.\r\n * @author Joan Alba Maldonado <workindalian@gmail.com>\r\n */","meta":{"filename":"CB_AudioFile_API_SM2.js","lineno":1,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{}},"name":"CrossBase/audiovisual/audio/CB_AudioFile_API_SM2.js","kind":"file","description":"<p>Audio files management using &quot;SM2&quot; ([SoundManager 2]{@link http://schillmania.com/projects/soundmanager2/}). Contains the {@link CB_AudioFile_API.SM2} class.</p>","preserveName":true,"author":["Joan Alba Maldonado <workindalian@gmail.com>"],"longname":"CrossBase/audiovisual/audio/CB_AudioFile_API_SM2.js","scope":"global"},{"comment":"/**\r\n * The constructor is recommended to be called through a user-driven event (as onClick, onTouch, etc.) if the \"autoPlay\" option is set to true, as some web clients may need this at least the first time in order to be able to play the audio.\r\n * @class CB_AudioFile_API.SM2\r\n * @memberof! <global>\r\n * @classdesc Class to manage an audio file using \"SM2\" ([SoundManager 2]{@link http://schillmania.com/projects/soundmanager2/}). Used by the {@link CB_AudioFile} class internally and it shares most of its properties and methods. Recommended for internal usage only.\r\n * @param {string} filePath - The path of the audio file or a data URI. NOTE: Only some clients with some audio APIs will support data URIs.\r\n * @param {string} [audioId='CB_AUDIOFILE_SM2_' + CB_AudioFile_API.SM2._idUnique++] - Desired identifier for the audio object. If not provided, an automatic unique ID will be calculated. Note that it is not case sensitive and it should be unique for each object.\r\n * @param {CB_AudioFile_API.SM2.OPTIONS} [options=CB_AudioFile_API.SM2#DEFAULT_OPTIONS] - Object with the desired options.\r\n * @param {function} [callbackOk] - Function with no parameters to be called when the audio has been loaded successfully, being \"this\" the {@link CB_AudioFile_API.SM2} object itself.\r\n * @param {function} [callbackError] - Function to be called if the audio has not been loaded successfully. The first and unique parameter will be a string describing the error found (if could be determined), being \"this\" the {@link CB_AudioFile_API.SM2} object itself.\r\n * @returns {CB_AudioFile_API.SM2} Returns a new {@link CB_AudioFile_API.SM2} object.\r\n * @todo Do not allow to create one object with an \"id\" which has already been used (unless the value is undefined, null...). Note that the \"id\" is not case sensitive and it should be unique for each object.\r\n * @todo Method getCopy and static method filterProperties (similar to the ones from {@link CB_GraphicSprites} and {@link CB_GraphicSpritesScene}).\r\n */","meta":{"filename":"CB_AudioFile_API_SM2.js","lineno":16,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{}},"description":"<p>The constructor is recommended to be called through a user-driven event (as onClick, onTouch, etc.) if the &quot;autoPlay&quot; option is set to true, as some web clients may need this at least the first time in order to be able to play the audio.</p>","kind":"class","name":"CB_AudioFile_API.SM2","forceMemberof":true,"scope":"global","classdesc":"<p>Class to manage an audio file using &quot;SM2&quot; ([SoundManager 2]{@link http://schillmania.com/projects/soundmanager2/}). Used by the {@link CB_AudioFile} class internally and it shares most of its properties and methods. Recommended for internal usage only.</p>","params":[{"type":{"names":["string"]},"description":"<p>The path of the audio file or a data URI. NOTE: Only some clients with some audio APIs will support data URIs.</p>","name":"filePath"},{"type":{"names":["string"]},"optional":true,"defaultvalue":"'CB_AUDIOFILE_SM2_' + CB_AudioFile_API.SM2._idUnique++","description":"<p>Desired identifier for the audio object. If not provided, an automatic unique ID will be calculated. Note that it is not case sensitive and it should be unique for each object.</p>","name":"audioId"},{"type":{"names":["CB_AudioFile_API.SM2.OPTIONS"]},"optional":true,"defaultvalue":"CB_AudioFile_API.SM2#DEFAULT_OPTIONS","description":"<p>Object with the desired options.</p>","name":"options"},{"type":{"names":["function"]},"optional":true,"description":"<p>Function with no parameters to be called when the audio has been loaded successfully, being &quot;this&quot; the {@link CB_AudioFile_API.SM2} object itself.</p>","name":"callbackOk"},{"type":{"names":["function"]},"optional":true,"description":"<p>Function to be called if the audio has not been loaded successfully. The first and unique parameter will be a string describing the error found (if could be determined), being &quot;this&quot; the {@link CB_AudioFile_API.SM2} object itself.</p>","name":"callbackError"}],"returns":[{"type":{"names":["CB_AudioFile_API.SM2"]},"description":"<p>Returns a new {@link CB_AudioFile_API.SM2} object.</p>"}],"todo":["Do not allow to create one object with an \"id\" which has already been used (unless the value is undefined, null...). Note that the \"id\" is not case sensitive and it should be unique for each object.","Method getCopy and static method filterProperties (similar to the ones from {@link CB_GraphicSprites} and {@link CB_GraphicSpritesScene})."],"longname":"CB_AudioFile_API.SM2"},{"comment":"/**\r\n\t * Keeps the default volume. If the {@link CB_Configuration.CrossBase.CB_AudioFile_AudioFileCache_USE_SPEAKER_VOLUME_AS_DEFAULT} property is true, this will keep the result of calling the {@link CB_Speaker.getVolume} function. Otherwise, it will use the value of the {@link CB_Configuration.CrossBase.CB_Speaker_DEFAULT_VOLUME} variable.\r\n\t *\t@constant CB_AudioFile_API.SM2#DEFAULT_VOLUME\r\n\t * @type {number}\r\n\t * @default CB_Configuration.CrossBase.CB_AudioFile_AudioFileCache_USE_SPEAKER_VOLUME_AS_DEFAULT ? CB_Speaker.getVolume() : CB_Configuration.CrossBase.CB_Speaker_DEFAULT_VOLUME\r\n\t */","meta":{"filename":"CB_AudioFile_API_SM2.js","lineno":36,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{}},"description":"<p>Keeps the default volume. If the {@link CB_Configuration.CrossBase.CB_AudioFile_AudioFileCache_USE_SPEAKER_VOLUME_AS_DEFAULT} property is true, this will keep the result of calling the {@link CB_Speaker.getVolume} function. Otherwise, it will use the value of the {@link CB_Configuration.CrossBase.CB_Speaker_DEFAULT_VOLUME} variable.</p>","kind":"constant","name":"DEFAULT_VOLUME","type":{"names":["number"]},"defaultvalue":"CB_Configuration.CrossBase.CB_AudioFile_AudioFileCache_USE_SPEAKER_VOLUME_AS_DEFAULT ? CB_Speaker.getVolume() : CB_Configuration.CrossBase.CB_Speaker_DEFAULT_VOLUME","memberof":"CB_AudioFile_API.SM2","longname":"CB_AudioFile_API.SM2#DEFAULT_VOLUME","scope":"instance"},{"comment":"/**\r\n\t * Keeps the default options when an object is created. Format: { autoLoad: boolean, autoPlay: boolean, loop: boolean, volume: number }.\r\n\t *\t@constant CB_AudioFile_API.SM2#DEFAULT_OPTIONS\r\n\t * @type {CB_AudioFile_API.SM2.OPTIONS}\r\n\t * @default { autoLoad: true, autoPlay: false, loop: false, volume: [CB_AudioFile_API.SM2.prototype.DEFAULT_VOLUME]{@link CB_AudioFile_API.SM2#DEFAULT_VOLUME} }\r\n\t */","meta":{"filename":"CB_AudioFile_API_SM2.js","lineno":44,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{}},"description":"<p>Keeps the default options when an object is created. Format: { autoLoad: boolean, autoPlay: boolean, loop: boolean, volume: number }.</p>","kind":"constant","name":"DEFAULT_OPTIONS","type":{"names":["CB_AudioFile_API.SM2.OPTIONS"]},"defaultvalue":"{ autoLoad: true, autoPlay: false, loop: false, volume: [CB_AudioFile_API.SM2.prototype.DEFAULT_VOLUME]{@link CB_AudioFile_API.SM2#DEFAULT_VOLUME} }","memberof":"CB_AudioFile_API.SM2","longname":"CB_AudioFile_API.SM2#DEFAULT_OPTIONS","scope":"instance"},{"comment":"/**\r\n * Object with the options for an audio file. The format is the following one: { autoLoad: boolean, autoPlay: boolean, loop: boolean, volume: number }.\r\n * @memberof CB_AudioFile_API.SM2\r\n * @typedef {Object} CB_AudioFile_API.SM2.OPTIONS\r\n * @property {boolean} [autoLoad={@link CB_AudioFile_API.SM2#DEFAULT_OPTIONS}.autoLoad] - If set to false, it will not call the {@link CB_AudioFile_API.SM2#load} method internally when the constructor is called (not recommended).\r\n * @property {boolean} [autoPlay={@link CB_AudioFile_API.SM2#DEFAULT_OPTIONS}.autoPlay] - Value which will be used as the \"autoPlay\" parameter when calling the {@link CB_AudioFile_API.SM2#load} method internally, only when the \"autoLoad\" is set to true (when the constructor is called).\r\n * @property {boolean} [loop={@link CB_AudioFile_API.SM2#DEFAULT_OPTIONS}.loop] - Value that will be used for the {@link CB_AudioFile_API.SM2#loop} property.\r\n * @property {number} [volume={@link CB_AudioFile_API.SM2#DEFAULT_OPTIONS}.volume] - The desired volume (from 0 to the maximum value, where the maximum value will be the returning value of calling the {@link CB_Speaker.getVolume} function if the {@link CB_Configuration.CrossBase.CB_AudioFile_AudioFileCache_USE_SPEAKER_VOLUME_AS_MAXIMUM} property is set to true or it will be 100 otherwise) that will be used for the {@link CB_AudioFile_API.SM2#volume} property.\r\n */","meta":{"filename":"CB_AudioFile_API_SM2.js","lineno":198,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{}},"description":"<p>Object with the options for an audio file. The format is the following one: { autoLoad: boolean, autoPlay: boolean, loop: boolean, volume: number }.</p>","memberof":"CB_AudioFile_API.SM2","kind":"typedef","name":"OPTIONS","type":{"names":["Object"]},"properties":[{"type":{"names":["boolean"]},"optional":true,"defaultvalue":"{@link CB_AudioFile_API.SM2#DEFAULT_OPTIONS}.autoLoad","description":"<p>If set to false, it will not call the {@link CB_AudioFile_API.SM2#load} method internally when the constructor is called (not recommended).</p>","name":"autoLoad"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":"{@link CB_AudioFile_API.SM2#DEFAULT_OPTIONS}.autoPlay","description":"<p>Value which will be used as the &quot;autoPlay&quot; parameter when calling the {@link CB_AudioFile_API.SM2#load} method internally, only when the &quot;autoLoad&quot; is set to true (when the constructor is called).</p>","name":"autoPlay"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":"{@link CB_AudioFile_API.SM2#DEFAULT_OPTIONS}.loop","description":"<p>Value that will be used for the {@link CB_AudioFile_API.SM2#loop} property.</p>","name":"loop"},{"type":{"names":["number"]},"optional":true,"defaultvalue":"{@link CB_AudioFile_API.SM2#DEFAULT_OPTIONS}.volume","description":"<p>The desired volume (from 0 to the maximum value, where the maximum value will be the returning value of calling the {@link CB_Speaker.getVolume} function if the {@link CB_Configuration.CrossBase.CB_AudioFile_AudioFileCache_USE_SPEAKER_VOLUME_AS_MAXIMUM} property is set to true or it will be 100 otherwise) that will be used for the {@link CB_AudioFile_API.SM2#volume} property.</p>","name":"volume"}],"longname":"CB_AudioFile_API.SM2.OPTIONS","scope":"static"},{"comment":"/**\r\n * Destroys the audio file object and frees memory. Sets its current {@link CB_AudioFile_API.SM2#status} property to ABORTED ({@link CB_AudioFile.ABORTED} value).\r\n * @function CB_AudioFile_API.SM2#destructor\r\n * @param {boolean} [stopSound=false] - If set to true, it will also call the {@link CB_AudioFile_API.SM2#stop} method.\r\n * @param {boolean} [keepStoppedUnaltered=false] - Used internally as the \"keepStoppedUnaltered\" parameter to call the {@link CB_AudioFile_API.SM2#stop} method. If the \"stopSound\" parameter is not set to true, this parameter will be ignored as the \"stop\" method will not be called.\r\n * @param {boolean} [avoidOnStop=false] - Used internally as the \"avoidOnStop\" parameter to call the {@link CB_AudioFile_API.SM2#stop} method. If the \"stopSound\" parameter is not set to true, this parameter will be ignored as the \"stop\" method will not be called.\r\n * @param {boolean} [forceOnStop=false] - Used internally as the \"forceOnStop\" parameter to call the {@link CB_AudioFile_API.SM2#stop} method. If the \"stopSound\" parameter is not set to true, this parameter will be ignored as the \"stop\" method will not be called.\r\n */","meta":{"filename":"CB_AudioFile_API_SM2.js","lineno":259,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{}},"description":"<p>Destroys the audio file object and frees memory. Sets its current {@link CB_AudioFile_API.SM2#status} property to ABORTED ({@link CB_AudioFile.ABORTED} value).</p>","kind":"function","name":"destructor","params":[{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If set to true, it will also call the {@link CB_AudioFile_API.SM2#stop} method.</p>","name":"stopSound"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>Used internally as the &quot;keepStoppedUnaltered&quot; parameter to call the {@link CB_AudioFile_API.SM2#stop} method. If the &quot;stopSound&quot; parameter is not set to true, this parameter will be ignored as the &quot;stop&quot; method will not be called.</p>","name":"keepStoppedUnaltered"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>Used internally as the &quot;avoidOnStop&quot; parameter to call the {@link CB_AudioFile_API.SM2#stop} method. If the &quot;stopSound&quot; parameter is not set to true, this parameter will be ignored as the &quot;stop&quot; method will not be called.</p>","name":"avoidOnStop"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>Used internally as the &quot;forceOnStop&quot; parameter to call the {@link CB_AudioFile_API.SM2#stop} method. If the &quot;stopSound&quot; parameter is not set to true, this parameter will be ignored as the &quot;stop&quot; method will not be called.</p>","name":"forceOnStop"}],"memberof":"CB_AudioFile_API.SM2","longname":"CB_AudioFile_API.SM2#destructor","scope":"instance"},{"comment":"/**\r\n * Loads the desired audio file with the desired options. Recommended to be called through a user-driven event (as onClick, onTouch, etc.), as some web clients may need this at least the first time in order to be able to play the audio. This method will be called automatically by the constructor if the \"autoLoad\" option was set to true in its given \"options\" parameter.\r\n * When this method is called, if the {@link CB_AudioFile_API.SM2#status} property already has the \"LOADED\" status (defined in the {@link CB_AudioFile.LOADED} constant) and the \"forceReload\" parameter is not set to true, it will exit calling the given \"callbackOk\" function (if any) immediately. Otherwise, regardless the status, the status will be set to \"LOADING\" (defined in the {@link CB_AudioFile.LOADING} constant). After it, it will reach the \"UNCHECKED\" (defined in the {@link CB_AudioFile.UNCHECKED} constant). If the \"autoPlay\" parameter is not set to true, this will be the final status (and it will be necessary to call the {@link CB_AudioFile_API.SM2#checkPlaying} method after it). After it and only if the \"autoPlay\" is set to true, as the {@link CB_AudioFile_API.SM2#checkPlaying} method will be called internally, it will have the \"CHECKING\" status (defined in the {@link CB_AudioFile.CHECKING} constant) and finally the \"LOADED\" status (defined in the {@link CB_AudioFile.LOADED} constant) if all goes well.\r\n * @function CB_AudioFile_API.SM2#load\r\n * @param {string} [filePath={@link CB_AudioFile_API.SM2#filePath}] - The path of the audio file or a data URI. NOTE: Only some clients with some audio APIs will support data URIs.\r\n * @param {string} [autoPlay=false] - If set to true, it will start playing the audio automatically (by calling the {@link CB_AudioFile_API.SM2#play} method internally). If set to true and the {@link CB_AudioFile_API.SM2#status} property reaches to the \"UNCHECKED\" status (defined in the {@link CB_AudioFile.UNCHECKED} constant), it will also call internally the {@link CB_AudioFile_API.SM2#checkPlaying} method.\r\n * @param {function} [callbackOk] - Function with no parameters to be called when the audio has been loaded successfully, being \"this\" the {@link CB_AudioFile_API.SM2} object itself.\r\n * @param {function} [callbackError] - Function to be called if the audio has not been loaded successfully. The first and unique parameter will be a string describing the error found (if it could be determined), being \"this\" the {@link CB_AudioFile_API.SM2} object itself.\r\n * @param {boolean} [forceReload=false] - If set to false, the \"filePath\" has not been changed from the previously used and the {@link CB_AudioFile_API.SM2#status} property belongs to the \"LOADED\" status (defined in the {@link CB_AudioFile.LOADED} constant), it will exit the method without loading the audio file again (calling the \"callbackOk\" function, if any).\r\n * @returns {CB_AudioFile_API.SM2|null} Returns the audio API object (if it was possible to create) or null otherwise.\r\n */","meta":{"filename":"CB_AudioFile_API_SM2.js","lineno":299,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{}},"description":"<p>Loads the desired audio file with the desired options. Recommended to be called through a user-driven event (as onClick, onTouch, etc.), as some web clients may need this at least the first time in order to be able to play the audio. This method will be called automatically by the constructor if the &quot;autoLoad&quot; option was set to true in its given &quot;options&quot; parameter.<br>When this method is called, if the {@link CB_AudioFile_API.SM2#status} property already has the &quot;LOADED&quot; status (defined in the {@link CB_AudioFile.LOADED} constant) and the &quot;forceReload&quot; parameter is not set to true, it will exit calling the given &quot;callbackOk&quot; function (if any) immediately. Otherwise, regardless the status, the status will be set to &quot;LOADING&quot; (defined in the {@link CB_AudioFile.LOADING} constant). After it, it will reach the &quot;UNCHECKED&quot; (defined in the {@link CB_AudioFile.UNCHECKED} constant). If the &quot;autoPlay&quot; parameter is not set to true, this will be the final status (and it will be necessary to call the {@link CB_AudioFile_API.SM2#checkPlaying} method after it). After it and only if the &quot;autoPlay&quot; is set to true, as the {@link CB_AudioFile_API.SM2#checkPlaying} method will be called internally, it will have the &quot;CHECKING&quot; status (defined in the {@link CB_AudioFile.CHECKING} constant) and finally the &quot;LOADED&quot; status (defined in the {@link CB_AudioFile.LOADED} constant) if all goes well.</p>","kind":"function","name":"load","params":[{"type":{"names":["string"]},"optional":true,"defaultvalue":"{@link CB_AudioFile_API.SM2#filePath}","description":"<p>The path of the audio file or a data URI. NOTE: Only some clients with some audio APIs will support data URIs.</p>","name":"filePath"},{"type":{"names":["string"]},"optional":true,"defaultvalue":false,"description":"<p>If set to true, it will start playing the audio automatically (by calling the {@link CB_AudioFile_API.SM2#play} method internally). If set to true and the {@link CB_AudioFile_API.SM2#status} property reaches to the &quot;UNCHECKED&quot; status (defined in the {@link CB_AudioFile.UNCHECKED} constant), it will also call internally the {@link CB_AudioFile_API.SM2#checkPlaying} method.</p>","name":"autoPlay"},{"type":{"names":["function"]},"optional":true,"description":"<p>Function with no parameters to be called when the audio has been loaded successfully, being &quot;this&quot; the {@link CB_AudioFile_API.SM2} object itself.</p>","name":"callbackOk"},{"type":{"names":["function"]},"optional":true,"description":"<p>Function to be called if the audio has not been loaded successfully. The first and unique parameter will be a string describing the error found (if it could be determined), being &quot;this&quot; the {@link CB_AudioFile_API.SM2} object itself.</p>","name":"callbackError"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If set to false, the &quot;filePath&quot; has not been changed from the previously used and the {@link CB_AudioFile_API.SM2#status} property belongs to the &quot;LOADED&quot; status (defined in the {@link CB_AudioFile.LOADED} constant), it will exit the method without loading the audio file again (calling the &quot;callbackOk&quot; function, if any).</p>","name":"forceReload"}],"returns":[{"type":{"names":["CB_AudioFile_API.SM2","null"]},"description":"<p>Returns the audio API object (if it was possible to create) or null otherwise.</p>"}],"memberof":"CB_AudioFile_API.SM2","longname":"CB_AudioFile_API.SM2#load","scope":"instance"},{"comment":"/**\r\n * Checks whether the audio can be played or not. Recommended to be called through a user-driven event (as onClick, onTouch, etc.), as some web clients may need this at least the first time in order to be able to play the audio. Also recommended to use before calling the {@link CB_AudioFile_API.SM2#play} method the first time. The checking action will only be performed if the value of the {@link CB_AudioFile_API.SM2#status} property belongs to the {@link CB_AudioFile.UNCHECKED} or to the {@link CB_AudioFile.CHECKING} value. After checking, if the audio can be played, the {@link CB_AudioFile_API.SM2#status} of the object will get the value of {@link CB_AudioFile.LOADED}. Otherwise, if it cannot be played, the {@link CB_AudioFile_API.SM2#status} property will get the value of {CB_AudioFile.FAILED}.\r\n * @function CB_AudioFile_API.SM2#checkPlaying\r\n * @param {function} [callbackOk] - Function with no parameters to be called when the audio has been checked successfully, being \"this\" the {@link CB_AudioFile_API.SM2} object itself.\r\n * @param {function} [callbackError] - Function to be called if the audio has not been checked successfully. The first and unique parameter will be a string describing the error found (if it could be determined), being \"this\" the {@link CB_AudioFile_API.SM2} object itself.\r\n * @param {boolean} [ignoreStatus=false] - If set to false and the {@link CB_AudioFile_API.SM2#status} property does not belong neither to the \"UNCHECKED\" status (defined in the {@link CB_AudioFile.UNCHECKED} constant) nor to the \"CHECKING\" status (defined in the {@link CB_AudioFile.CHECKING} constant), it will fail calling the \"callbackError\" function (if any). If set to true, it will try to perform the checking action regardless the status of the audio.\r\n * @param {boolean} [ignoreQueue=false] - If set to false and there is already the maximum number of audio files being checked (defined internally), the function will exit and it will call itself automatically again and again until the checking process can be performed (when its queue turn has been reached). This is done for performance purposes.\r\n * @param {boolean} [useCache=false] - This parameter will be ignored in this audio API.\r\n * @returns {boolean} Returns false if the checking could not be performed and failed. If it returns true, it can mean either the checking has been processed successfully or it will fail in the future, so it is recommended to ignore the returning value and use the callback functions instead.\r\n */","meta":{"filename":"CB_AudioFile_API_SM2.js","lineno":514,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{}},"description":"<p>Checks whether the audio can be played or not. Recommended to be called through a user-driven event (as onClick, onTouch, etc.), as some web clients may need this at least the first time in order to be able to play the audio. Also recommended to use before calling the {@link CB_AudioFile_API.SM2#play} method the first time. The checking action will only be performed if the value of the {@link CB_AudioFile_API.SM2#status} property belongs to the {@link CB_AudioFile.UNCHECKED} or to the {@link CB_AudioFile.CHECKING} value. After checking, if the audio can be played, the {@link CB_AudioFile_API.SM2#status} of the object will get the value of {@link CB_AudioFile.LOADED}. Otherwise, if it cannot be played, the {@link CB_AudioFile_API.SM2#status} property will get the value of {CB_AudioFile.FAILED}.</p>","kind":"function","name":"checkPlaying","params":[{"type":{"names":["function"]},"optional":true,"description":"<p>Function with no parameters to be called when the audio has been checked successfully, being &quot;this&quot; the {@link CB_AudioFile_API.SM2} object itself.</p>","name":"callbackOk"},{"type":{"names":["function"]},"optional":true,"description":"<p>Function to be called if the audio has not been checked successfully. The first and unique parameter will be a string describing the error found (if it could be determined), being &quot;this&quot; the {@link CB_AudioFile_API.SM2} object itself.</p>","name":"callbackError"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If set to false and the {@link CB_AudioFile_API.SM2#status} property does not belong neither to the &quot;UNCHECKED&quot; status (defined in the {@link CB_AudioFile.UNCHECKED} constant) nor to the &quot;CHECKING&quot; status (defined in the {@link CB_AudioFile.CHECKING} constant), it will fail calling the &quot;callbackError&quot; function (if any). If set to true, it will try to perform the checking action regardless the status of the audio.</p>","name":"ignoreStatus"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If set to false and there is already the maximum number of audio files being checked (defined internally), the function will exit and it will call itself automatically again and again until the checking process can be performed (when its queue turn has been reached). This is done for performance purposes.</p>","name":"ignoreQueue"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>This parameter will be ignored in this audio API.</p>","name":"useCache"}],"returns":[{"type":{"names":["boolean"]},"description":"<p>Returns false if the checking could not be performed and failed. If it returns true, it can mean either the checking has been processed successfully or it will fail in the future, so it is recommended to ignore the returning value and use the callback functions instead.</p>"}],"memberof":"CB_AudioFile_API.SM2","longname":"CB_AudioFile_API.SM2#checkPlaying","scope":"instance"},{"comment":"/**\r\n * Tells the duration of the audio (in milliseconds). Note that some clients might not calculate the duration correctly and, in this case, a zero (0) value would be returned.\r\n * @function CB_AudioFile_API.SM2#getDuration\r\n * @returns {number} Returns the duration of the audio (in milliseconds). Note that some clients might not calculate the duration correctly and, in this case, a zero (0) value would be returned.\r\n */","meta":{"filename":"CB_AudioFile_API_SM2.js","lineno":698,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{}},"description":"<p>Tells the duration of the audio (in milliseconds). Note that some clients might not calculate the duration correctly and, in this case, a zero (0) value would be returned.</p>","kind":"function","name":"getDuration","returns":[{"type":{"names":["number"]},"description":"<p>Returns the duration of the audio (in milliseconds). Note that some clients might not calculate the duration correctly and, in this case, a zero (0) value would be returned.</p>"}],"memberof":"CB_AudioFile_API.SM2","longname":"CB_AudioFile_API.SM2#getDuration","scope":"instance"},{"comment":"/**\r\n * Plays the audio.\r\n * @function CB_AudioFile_API.SM2#play\r\n * @param {number} [startAt=0 | {@link CB_AudioFile_API.SM2#lastStartAt} | stopAt] - Time in milliseconds where we want the audio to start at. If not provided or it is not a valid number, it will use zero (0) as default which belongs to the beginning of the audio. If the value provided is greater than the \"stopAt\" provided, it will use the value set in the {@link CB_AudioFile_API.SM2#lastStartAt} property (which belongs to the \"startAt\" value the last time that this method was called). If, even using the {@link CB_AudioFile_API.SM2#lastStartAt} value is still greather than the \"stopAt\" provided, it will use the same value as the \"stopAt\" which means it will not play and will stop immediately.\r\n * @param {number} [stopAt={@link CB_AudioFile_API.SM2#getDuration}()] - Time in milliseconds where we want the audio to stop at. If not provided or it is not a valid number, it will use the returning value of the {@link CB_AudioFile_API.SM2#getDuration} method (which should belong to the total duration of the audio, if it was calculated correctly).\r\n * @param {boolean} [loop={@link CB_AudioFile_API.SM2#loop}] - Sets whether we want to play the audio looping (starting again and again) or just play it once. Note that at the end of each loop the \"onStop\" function defined (through the {@link CB_AudioFile_API.SM2#onStop} method) will not be called.\r\n * @param {boolean} [avoidDelayedPlay=false] - If set to false (recommended) and the audio failed previously or was aborted (destroyed), it will try to load it correctly again automatically and play it after that if possible (this can take some time so the audio could start playing after a delay). Otherwise, if set to true and the audio failed or was aborted (destroyed), the audio will not play at all and the \"stop\" method will be called immediately.\r\n * @param {boolean} [allowedRecursiveDelay={@link CB_Configuration.CrossBase.CB_AudioFile_AudioFileCache_ALLOWED_RECURSIVE_DELAY_DEFAULT}] - The maximum amount of time (in milliseconds) of delay that we accept before start playing the audio. If the amount of time is overcome, the audio will not play at all and the {@link CB_AudioFile_API.SM2#stop} method will be called immediately. Used only when the \"avoidDelayedPlay\" parameter is set to false and the audio needs to be loaded because it failed previously or was aborted (destroyed).\r\n * @param {function} [onPlayStart] - Function to be called when the audio starts playing successfully. The function will be called with the following parameters (in order): \"startAt\", \"stopAt\", \"startAtNextLoop\", \"loop\", \"avoidDelayedPlay\", \"allowedRecursiveDelay\" and \"startPlayingTime\", being \"this\" the {@link CB_AudioFile_API.SM2} object. If the audio is looping, this will be called only once when the audio starts playing the first time and it will not be called next loops.\r\n * @param {function} [onLoadError] - Function to be called if the audio cannot be played successfully. The first and unique parameter will be a string describing the error found (if it could be determined), being \"this\" the {@link CB_AudioFile_API.SM2} object.\r\n * @param {boolean} [isResume=false] - If set to true (not recommended) and it is a looping audio, the next loop will use the value of the {@link CB_AudioFile_API.SM2#lastStartAt} property as the \"startAt\" parameter when it calls this method again automatically (internally). Recommended for internal usage only.\r\n * @param {boolean} [isLooping=false] - Used to determine whether this method was called automatically again by itself because it is looping the audio. Recommended for internal usage only.\r\n * @param {integer} [startPlayingTime] - Contains the time when the audio should start playing. Recommended for internal usage only.\r\n * @returns {boolean|integer} It returns false if the duration is 0 (\"startAt\" and \"stopAt\" are the same number), returns \"-1\" if the audio cannot be played and an error is detected or returns true otherwise. Note that even when it returns true there can be a non-detectable error and maybe the audio is not played.\r\n */","meta":{"filename":"CB_AudioFile_API_SM2.js","lineno":772,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{}},"description":"<p>Plays the audio.</p>","kind":"function","name":"play","params":[{"type":{"names":["number"]},"optional":true,"defaultvalue":"0 | {@link CB_AudioFile_API.SM2#lastStartAt} | stopAt","description":"<p>Time in milliseconds where we want the audio to start at. If not provided or it is not a valid number, it will use zero (0) as default which belongs to the beginning of the audio. If the value provided is greater than the &quot;stopAt&quot; provided, it will use the value set in the {@link CB_AudioFile_API.SM2#lastStartAt} property (which belongs to the &quot;startAt&quot; value the last time that this method was called). If, even using the {@link CB_AudioFile_API.SM2#lastStartAt} value is still greather than the &quot;stopAt&quot; provided, it will use the same value as the &quot;stopAt&quot; which means it will not play and will stop immediately.</p>","name":"startAt"},{"type":{"names":["number"]},"optional":true,"defaultvalue":"{@link CB_AudioFile_API.SM2#getDuration}()","description":"<p>Time in milliseconds where we want the audio to stop at. If not provided or it is not a valid number, it will use the returning value of the {@link CB_AudioFile_API.SM2#getDuration} method (which should belong to the total duration of the audio, if it was calculated correctly).</p>","name":"stopAt"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":"{@link CB_AudioFile_API.SM2#loop}","description":"<p>Sets whether we want to play the audio looping (starting again and again) or just play it once. Note that at the end of each loop the &quot;onStop&quot; function defined (through the {@link CB_AudioFile_API.SM2#onStop} method) will not be called.</p>","name":"loop"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If set to false (recommended) and the audio failed previously or was aborted (destroyed), it will try to load it correctly again automatically and play it after that if possible (this can take some time so the audio could start playing after a delay). Otherwise, if set to true and the audio failed or was aborted (destroyed), the audio will not play at all and the &quot;stop&quot; method will be called immediately.</p>","name":"avoidDelayedPlay"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":"{@link CB_Configuration.CrossBase.CB_AudioFile_AudioFileCache_ALLOWED_RECURSIVE_DELAY_DEFAULT}","description":"<p>The maximum amount of time (in milliseconds) of delay that we accept before start playing the audio. If the amount of time is overcome, the audio will not play at all and the {@link CB_AudioFile_API.SM2#stop} method will be called immediately. Used only when the &quot;avoidDelayedPlay&quot; parameter is set to false and the audio needs to be loaded because it failed previously or was aborted (destroyed).</p>","name":"allowedRecursiveDelay"},{"type":{"names":["function"]},"optional":true,"description":"<p>Function to be called when the audio starts playing successfully. The function will be called with the following parameters (in order): &quot;startAt&quot;, &quot;stopAt&quot;, &quot;startAtNextLoop&quot;, &quot;loop&quot;, &quot;avoidDelayedPlay&quot;, &quot;allowedRecursiveDelay&quot; and &quot;startPlayingTime&quot;, being &quot;this&quot; the {@link CB_AudioFile_API.SM2} object. If the audio is looping, this will be called only once when the audio starts playing the first time and it will not be called next loops.</p>","name":"onPlayStart"},{"type":{"names":["function"]},"optional":true,"description":"<p>Function to be called if the audio cannot be played successfully. The first and unique parameter will be a string describing the error found (if it could be determined), being &quot;this&quot; the {@link CB_AudioFile_API.SM2} object.</p>","name":"onLoadError"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If set to true (not recommended) and it is a looping audio, the next loop will use the value of the {@link CB_AudioFile_API.SM2#lastStartAt} property as the &quot;startAt&quot; parameter when it calls this method again automatically (internally). Recommended for internal usage only.</p>","name":"isResume"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>Used to determine whether this method was called automatically again by itself because it is looping the audio. Recommended for internal usage only.</p>","name":"isLooping"},{"type":{"names":["integer"]},"optional":true,"description":"<p>Contains the time when the audio should start playing. Recommended for internal usage only.</p>","name":"startPlayingTime"}],"returns":[{"type":{"names":["boolean","integer"]},"description":"<p>It returns false if the duration is 0 (&quot;startAt&quot; and &quot;stopAt&quot; are the same number), returns &quot;-1&quot; if the audio cannot be played and an error is detected or returns true otherwise. Note that even when it returns true there can be a non-detectable error and maybe the audio is not played.</p>"}],"memberof":"CB_AudioFile_API.SM2","longname":"CB_AudioFile_API.SM2#play","scope":"instance"},{"comment":"/**\r\n * Resumes the audio (after being paused), starting from the same point it was paused previously.\r\n * @function CB_AudioFile_API.SM2#resume\r\n * @param {boolean} [loop={@link CB_AudioFile_API.SM2#loop}] - Sets whether we want to play the audio looping (starting again and again) or just play it once. Note that at the end of each loop the \"onStop\" function defined (through the {@link CB_AudioFile_API.SM2#onStop} method) will not be called.\r\n * @param {boolean} [avoidDelayedPlay=false] - If set to false (recommended) and the audio failed previously or was aborted (destroyed), it will try to load it correctly again automatically and play it after that if possible (this can take some time so the audio could start playing after a delay). Otherwise, if set to true and the audio failed or was aborted (destroyed), the audio will not play at all and the {@link CB_AudioFile_API.SM2#stop} method will be called immediately.\r\n * @param {boolean} [allowedRecursiveDelay={@link CB_Configuration.CrossBase.CB_AudioFile_AudioFileCache_ALLOWED_RECURSIVE_DELAY_DEFAULT}] - The maximum amount of time (in milliseconds) of delay that we accept before start playing the audio. If the amount of time is overcome, the audio will not play at all and the {@link CB_AudioFile_API.SM2#stop} method will be called immediately. Used only when the \"avoidDelayedPlay\" parameter is set to false and the audio needs to be loaded because it failed previously or was aborted (destroyed).\r\n * @param {function} [onPlayStart] - Function to be called when the audio starts playing successfully. The function will be called with the following parameters (in order): \"startAt\", \"stopAt\", \"startAtNextLoop\", \"loop\", \"avoidDelayedPlay\", \"allowedRecursiveDelay\" and \"startPlayingTime\", being \"this\" the {@link CB_AudioFile_API.SM2} object. If the audio is looping, this will be called only once when the audio starts playing the first time and it will not be called next loops.\r\n * @param {function} [onLoadError] - Function to be called if the audio cannot be played successfully. It will not be called if the audio is not paused or is stopped. The first and unique parameter will be a string describing the error found (if it could be determined), being \"this\" the {@link CB_AudioFile_API.SM2} object.\r\n * @returns {boolean|integer} Returns the returning value of the {@link CB_AudioFile_API.SM2#play} method which is called internally. It returns false if the audio is not paused or it is stopped, returns \"-1\" if the audio cannot be played and an error is detected or returns true otherwise. Note that even when it returns true there can be a non-detectable error and maybe the audio is not played.\r\n */","meta":{"filename":"CB_AudioFile_API_SM2.js","lineno":966,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{}},"description":"<p>Resumes the audio (after being paused), starting from the same point it was paused previously.</p>","kind":"function","name":"resume","params":[{"type":{"names":["boolean"]},"optional":true,"defaultvalue":"{@link CB_AudioFile_API.SM2#loop}","description":"<p>Sets whether we want to play the audio looping (starting again and again) or just play it once. Note that at the end of each loop the &quot;onStop&quot; function defined (through the {@link CB_AudioFile_API.SM2#onStop} method) will not be called.</p>","name":"loop"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If set to false (recommended) and the audio failed previously or was aborted (destroyed), it will try to load it correctly again automatically and play it after that if possible (this can take some time so the audio could start playing after a delay). Otherwise, if set to true and the audio failed or was aborted (destroyed), the audio will not play at all and the {@link CB_AudioFile_API.SM2#stop} method will be called immediately.</p>","name":"avoidDelayedPlay"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":"{@link CB_Configuration.CrossBase.CB_AudioFile_AudioFileCache_ALLOWED_RECURSIVE_DELAY_DEFAULT}","description":"<p>The maximum amount of time (in milliseconds) of delay that we accept before start playing the audio. If the amount of time is overcome, the audio will not play at all and the {@link CB_AudioFile_API.SM2#stop} method will be called immediately. Used only when the &quot;avoidDelayedPlay&quot; parameter is set to false and the audio needs to be loaded because it failed previously or was aborted (destroyed).</p>","name":"allowedRecursiveDelay"},{"type":{"names":["function"]},"optional":true,"description":"<p>Function to be called when the audio starts playing successfully. The function will be called with the following parameters (in order): &quot;startAt&quot;, &quot;stopAt&quot;, &quot;startAtNextLoop&quot;, &quot;loop&quot;, &quot;avoidDelayedPlay&quot;, &quot;allowedRecursiveDelay&quot; and &quot;startPlayingTime&quot;, being &quot;this&quot; the {@link CB_AudioFile_API.SM2} object. If the audio is looping, this will be called only once when the audio starts playing the first time and it will not be called next loops.</p>","name":"onPlayStart"},{"type":{"names":["function"]},"optional":true,"description":"<p>Function to be called if the audio cannot be played successfully. It will not be called if the audio is not paused or is stopped. The first and unique parameter will be a string describing the error found (if it could be determined), being &quot;this&quot; the {@link CB_AudioFile_API.SM2} object.</p>","name":"onLoadError"}],"returns":[{"type":{"names":["boolean","integer"]},"description":"<p>Returns the returning value of the {@link CB_AudioFile_API.SM2#play} method which is called internally. It returns false if the audio is not paused or it is stopped, returns &quot;-1&quot; if the audio cannot be played and an error is detected or returns true otherwise. Note that even when it returns true there can be a non-detectable error and maybe the audio is not played.</p>"}],"memberof":"CB_AudioFile_API.SM2","longname":"CB_AudioFile_API.SM2#resume","scope":"instance"},{"comment":"/**\r\n * Pauses the audio when it is being played.\r\n * @function CB_AudioFile_API.SM2#pause\r\n * @param {function} [onPause] - Function without parameters to be called when the audio is paused successfully, being \"this\" the {@link CB_AudioFile_API.SM2} object.\r\n * @param {boolean} [keepPausedUnaltered=false] - If set to true (not recommended), the {@link CB_AudioFile_API.SM2#paused} property will not be set to true and it will remain with its current value.\r\n * @returns {boolean} It returns false if the audio is already paused or it is stopped or if it cannot be paused. Returns true otherwise.\r\n */","meta":{"filename":"CB_AudioFile_API_SM2.js","lineno":995,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{}},"description":"<p>Pauses the audio when it is being played.</p>","kind":"function","name":"pause","params":[{"type":{"names":["function"]},"optional":true,"description":"<p>Function without parameters to be called when the audio is paused successfully, being &quot;this&quot; the {@link CB_AudioFile_API.SM2} object.</p>","name":"onPause"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If set to true (not recommended), the {@link CB_AudioFile_API.SM2#paused} property will not be set to true and it will remain with its current value.</p>","name":"keepPausedUnaltered"}],"returns":[{"type":{"names":["boolean"]},"description":"<p>It returns false if the audio is already paused or it is stopped or if it cannot be paused. Returns true otherwise.</p>"}],"memberof":"CB_AudioFile_API.SM2","longname":"CB_AudioFile_API.SM2#pause","scope":"instance"},{"comment":"/**\r\n * Stops the audio.\r\n * @function CB_AudioFile_API.SM2#stop\r\n * @param {boolean} [keepStoppedUnaltered=false] - If set to true (not recommended), the {@link CB_AudioFile_API.SM2#stopped} property will not be set to true and it will remain with its current value.\r\n * @param {boolean} [avoidOnStop=false] - If set to false and there is an \"onStop\" function defined (through the {@link CB_AudioFile_API.SM2#onStop} method), it will be called after stopping the audio (or after trying to do it, at least) but only if either the \"forceOnStop\" parameter is set to true or if the \"keepStoppedUnaltered\" parameter is set to false and the audio was not already stopped before. If set to true, the \"onStop\" function (if any) will not be called at all.\r\n * @param {boolean} [forceOnStop=false] - If it is set to true and the \"avoidOnStop\" parameter is set to false and there is an \"onStop\" function defined (through the {@link CB_AudioFile_API.SM2#onStop} method), it will be called regardless the audio was stopped before or not. If set to false, the \"onStop\" function (if any) will only be called if the \"keepStoppedUnaltered\" parameter is set to false and the audio was not already stopped before. This parameter will be ignored if the \"avoidOnStop\" parameter is set to true.\r\n * @returns {boolean} It returns false if the stopping action cannot be performed at all (this could happen when the audio has not been loaded properly, for example). Returns true otherwise (this only means that it has been tried to be stopped but it could not be successfully).\r\n */","meta":{"filename":"CB_AudioFile_API_SM2.js","lineno":1036,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{}},"description":"<p>Stops the audio.</p>","kind":"function","name":"stop","params":[{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If set to true (not recommended), the {@link CB_AudioFile_API.SM2#stopped} property will not be set to true and it will remain with its current value.</p>","name":"keepStoppedUnaltered"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If set to false and there is an &quot;onStop&quot; function defined (through the {@link CB_AudioFile_API.SM2#onStop} method), it will be called after stopping the audio (or after trying to do it, at least) but only if either the &quot;forceOnStop&quot; parameter is set to true or if the &quot;keepStoppedUnaltered&quot; parameter is set to false and the audio was not already stopped before. If set to true, the &quot;onStop&quot; function (if any) will not be called at all.</p>","name":"avoidOnStop"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If it is set to true and the &quot;avoidOnStop&quot; parameter is set to false and there is an &quot;onStop&quot; function defined (through the {@link CB_AudioFile_API.SM2#onStop} method), it will be called regardless the audio was stopped before or not. If set to false, the &quot;onStop&quot; function (if any) will only be called if the &quot;keepStoppedUnaltered&quot; parameter is set to false and the audio was not already stopped before. This parameter will be ignored if the &quot;avoidOnStop&quot; parameter is set to true.</p>","name":"forceOnStop"}],"returns":[{"type":{"names":["boolean"]},"description":"<p>It returns false if the stopping action cannot be performed at all (this could happen when the audio has not been loaded properly, for example). Returns true otherwise (this only means that it has been tried to be stopped but it could not be successfully).</p>"}],"memberof":"CB_AudioFile_API.SM2","longname":"CB_AudioFile_API.SM2#stop","scope":"instance"},{"comment":"/**\r\n * Sets the desired volume for the audio file (from 0 to the maximum value, where the maximum value will be the returning value of calling the {@link CB_Speaker.getVolume} function if the {@link CB_Configuration.CrossBase.CB_AudioFile_AudioFileCache_USE_SPEAKER_VOLUME_AS_MAXIMUM} property is set to true or it will be 100 otherwise).\r\n * @function CB_AudioFile_API.SM2#setVolume\r\n * @param {number} [volume={@link CB_Speaker.getVolume()} | {@link CB_Configuration.CrossBase.CB_Speaker_DEFAULT_VOLUME}] - Desired volume (from 0 to the maximum value, where the maximum value will be the returning value of calling the {@link CB_Speaker.getVolume} function if the {@link CB_Configuration.CrossBase.CB_AudioFile_AudioFileCache_USE_SPEAKER_VOLUME_AS_MAXIMUM} property is set to true or it will be 100 otherwise).\r\n * @param {boolean} [forceSetVolumeProperty=false] - If set to true (not recommended), it will change the {@link CB_AudioFile_API.SM2#volume} property even when the volume failed to be changed.\r\n * @param {function} [onSetVolume] - Callback function which will be called if it has been possible to set the volume (or at least it was possible to try it). It will not receive any parameters, being \"this\" the {@link CB_AudioFile_API.SM2} object.\r\n * @param {boolean} [saveForUnmute=false] - If set to true (not recommended), it will save internally the current volume before setting it so it will restore the same volume again after calling the {@link CB_AudioFile_API.SM2#unmute} method. Internal usage only recommended.\r\n * @returns {number} Returns the current volume (from 0 to the maximum value, where the maximum value will be the returning value of calling the {@link CB_Speaker.getVolume} function if the {@link CB_Configuration.CrossBase.CB_AudioFile_AudioFileCache_USE_SPEAKER_VOLUME_AS_MAXIMUM} property is set to true or it will be 100 otherwise).\r\n */","meta":{"filename":"CB_AudioFile_API_SM2.js","lineno":1066,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{}},"description":"<p>Sets the desired volume for the audio file (from 0 to the maximum value, where the maximum value will be the returning value of calling the {@link CB_Speaker.getVolume} function if the {@link CB_Configuration.CrossBase.CB_AudioFile_AudioFileCache_USE_SPEAKER_VOLUME_AS_MAXIMUM} property is set to true or it will be 100 otherwise).</p>","kind":"function","name":"setVolume","params":[{"type":{"names":["number"]},"optional":true,"defaultvalue":"{@link CB_Speaker.getVolume()} | {@link CB_Configuration.CrossBase.CB_Speaker_DEFAULT_VOLUME}","description":"<p>Desired volume (from 0 to the maximum value, where the maximum value will be the returning value of calling the {@link CB_Speaker.getVolume} function if the {@link CB_Configuration.CrossBase.CB_AudioFile_AudioFileCache_USE_SPEAKER_VOLUME_AS_MAXIMUM} property is set to true or it will be 100 otherwise).</p>","name":"volume"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If set to true (not recommended), it will change the {@link CB_AudioFile_API.SM2#volume} property even when the volume failed to be changed.</p>","name":"forceSetVolumeProperty"},{"type":{"names":["function"]},"optional":true,"description":"<p>Callback function which will be called if it has been possible to set the volume (or at least it was possible to try it). It will not receive any parameters, being &quot;this&quot; the {@link CB_AudioFile_API.SM2} object.</p>","name":"onSetVolume"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If set to true (not recommended), it will save internally the current volume before setting it so it will restore the same volume again after calling the {@link CB_AudioFile_API.SM2#unmute} method. Internal usage only recommended.</p>","name":"saveForUnmute"}],"returns":[{"type":{"names":["number"]},"description":"<p>Returns the current volume (from 0 to the maximum value, where the maximum value will be the returning value of calling the {@link CB_Speaker.getVolume} function if the {@link CB_Configuration.CrossBase.CB_AudioFile_AudioFileCache_USE_SPEAKER_VOLUME_AS_MAXIMUM} property is set to true or it will be 100 otherwise).</p>"}],"memberof":"CB_AudioFile_API.SM2","longname":"CB_AudioFile_API.SM2#setVolume","scope":"instance"},{"comment":"/**\r\n * Mutes the audio file.\r\n * @function CB_AudioFile_API.SM2#mute\r\n * @param {function} [onMute] - Callback function which will be called if it has been possible to mute the audio file (or at least it was possible to try it).\r\n * @returns {number} Returns the current volume (from 0 to the maximum value, where the maximum value will be the returning value of calling the {@link CB_Speaker.getVolume} function if the {@link CB_Configuration.CrossBase.CB_AudioFile_AudioFileCache_USE_SPEAKER_VOLUME_AS_MAXIMUM} property is set to true or it will be 100 otherwise). If all goes well, the returning value should be zero (0). Note that, even when it returns a zero (0) value, this does not always mean that the mute has been applied successfully.\r\n */","meta":{"filename":"CB_AudioFile_API_SM2.js","lineno":1104,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{}},"description":"<p>Mutes the audio file.</p>","kind":"function","name":"mute","params":[{"type":{"names":["function"]},"optional":true,"description":"<p>Callback function which will be called if it has been possible to mute the audio file (or at least it was possible to try it).</p>","name":"onMute"}],"returns":[{"type":{"names":["number"]},"description":"<p>Returns the current volume (from 0 to the maximum value, where the maximum value will be the returning value of calling the {@link CB_Speaker.getVolume} function if the {@link CB_Configuration.CrossBase.CB_AudioFile_AudioFileCache_USE_SPEAKER_VOLUME_AS_MAXIMUM} property is set to true or it will be 100 otherwise). If all goes well, the returning value should be zero (0). Note that, even when it returns a zero (0) value, this does not always mean that the mute has been applied successfully.</p>"}],"memberof":"CB_AudioFile_API.SM2","longname":"CB_AudioFile_API.SM2#mute","scope":"instance"},{"comment":"/**\r\n * Restores audio after muting it (unmutes it).\r\n * @function CB_AudioFile_API.SM2#unmute\r\n * @param {function} [onUnmute] - Callback function which will be called if it has been possible to unmute the audio file (or at least it was possible to try it). It will not receive any parameters, being \"this\" the {@link CB_AudioFile_API.SM2} object.\r\n * @returns {number} Returns the current volume (from 0 to the maximum value, where the maximum value will be the returning value of calling the {@link CB_Speaker.getVolume} function if the {@link CB_Configuration.CrossBase.CB_AudioFile_AudioFileCache_USE_SPEAKER_VOLUME_AS_MAXIMUM} property is set to true or it will be 100 otherwise).\r\n */","meta":{"filename":"CB_AudioFile_API_SM2.js","lineno":1122,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{}},"description":"<p>Restores audio after muting it (unmutes it).</p>","kind":"function","name":"unmute","params":[{"type":{"names":["function"]},"optional":true,"description":"<p>Callback function which will be called if it has been possible to unmute the audio file (or at least it was possible to try it). It will not receive any parameters, being &quot;this&quot; the {@link CB_AudioFile_API.SM2} object.</p>","name":"onUnmute"}],"returns":[{"type":{"names":["number"]},"description":"<p>Returns the current volume (from 0 to the maximum value, where the maximum value will be the returning value of calling the {@link CB_Speaker.getVolume} function if the {@link CB_Configuration.CrossBase.CB_AudioFile_AudioFileCache_USE_SPEAKER_VOLUME_AS_MAXIMUM} property is set to true or it will be 100 otherwise).</p>"}],"memberof":"CB_AudioFile_API.SM2","longname":"CB_AudioFile_API.SM2#unmute","scope":"instance"},{"comment":"/**\r\n * Gets the current time (in milliseconds) which belongs to the position where the audio is currently playing or where it has been paused. Note that some audio APIs and clients could give wrong values.\r\n * @function CB_AudioFile_API.SM2#getCurrentTime\r\n * @returns {number} Returns the current time (in milliseconds). Note that some audio APIs and clients could give wrong values.\r\n */","meta":{"filename":"CB_AudioFile_API_SM2.js","lineno":1140,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{}},"description":"<p>Gets the current time (in milliseconds) which belongs to the position where the audio is currently playing or where it has been paused. Note that some audio APIs and clients could give wrong values.</p>","kind":"function","name":"getCurrentTime","returns":[{"type":{"names":["number"]},"description":"<p>Returns the current time (in milliseconds). Note that some audio APIs and clients could give wrong values.</p>"}],"memberof":"CB_AudioFile_API.SM2","longname":"CB_AudioFile_API.SM2#getCurrentTime","scope":"instance"},{"comment":"/**\r\n * Sets a function to execute when the audio file stops playing or removes it.\r\n * @function CB_AudioFile_API.SM2#onStop\r\n * @param {function|null} callbackFunction - The function (event listener) that we want to execute when the event is fired. No parameters will be received, being \"this\" the {@link CB_AudioFile_API.SM2} object. If a null value is used, the event will be removed.\r\n * @param {boolean} [keepOldFunction=true] - Defines whether we want to keep any possible previous event listener or not.\r\n * @returns {boolean} Returns whether the event has been set or not (removed).\r\n */","meta":{"filename":"CB_AudioFile_API_SM2.js","lineno":1196,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{}},"description":"<p>Sets a function to execute when the audio file stops playing or removes it.</p>","kind":"function","name":"onStop","params":[{"type":{"names":["function","null"]},"description":"<p>The function (event listener) that we want to execute when the event is fired. No parameters will be received, being &quot;this&quot; the {@link CB_AudioFile_API.SM2} object. If a null value is used, the event will be removed.</p>","name":"callbackFunction"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":true,"description":"<p>Defines whether we want to keep any possible previous event listener or not.</p>","name":"keepOldFunction"}],"returns":[{"type":{"names":["boolean"]},"description":"<p>Returns whether the event has been set or not (removed).</p>"}],"memberof":"CB_AudioFile_API.SM2","longname":"CB_AudioFile_API.SM2#onStop","scope":"instance"},{"comment":"/**\r\n * Returns a number representing the percentage of the loading progress for the audio file (from 0 to 100, being 100 a complete loading progress). The way to calculate it internally may differ from one audio API to another and it is not totally reliable.\r\n * @function CB_AudioFile_API.SM2#getProgress\r\n * @returns {number} Returns a number representing the percentage of the loading progress for the audio file (from 0 to 100, being 100 a complete loading progress). The way to calculate it internally may differ from one audio API to another and it is not totally reliable.\r\n */","meta":{"filename":"CB_AudioFile_API_SM2.js","lineno":1233,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{}},"description":"<p>Returns a number representing the percentage of the loading progress for the audio file (from 0 to 100, being 100 a complete loading progress). The way to calculate it internally may differ from one audio API to another and it is not totally reliable.</p>","kind":"function","name":"getProgress","returns":[{"type":{"names":["number"]},"description":"<p>Returns a number representing the percentage of the loading progress for the audio file (from 0 to 100, being 100 a complete loading progress). The way to calculate it internally may differ from one audio API to another and it is not totally reliable.</p>"}],"memberof":"CB_AudioFile_API.SM2","longname":"CB_AudioFile_API.SM2#getProgress","scope":"instance"},{"comment":"/**\r\n * @file Audio files management using \"WAAPI\" ([HTML5 Web Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API}). Contains the {@link CB_AudioFile_API.WAAPI} class.\r\n * @author Joan Alba Maldonado <workindalian@gmail.com>\r\n */","meta":{"filename":"CB_AudioFile_API_WAAPI.js","lineno":1,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{}},"name":"CrossBase/audiovisual/audio/CB_AudioFile_API_WAAPI.js","kind":"file","description":"<p>Audio files management using &quot;WAAPI&quot; ([HTML5 Web Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API}). Contains the {@link CB_AudioFile_API.WAAPI} class.</p>","preserveName":true,"author":["Joan Alba Maldonado <workindalian@gmail.com>"],"longname":"CrossBase/audiovisual/audio/CB_AudioFile_API_WAAPI.js","scope":"global"},{"comment":"/**\r\n * The constructor is recommended to be called through a user-driven event (as onClick, onTouch, etc.) if the \"autoPlay\" option is set to true, as some web clients may need this at least the first time in order to be able to play the audio.\r\n * @class CB_AudioFile_API.WAAPI\r\n * @memberof! <global>\r\n * @classdesc Class to manage an audio file using \"WAAPI\" ([HTML5 Web Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API}). Used by the {@link CB_AudioFile} class internally and it shares most of its properties and methods. Recommended for internal usage only. Uses [Base64Binary]{@link https://gist.github.com/htchaan/108b7aa6b71eb03e38019e64450ea095} internally. Some old clients can use this audio API thanks to [AudioContext-MonkeyPatch]{@link https://github.com/cwilso/AudioContext-MonkeyPatch} and [WAAPISim]{@link https://github.com/g200kg/WAAPISim}.\r\n * @param {string} filePath - The path of the audio file or a data URI. NOTE: Only some clients with some audio APIs will support data URIs.\r\n * @param {string} [audioId='CB_AUDIOFILE_WAAPI_' + CB_AudioFile_API.WAAPI._idUnique++] - Desired identifier for the audio object. If not provided, an automatic unique ID will be calculated. Note that it is not case sensitive and it should be unique for each object.\r\n * @param {CB_AudioFile_API.WAAPI.OPTIONS} [options=CB_AudioFile_API.WAAPI#DEFAULT_OPTIONS] - Object with the desired options.\r\n * @param {function} [callbackOk] - Function with no parameters to be called when the audio has been loaded successfully, being \"this\" the {@link CB_AudioFile_API.WAAPI} object itself.\r\n * @param {function} [callbackError] - Function to be called if the audio has not been loaded successfully. The first and unique parameter will be a string describing the error found (if could be determined), being \"this\" the {@link CB_AudioFile_API.WAAPI} object itself.\r\n * @returns {CB_AudioFile_API.WAAPI} Returns a new {@link CB_AudioFile_API.WAAPI} object.\r\n * @todo Do not allow to create one object with an \"id\" which has already been used (unless the value is undefined, null...). Note that the \"id\" is not case sensitive and it should be unique for each object.\r\n * @todo Method getCopy and static method filterProperties (similar to the ones from {@link CB_GraphicSprites} and {@link CB_GraphicSpritesScene}).\r\n */","meta":{"filename":"CB_AudioFile_API_WAAPI.js","lineno":21,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{}},"description":"<p>The constructor is recommended to be called through a user-driven event (as onClick, onTouch, etc.) if the &quot;autoPlay&quot; option is set to true, as some web clients may need this at least the first time in order to be able to play the audio.</p>","kind":"class","name":"CB_AudioFile_API.WAAPI","forceMemberof":true,"scope":"global","classdesc":"<p>Class to manage an audio file using &quot;WAAPI&quot; ([HTML5 Web Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API}). Used by the {@link CB_AudioFile} class internally and it shares most of its properties and methods. Recommended for internal usage only. Uses [Base64Binary]{@link https://gist.github.com/htchaan/108b7aa6b71eb03e38019e64450ea095} internally. Some old clients can use this audio API thanks to [AudioContext-MonkeyPatch]{@link https://github.com/cwilso/AudioContext-MonkeyPatch} and [WAAPISim]{@link https://github.com/g200kg/WAAPISim}.</p>","params":[{"type":{"names":["string"]},"description":"<p>The path of the audio file or a data URI. NOTE: Only some clients with some audio APIs will support data URIs.</p>","name":"filePath"},{"type":{"names":["string"]},"optional":true,"defaultvalue":"'CB_AUDIOFILE_WAAPI_' + CB_AudioFile_API.WAAPI._idUnique++","description":"<p>Desired identifier for the audio object. If not provided, an automatic unique ID will be calculated. Note that it is not case sensitive and it should be unique for each object.</p>","name":"audioId"},{"type":{"names":["CB_AudioFile_API.WAAPI.OPTIONS"]},"optional":true,"defaultvalue":"CB_AudioFile_API.WAAPI#DEFAULT_OPTIONS","description":"<p>Object with the desired options.</p>","name":"options"},{"type":{"names":["function"]},"optional":true,"description":"<p>Function with no parameters to be called when the audio has been loaded successfully, being &quot;this&quot; the {@link CB_AudioFile_API.WAAPI} object itself.</p>","name":"callbackOk"},{"type":{"names":["function"]},"optional":true,"description":"<p>Function to be called if the audio has not been loaded successfully. The first and unique parameter will be a string describing the error found (if could be determined), being &quot;this&quot; the {@link CB_AudioFile_API.WAAPI} object itself.</p>","name":"callbackError"}],"returns":[{"type":{"names":["CB_AudioFile_API.WAAPI"]},"description":"<p>Returns a new {@link CB_AudioFile_API.WAAPI} object.</p>"}],"todo":["Do not allow to create one object with an \"id\" which has already been used (unless the value is undefined, null...). Note that the \"id\" is not case sensitive and it should be unique for each object.","Method getCopy and static method filterProperties (similar to the ones from {@link CB_GraphicSprites} and {@link CB_GraphicSpritesScene})."],"longname":"CB_AudioFile_API.WAAPI"},{"comment":"/**\r\n\t * Keeps the default volume. If the {@link CB_Configuration.CrossBase.CB_AudioFile_AudioFileCache_USE_SPEAKER_VOLUME_AS_DEFAULT} property is true, this will keep the result of calling the {@link CB_Speaker.getVolume} function. Otherwise, it will use the value of the {@link CB_Configuration.CrossBase.CB_Speaker_DEFAULT_VOLUME} variable.\r\n\t *\t@constant CB_AudioFile_API.WAAPI#DEFAULT_VOLUME\r\n\t * @type {number}\r\n\t * @default CB_Configuration.CrossBase.CB_AudioFile_AudioFileCache_USE_SPEAKER_VOLUME_AS_DEFAULT ? CB_Speaker.getVolume() : CB_Configuration.CrossBase.CB_Speaker_DEFAULT_VOLUME\r\n\t */","meta":{"filename":"CB_AudioFile_API_WAAPI.js","lineno":41,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{}},"description":"<p>Keeps the default volume. If the {@link CB_Configuration.CrossBase.CB_AudioFile_AudioFileCache_USE_SPEAKER_VOLUME_AS_DEFAULT} property is true, this will keep the result of calling the {@link CB_Speaker.getVolume} function. Otherwise, it will use the value of the {@link CB_Configuration.CrossBase.CB_Speaker_DEFAULT_VOLUME} variable.</p>","kind":"constant","name":"DEFAULT_VOLUME","type":{"names":["number"]},"defaultvalue":"CB_Configuration.CrossBase.CB_AudioFile_AudioFileCache_USE_SPEAKER_VOLUME_AS_DEFAULT ? CB_Speaker.getVolume() : CB_Configuration.CrossBase.CB_Speaker_DEFAULT_VOLUME","memberof":"CB_AudioFile_API.WAAPI","longname":"CB_AudioFile_API.WAAPI#DEFAULT_VOLUME","scope":"instance"},{"comment":"/**\r\n\t * Keeps the default options when an object is created. Format: { autoLoad: boolean, autoPlay: boolean, loop: boolean, volume: number }.\r\n\t *\t@constant CB_AudioFile_API.WAAPI#DEFAULT_OPTIONS\r\n\t * @type {CB_AudioFile_API.WAAPI.OPTIONS}\r\n\t * @default { autoLoad: true, autoPlay: false, loop: false, volume: [CB_AudioFile_API.WAAPI.prototype.DEFAULT_VOLUME]{@link CB_AudioFile_API.WAAPI#DEFAULT_VOLUME} }\r\n\t */","meta":{"filename":"CB_AudioFile_API_WAAPI.js","lineno":49,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{}},"description":"<p>Keeps the default options when an object is created. Format: { autoLoad: boolean, autoPlay: boolean, loop: boolean, volume: number }.</p>","kind":"constant","name":"DEFAULT_OPTIONS","type":{"names":["CB_AudioFile_API.WAAPI.OPTIONS"]},"defaultvalue":"{ autoLoad: true, autoPlay: false, loop: false, volume: [CB_AudioFile_API.WAAPI.prototype.DEFAULT_VOLUME]{@link CB_AudioFile_API.WAAPI#DEFAULT_VOLUME} }","memberof":"CB_AudioFile_API.WAAPI","longname":"CB_AudioFile_API.WAAPI#DEFAULT_OPTIONS","scope":"instance"},{"comment":"/**\r\n * Object with the options for an audio file. The format is the following one: { autoLoad: boolean, autoPlay: boolean, loop: boolean, volume: number }.\r\n * @memberof CB_AudioFile_API.WAAPI\r\n * @typedef {Object} CB_AudioFile_API.WAAPI.OPTIONS\r\n * @property {boolean} [autoLoad={@link CB_AudioFile_API.WAAPI#DEFAULT_OPTIONS}.autoLoad] - If set to false, it will not call the {@link CB_AudioFile_API.WAAPI#load} method internally when the constructor is called (not recommended).\r\n * @property {boolean} [autoPlay={@link CB_AudioFile_API.WAAPI#DEFAULT_OPTIONS}.autoPlay] - Value which will be used as the \"autoPlay\" parameter when calling the {@link CB_AudioFile_API.WAAPI#load} method internally, only when the \"autoLoad\" is set to true (when the constructor is called).\r\n * @property {boolean} [loop={@link CB_AudioFile_API.WAAPI#DEFAULT_OPTIONS}.loop] - Value that will be used for the {@link CB_AudioFile_API.WAAPI#loop} property.\r\n * @property {number} [volume={@link CB_AudioFile_API.WAAPI#DEFAULT_OPTIONS}.volume] - The desired volume (from 0 to the maximum value, where the maximum value will be the returning value of calling the {@link CB_Speaker.getVolume} function if the {@link CB_Configuration.CrossBase.CB_AudioFile_AudioFileCache_USE_SPEAKER_VOLUME_AS_MAXIMUM} property is set to true or it will be 100 otherwise) that will be used for the {@link CB_AudioFile_API.WAAPI#volume} property.\r\n */","meta":{"filename":"CB_AudioFile_API_WAAPI.js","lineno":223,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{}},"description":"<p>Object with the options for an audio file. The format is the following one: { autoLoad: boolean, autoPlay: boolean, loop: boolean, volume: number }.</p>","memberof":"CB_AudioFile_API.WAAPI","kind":"typedef","name":"OPTIONS","type":{"names":["Object"]},"properties":[{"type":{"names":["boolean"]},"optional":true,"defaultvalue":"{@link CB_AudioFile_API.WAAPI#DEFAULT_OPTIONS}.autoLoad","description":"<p>If set to false, it will not call the {@link CB_AudioFile_API.WAAPI#load} method internally when the constructor is called (not recommended).</p>","name":"autoLoad"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":"{@link CB_AudioFile_API.WAAPI#DEFAULT_OPTIONS}.autoPlay","description":"<p>Value which will be used as the &quot;autoPlay&quot; parameter when calling the {@link CB_AudioFile_API.WAAPI#load} method internally, only when the &quot;autoLoad&quot; is set to true (when the constructor is called).</p>","name":"autoPlay"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":"{@link CB_AudioFile_API.WAAPI#DEFAULT_OPTIONS}.loop","description":"<p>Value that will be used for the {@link CB_AudioFile_API.WAAPI#loop} property.</p>","name":"loop"},{"type":{"names":["number"]},"optional":true,"defaultvalue":"{@link CB_AudioFile_API.WAAPI#DEFAULT_OPTIONS}.volume","description":"<p>The desired volume (from 0 to the maximum value, where the maximum value will be the returning value of calling the {@link CB_Speaker.getVolume} function if the {@link CB_Configuration.CrossBase.CB_AudioFile_AudioFileCache_USE_SPEAKER_VOLUME_AS_MAXIMUM} property is set to true or it will be 100 otherwise) that will be used for the {@link CB_AudioFile_API.WAAPI#volume} property.</p>","name":"volume"}],"longname":"CB_AudioFile_API.WAAPI.OPTIONS","scope":"static"},{"comment":"/**\r\n * Destroys the audio file object and frees memory. Sets its current {@link CB_AudioFile_API.WAAPI#status} property to ABORTED ({@link CB_AudioFile.ABORTED} value).\r\n * @function CB_AudioFile_API.WAAPI#destructor\r\n * @param {boolean} [stopSound=false] - If set to true, it will also call the {@link CB_AudioFile_API.WAAPI#stop} method.\r\n * @param {boolean} [keepStoppedUnaltered=false] - Used internally as the \"keepStoppedUnaltered\" parameter to call the {@link CB_AudioFile_API.WAAPI#stop} method. If the \"stopSound\" parameter is not set to true, this parameter will be ignored as the \"stop\" method will not be called.\r\n * @param {boolean} [avoidOnStop=false] - Used internally as the \"avoidOnStop\" parameter to call the {@link CB_AudioFile_API.WAAPI#stop} method. If the \"stopSound\" parameter is not set to true, this parameter will be ignored as the \"stop\" method will not be called.\r\n * @param {boolean} [forceOnStop=false] - Used internally as the \"forceOnStop\" parameter to call the {@link CB_AudioFile_API.WAAPI#stop} method. If the \"stopSound\" parameter is not set to true, this parameter will be ignored as the \"stop\" method will not be called.\r\n */","meta":{"filename":"CB_AudioFile_API_WAAPI.js","lineno":288,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{}},"description":"<p>Destroys the audio file object and frees memory. Sets its current {@link CB_AudioFile_API.WAAPI#status} property to ABORTED ({@link CB_AudioFile.ABORTED} value).</p>","kind":"function","name":"destructor","params":[{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If set to true, it will also call the {@link CB_AudioFile_API.WAAPI#stop} method.</p>","name":"stopSound"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>Used internally as the &quot;keepStoppedUnaltered&quot; parameter to call the {@link CB_AudioFile_API.WAAPI#stop} method. If the &quot;stopSound&quot; parameter is not set to true, this parameter will be ignored as the &quot;stop&quot; method will not be called.</p>","name":"keepStoppedUnaltered"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>Used internally as the &quot;avoidOnStop&quot; parameter to call the {@link CB_AudioFile_API.WAAPI#stop} method. If the &quot;stopSound&quot; parameter is not set to true, this parameter will be ignored as the &quot;stop&quot; method will not be called.</p>","name":"avoidOnStop"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>Used internally as the &quot;forceOnStop&quot; parameter to call the {@link CB_AudioFile_API.WAAPI#stop} method. If the &quot;stopSound&quot; parameter is not set to true, this parameter will be ignored as the &quot;stop&quot; method will not be called.</p>","name":"forceOnStop"}],"memberof":"CB_AudioFile_API.WAAPI","longname":"CB_AudioFile_API.WAAPI#destructor","scope":"instance"},{"comment":"/**\r\n * Loads the desired audio file with the desired options. Recommended to be called through a user-driven event (as onClick, onTouch, etc.), as some web clients may need this at least the first time in order to be able to play the audio. Uses [Base64Binary]{@link https://gist.github.com/htchaan/108b7aa6b71eb03e38019e64450ea095} internally. This method will be called automatically by the constructor if the \"autoLoad\" option was set to true in its given \"options\" parameter.\r\n * When this method is called, if the {@link CB_AudioFile_API.WAAPI#status} property already has the \"LOADED\" status (defined in the {@link CB_AudioFile.LOADED} constant) and the \"forceReload\" parameter is not set to true, it will exit calling the given \"callbackOk\" function (if any) immediately. Otherwise, regardless the status, the status will be set to \"LOADING\" (defined in the {@link CB_AudioFile.LOADING} constant). After it, it will reach the \"UNCHECKED\" (defined in the {@link CB_AudioFile.UNCHECKED} constant). If the \"autoPlay\" parameter is not set to true, this will be the final status (and it will be necessary to call the {@link CB_AudioFile_API.WAAPI#checkPlaying} method after it). After it and only if the \"autoPlay\" is set to true, as the {@link CB_AudioFile_API.WAAPI#checkPlaying} method will be called internally, it will have the \"CHECKING\" status (defined in the {@link CB_AudioFile.CHECKING} constant) and finally the \"LOADED\" status (defined in the {@link CB_AudioFile.LOADED} constant) if all goes well.\r\n * @function CB_AudioFile_API.WAAPI#load\r\n * @param {string} [filePath={@link CB_AudioFile_API.WAAPI#filePath}] - The path of the audio file or a data URI. NOTE: Only some clients with some audio APIs will support data URIs.\r\n * @param {string} [autoPlay=false] - If set to true, it will start playing the audio automatically (by calling the {@link CB_AudioFile_API.WAAPI#play} method internally). If set to true and the {@link CB_AudioFile_API.WAAPI#status} property reaches the \"UNCHECKED\" status (defined in the {@link CB_AudioFile.UNCHECKED} constant), it will also call internally the {@link CB_AudioFile_API.WAAPI#checkPlaying} method.\r\n * @param {function} [callbackOk] - Function with no parameters to be called when the audio has been loaded successfully, being \"this\" the {@link CB_AudioFile_API.WAAPI} object itself.\r\n * @param {function} [callbackError] - Function to be called if the audio has not been loaded successfully. The first and unique parameter will be a string describing the error found (if it could be determined), being \"this\" the {@link CB_AudioFile_API.WAAPI} object itself.\r\n * @param {boolean} [forceReload=false] - If set to false, the \"filePath\" has not been changed from the previously used and the {@link CB_AudioFile_API.WAAPI#status} property belongs to the \"LOADED\" status (defined in the {@link CB_AudioFile.LOADED} constant), it will exit the method without loading the audio file again (calling the \"callbackOk\" function, if any).\r\n * @param {boolean} [useXHR=[CB_AudioFile_API.WAAPI#DEFAULT_OPTIONS]{@link CB_AudioFile_API.WAAPI#DEFAULT_OPTIONS}.useXHR] - Defines whether to use or not [XHR]{@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/XMLHttpRequest} ([AJAX]{@link https://en.wikipedia.org/wiki/Ajax_(programming)}) to load the audio file.\r\n * @param {boolean} [useCache=[CB_AudioFile_API.WAAPI#DEFAULT_OPTIONS]{@link CB_AudioFile_API.WAAPI#DEFAULT_OPTIONS}.useCache] - Defines whether to try to use or not a cache for performance purposes. If set to true and the audio file was loaded before, it will try to use the cache (if possible) to accelerate the loading process.\r\n * @returns {CB_AudioFile_API.WAAPI|null} Returns the audio API object (if it was possible to create) or null otherwise.\r\n */","meta":{"filename":"CB_AudioFile_API_WAAPI.js","lineno":355,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{}},"description":"<p>Loads the desired audio file with the desired options. Recommended to be called through a user-driven event (as onClick, onTouch, etc.), as some web clients may need this at least the first time in order to be able to play the audio. Uses [Base64Binary]{@link https://gist.github.com/htchaan/108b7aa6b71eb03e38019e64450ea095} internally. This method will be called automatically by the constructor if the &quot;autoLoad&quot; option was set to true in its given &quot;options&quot; parameter.<br>When this method is called, if the {@link CB_AudioFile_API.WAAPI#status} property already has the &quot;LOADED&quot; status (defined in the {@link CB_AudioFile.LOADED} constant) and the &quot;forceReload&quot; parameter is not set to true, it will exit calling the given &quot;callbackOk&quot; function (if any) immediately. Otherwise, regardless the status, the status will be set to &quot;LOADING&quot; (defined in the {@link CB_AudioFile.LOADING} constant). After it, it will reach the &quot;UNCHECKED&quot; (defined in the {@link CB_AudioFile.UNCHECKED} constant). If the &quot;autoPlay&quot; parameter is not set to true, this will be the final status (and it will be necessary to call the {@link CB_AudioFile_API.WAAPI#checkPlaying} method after it). After it and only if the &quot;autoPlay&quot; is set to true, as the {@link CB_AudioFile_API.WAAPI#checkPlaying} method will be called internally, it will have the &quot;CHECKING&quot; status (defined in the {@link CB_AudioFile.CHECKING} constant) and finally the &quot;LOADED&quot; status (defined in the {@link CB_AudioFile.LOADED} constant) if all goes well.</p>","kind":"function","name":"load","params":[{"type":{"names":["string"]},"optional":true,"defaultvalue":"{@link CB_AudioFile_API.WAAPI#filePath}","description":"<p>The path of the audio file or a data URI. NOTE: Only some clients with some audio APIs will support data URIs.</p>","name":"filePath"},{"type":{"names":["string"]},"optional":true,"defaultvalue":false,"description":"<p>If set to true, it will start playing the audio automatically (by calling the {@link CB_AudioFile_API.WAAPI#play} method internally). If set to true and the {@link CB_AudioFile_API.WAAPI#status} property reaches the &quot;UNCHECKED&quot; status (defined in the {@link CB_AudioFile.UNCHECKED} constant), it will also call internally the {@link CB_AudioFile_API.WAAPI#checkPlaying} method.</p>","name":"autoPlay"},{"type":{"names":["function"]},"optional":true,"description":"<p>Function with no parameters to be called when the audio has been loaded successfully, being &quot;this&quot; the {@link CB_AudioFile_API.WAAPI} object itself.</p>","name":"callbackOk"},{"type":{"names":["function"]},"optional":true,"description":"<p>Function to be called if the audio has not been loaded successfully. The first and unique parameter will be a string describing the error found (if it could be determined), being &quot;this&quot; the {@link CB_AudioFile_API.WAAPI} object itself.</p>","name":"callbackError"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If set to false, the &quot;filePath&quot; has not been changed from the previously used and the {@link CB_AudioFile_API.WAAPI#status} property belongs to the &quot;LOADED&quot; status (defined in the {@link CB_AudioFile.LOADED} constant), it will exit the method without loading the audio file again (calling the &quot;callbackOk&quot; function, if any).</p>","name":"forceReload"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":"[CB_AudioFile_API.WAAPI#DEFAULT_OPTIONS]{@link CB_AudioFile_API.WAAPI#DEFAULT_OPTIONS}.useXHR","description":"<p>Defines whether to use or not [XHR]{@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/XMLHttpRequest} ([AJAX]{@link https://en.wikipedia.org/wiki/Ajax_(programming)}) to load the audio file.</p>","name":"useXHR"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":"[CB_AudioFile_API.WAAPI#DEFAULT_OPTIONS]{@link CB_AudioFile_API.WAAPI#DEFAULT_OPTIONS}.useCache","description":"<p>Defines whether to try to use or not a cache for performance purposes. If set to true and the audio file was loaded before, it will try to use the cache (if possible) to accelerate the loading process.</p>","name":"useCache"}],"returns":[{"type":{"names":["CB_AudioFile_API.WAAPI","null"]},"description":"<p>Returns the audio API object (if it was possible to create) or null otherwise.</p>"}],"memberof":"CB_AudioFile_API.WAAPI","longname":"CB_AudioFile_API.WAAPI#load","scope":"instance"},{"comment":"/**\r\n * Decodes binary audio data given. Internal usage only recommended.\r\n * @function CB_AudioFile_API.WAAPI#decodeAudioData\r\n * @param {ArrayBuffer} binaryData - [ArrayBuffer]{@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer} with the audio data to be decoded.\r\n * @param {function} [callbackOk] - Function with no parameters to be called when the audio data has been decoded successfully, being \"this\" the {@link CB_AudioFile_API.WAAPI} object itself.\r\n * @param {function} [callbackError] - Function to be called if the audio data has not been decoded successfully. The first and unique parameter will be a string describing the error found (if it could be determined), being \"this\" the {@link CB_AudioFile_API.WAAPI} object itself.\r\n * @returns {undefined|Promise} Returns the returning value of calling the [BaseAudioContext.decodeAudioData]{@link https://developer.mozilla.org/en-US/docs/Web/API/BaseAudioContext/decodeAudioData} function, which returns void (undefined) or a [Promise]{@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise} (whose methods \"then\" and \"catch\" will have already been used internally by this function).\r\n */","meta":{"filename":"CB_AudioFile_API_WAAPI.js","lineno":665,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{}},"description":"<p>Decodes binary audio data given. Internal usage only recommended.</p>","kind":"function","name":"decodeAudioData","params":[{"type":{"names":["ArrayBuffer"]},"description":"<p>[ArrayBuffer]{@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer} with the audio data to be decoded.</p>","name":"binaryData"},{"type":{"names":["function"]},"optional":true,"description":"<p>Function with no parameters to be called when the audio data has been decoded successfully, being &quot;this&quot; the {@link CB_AudioFile_API.WAAPI} object itself.</p>","name":"callbackOk"},{"type":{"names":["function"]},"optional":true,"description":"<p>Function to be called if the audio data has not been decoded successfully. The first and unique parameter will be a string describing the error found (if it could be determined), being &quot;this&quot; the {@link CB_AudioFile_API.WAAPI} object itself.</p>","name":"callbackError"}],"returns":[{"type":{"names":["undefined","Promise"]},"description":"<p>Returns the returning value of calling the [BaseAudioContext.decodeAudioData]{@link https://developer.mozilla.org/en-US/docs/Web/API/BaseAudioContext/decodeAudioData} function, which returns void (undefined) or a [Promise]{@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise} (whose methods &quot;then&quot; and &quot;catch&quot; will have already been used internally by this function).</p>"}],"memberof":"CB_AudioFile_API.WAAPI","longname":"CB_AudioFile_API.WAAPI#decodeAudioData","scope":"instance"},{"comment":"/**\r\n * Checks whether the audio can be played or not. Recommended to be called through a user-driven event (as onClick, onTouch, etc.), as some web clients may need this at least the first time in order to be able to play the audio. Also recommended to use before calling the {@link CB_AudioFile_API.WAAPI#play} method the first time. The checking action will only be performed if the value of the {@link CB_AudioFile_API.WAAPI#status} property belongs to the {@link CB_AudioFile.UNCHECKED} or to the {@link CB_AudioFile.CHECKING} value. After checking, if the audio can be played, the {@link CB_AudioFile_API.WAAPI#status} of the object will get the value of {@link CB_AudioFile.LOADED}. Otherwise, if it cannot be played, the {@link CB_AudioFile_API.WAAPI#status} property will get the value of {CB_AudioFile.FAILED}.\r\n * @function CB_AudioFile_API.WAAPI#checkPlaying\r\n * @param {function} [callbackOk] - Function with no parameters to be called when the audio has been checked successfully, being \"this\" the {@link CB_AudioFile_API.WAAPI} object itself.\r\n * @param {function} [callbackError] - Function to be called if the audio has not been checked successfully. The first and unique parameter will be a string describing the error found (if it could be determined), being \"this\" the {@link CB_AudioFile_API.WAAPI} object itself.\r\n * @param {boolean} [ignoreStatus=false] - If set to false and the {@link CB_AudioFile_API.WAAPI#status} property does not belong neither to the \"UNCHECKED\" status (defined in the {@link CB_AudioFile.UNCHECKED} constant) nor to the \"CHECKING\" status (defined in the {@link CB_AudioFile.CHECKING} constant), it will fail calling the \"callbackError\" function (if any). If set to true, it will try to perform the checking action regardless the status of the audio.\r\n * @param {boolean} [ignoreQueue=false] - If set to false and there is already the maximum number of audio files being checked (defined internally), the function will exit and it will call itself automatically again and again until the checking process can be performed (when its queue turn has been reached). This is done for performance purposes.\r\n * @param {boolean} [useCache=false] - If set to true (not recommended) and the same audio file was checked previously, it will not perform the checking process again and it will do the same as the previous call.\r\n * @returns {boolean} Returns false if the checking could not be performed and failed. If it returns true, it can mean either the checking has been processed successfully or it will fail in the future, so it is recommended to ignore the returning value and use the callback functions instead.\r\n */","meta":{"filename":"CB_AudioFile_API_WAAPI.js","lineno":720,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{}},"description":"<p>Checks whether the audio can be played or not. Recommended to be called through a user-driven event (as onClick, onTouch, etc.), as some web clients may need this at least the first time in order to be able to play the audio. Also recommended to use before calling the {@link CB_AudioFile_API.WAAPI#play} method the first time. The checking action will only be performed if the value of the {@link CB_AudioFile_API.WAAPI#status} property belongs to the {@link CB_AudioFile.UNCHECKED} or to the {@link CB_AudioFile.CHECKING} value. After checking, if the audio can be played, the {@link CB_AudioFile_API.WAAPI#status} of the object will get the value of {@link CB_AudioFile.LOADED}. Otherwise, if it cannot be played, the {@link CB_AudioFile_API.WAAPI#status} property will get the value of {CB_AudioFile.FAILED}.</p>","kind":"function","name":"checkPlaying","params":[{"type":{"names":["function"]},"optional":true,"description":"<p>Function with no parameters to be called when the audio has been checked successfully, being &quot;this&quot; the {@link CB_AudioFile_API.WAAPI} object itself.</p>","name":"callbackOk"},{"type":{"names":["function"]},"optional":true,"description":"<p>Function to be called if the audio has not been checked successfully. The first and unique parameter will be a string describing the error found (if it could be determined), being &quot;this&quot; the {@link CB_AudioFile_API.WAAPI} object itself.</p>","name":"callbackError"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If set to false and the {@link CB_AudioFile_API.WAAPI#status} property does not belong neither to the &quot;UNCHECKED&quot; status (defined in the {@link CB_AudioFile.UNCHECKED} constant) nor to the &quot;CHECKING&quot; status (defined in the {@link CB_AudioFile.CHECKING} constant), it will fail calling the &quot;callbackError&quot; function (if any). If set to true, it will try to perform the checking action regardless the status of the audio.</p>","name":"ignoreStatus"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If set to false and there is already the maximum number of audio files being checked (defined internally), the function will exit and it will call itself automatically again and again until the checking process can be performed (when its queue turn has been reached). This is done for performance purposes.</p>","name":"ignoreQueue"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If set to true (not recommended) and the same audio file was checked previously, it will not perform the checking process again and it will do the same as the previous call.</p>","name":"useCache"}],"returns":[{"type":{"names":["boolean"]},"description":"<p>Returns false if the checking could not be performed and failed. If it returns true, it can mean either the checking has been processed successfully or it will fail in the future, so it is recommended to ignore the returning value and use the callback functions instead.</p>"}],"memberof":"CB_AudioFile_API.WAAPI","longname":"CB_AudioFile_API.WAAPI#checkPlaying","scope":"instance"},{"comment":"/**\r\n * Tells the duration of the audio (in milliseconds). Note that some clients might not calculate the duration correctly and, in this case, a zero (0) value would be returned.\r\n * @function CB_AudioFile_API.WAAPI#getDuration\r\n * @returns {number} Returns the duration of the audio (in milliseconds). Note that some clients might not calculate the duration correctly and, in this case, a zero (0) value would be returned.\r\n */","meta":{"filename":"CB_AudioFile_API_WAAPI.js","lineno":889,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{}},"description":"<p>Tells the duration of the audio (in milliseconds). Note that some clients might not calculate the duration correctly and, in this case, a zero (0) value would be returned.</p>","kind":"function","name":"getDuration","returns":[{"type":{"names":["number"]},"description":"<p>Returns the duration of the audio (in milliseconds). Note that some clients might not calculate the duration correctly and, in this case, a zero (0) value would be returned.</p>"}],"memberof":"CB_AudioFile_API.WAAPI","longname":"CB_AudioFile_API.WAAPI#getDuration","scope":"instance"},{"comment":"/**\r\n * Plays the audio.\r\n * @function CB_AudioFile_API.WAAPI#play\r\n * @param {number} [startAt=0 | {@link CB_AudioFile_API.WAAPI#lastStartAt} | stopAt] - Time in milliseconds where we want the audio to start at. If not provided or it is not a valid number, it will use zero (0) as default which belongs to the beginning of the audio. If the value provided is greater than the \"stopAt\" provided, it will use the value set in the {@link CB_AudioFile_API.WAAPI#lastStartAt} property (which belongs to the \"startAt\" value the last time that this method was called). If, even using the {@link CB_AudioFile_API.WAAPI#lastStartAt} value is still greather than the \"stopAt\" provided, it will use the same value as the \"stopAt\" which means it will not play and will stop immediately.\r\n * @param {number} [stopAt={@link CB_AudioFile_API.WAAPI#getDuration}()] - Time in milliseconds where we want the audio to stop at. If not provided or it is not a valid number, it will use the returning value of the {@link CB_AudioFile_API.WAAPI#getDuration} method (which should belong to the total duration of the audio, if it was calculated correctly).\r\n * @param {boolean} [loop={@link CB_AudioFile_API.WAAPI#loop}] - Sets whether we want to play the audio looping (starting again and again) or just play it once. Note that at the end of each loop the \"onStop\" function defined (through the {@link CB_AudioFile_API.WAAPI#onStop} method) will not be called.\r\n * @param {boolean} [avoidDelayedPlay=false] - If set to false (recommended) and the audio failed previously or was aborted (destroyed), it will try to load it correctly again automatically and play it after that if possible (this can take some time so the audio could start playing after a delay). Otherwise, if set to true and the audio failed or was aborted (destroyed), the audio will not play at all and the \"stop\" method will be called immediately.\r\n * @param {boolean} [allowedRecursiveDelay={@link CB_Configuration.CrossBase.CB_AudioFile_AudioFileCache_ALLOWED_RECURSIVE_DELAY_DEFAULT}] - The maximum amount of time (in milliseconds) of delay that we accept before start playing the audio. If the amount of time is overcome, the audio will not play at all and the {@link CB_AudioFile_API.WAAPI#stop} method will be called immediately. Used only when the \"avoidDelayedPlay\" parameter is set to false and the audio needs to be loaded because it failed previously or was aborted (destroyed).\r\n * @param {function} [onPlayStart] - Function to be called when the audio starts playing successfully. The function will be called with the following parameters (in order): \"startAt\", \"stopAt\", \"startAtNextLoop\", \"loop\", \"avoidDelayedPlay\", \"allowedRecursiveDelay\" and \"startPlayingTime\", being \"this\" the {@link CB_AudioFile_API.WAAPI} object. If the audio is looping, this will be called only once when the audio starts playing the first time and it will not be called next loops.\r\n * @param {function} [onLoadError] - Function to be called if the audio cannot be played successfully. The first and unique parameter will be a string describing the error found (if it could be determined), being \"this\" the {@link CB_AudioFile_API.WAAPI} object.\r\n * @param {boolean} [isResume=false] - If set to true (not recommended) and it is a looping audio, the next loop will use the value of the {@link CB_AudioFile_API.WAAPI#lastStartAt} property as the \"startAt\" parameter when it calls this method again automatically (internally). Recommended for internal usage only.\r\n * @param {boolean} [isLooping=false] - Used to determine whether this method was called automatically again by itself because it is looping the audio. Recommended for internal usage only.\r\n * @param {integer} [startPlayingTime] - Contains the time when the audio should start playing. Recommended for internal usage only.\r\n * @returns {boolean|integer} It returns false if the duration is 0 (\"startAt\" and \"stopAt\" are the same number), returns \"-1\" if the audio cannot be played and an error is detected or returns true otherwise. Note that even when it returns true there can be a non-detectable error and maybe the audio is not played.\r\n */","meta":{"filename":"CB_AudioFile_API_WAAPI.js","lineno":909,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{}},"description":"<p>Plays the audio.</p>","kind":"function","name":"play","params":[{"type":{"names":["number"]},"optional":true,"defaultvalue":"0 | {@link CB_AudioFile_API.WAAPI#lastStartAt} | stopAt","description":"<p>Time in milliseconds where we want the audio to start at. If not provided or it is not a valid number, it will use zero (0) as default which belongs to the beginning of the audio. If the value provided is greater than the &quot;stopAt&quot; provided, it will use the value set in the {@link CB_AudioFile_API.WAAPI#lastStartAt} property (which belongs to the &quot;startAt&quot; value the last time that this method was called). If, even using the {@link CB_AudioFile_API.WAAPI#lastStartAt} value is still greather than the &quot;stopAt&quot; provided, it will use the same value as the &quot;stopAt&quot; which means it will not play and will stop immediately.</p>","name":"startAt"},{"type":{"names":["number"]},"optional":true,"defaultvalue":"{@link CB_AudioFile_API.WAAPI#getDuration}()","description":"<p>Time in milliseconds where we want the audio to stop at. If not provided or it is not a valid number, it will use the returning value of the {@link CB_AudioFile_API.WAAPI#getDuration} method (which should belong to the total duration of the audio, if it was calculated correctly).</p>","name":"stopAt"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":"{@link CB_AudioFile_API.WAAPI#loop}","description":"<p>Sets whether we want to play the audio looping (starting again and again) or just play it once. Note that at the end of each loop the &quot;onStop&quot; function defined (through the {@link CB_AudioFile_API.WAAPI#onStop} method) will not be called.</p>","name":"loop"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If set to false (recommended) and the audio failed previously or was aborted (destroyed), it will try to load it correctly again automatically and play it after that if possible (this can take some time so the audio could start playing after a delay). Otherwise, if set to true and the audio failed or was aborted (destroyed), the audio will not play at all and the &quot;stop&quot; method will be called immediately.</p>","name":"avoidDelayedPlay"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":"{@link CB_Configuration.CrossBase.CB_AudioFile_AudioFileCache_ALLOWED_RECURSIVE_DELAY_DEFAULT}","description":"<p>The maximum amount of time (in milliseconds) of delay that we accept before start playing the audio. If the amount of time is overcome, the audio will not play at all and the {@link CB_AudioFile_API.WAAPI#stop} method will be called immediately. Used only when the &quot;avoidDelayedPlay&quot; parameter is set to false and the audio needs to be loaded because it failed previously or was aborted (destroyed).</p>","name":"allowedRecursiveDelay"},{"type":{"names":["function"]},"optional":true,"description":"<p>Function to be called when the audio starts playing successfully. The function will be called with the following parameters (in order): &quot;startAt&quot;, &quot;stopAt&quot;, &quot;startAtNextLoop&quot;, &quot;loop&quot;, &quot;avoidDelayedPlay&quot;, &quot;allowedRecursiveDelay&quot; and &quot;startPlayingTime&quot;, being &quot;this&quot; the {@link CB_AudioFile_API.WAAPI} object. If the audio is looping, this will be called only once when the audio starts playing the first time and it will not be called next loops.</p>","name":"onPlayStart"},{"type":{"names":["function"]},"optional":true,"description":"<p>Function to be called if the audio cannot be played successfully. The first and unique parameter will be a string describing the error found (if it could be determined), being &quot;this&quot; the {@link CB_AudioFile_API.WAAPI} object.</p>","name":"onLoadError"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If set to true (not recommended) and it is a looping audio, the next loop will use the value of the {@link CB_AudioFile_API.WAAPI#lastStartAt} property as the &quot;startAt&quot; parameter when it calls this method again automatically (internally). Recommended for internal usage only.</p>","name":"isResume"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>Used to determine whether this method was called automatically again by itself because it is looping the audio. Recommended for internal usage only.</p>","name":"isLooping"},{"type":{"names":["integer"]},"optional":true,"description":"<p>Contains the time when the audio should start playing. Recommended for internal usage only.</p>","name":"startPlayingTime"}],"returns":[{"type":{"names":["boolean","integer"]},"description":"<p>It returns false if the duration is 0 (&quot;startAt&quot; and &quot;stopAt&quot; are the same number), returns &quot;-1&quot; if the audio cannot be played and an error is detected or returns true otherwise. Note that even when it returns true there can be a non-detectable error and maybe the audio is not played.</p>"}],"memberof":"CB_AudioFile_API.WAAPI","longname":"CB_AudioFile_API.WAAPI#play","scope":"instance"},{"comment":"/**\r\n * Resumes the audio (after being paused), starting from the same point it was paused previously.\r\n * @function CB_AudioFile_API.WAAPI#resume\r\n * @param {boolean} [loop={@link CB_AudioFile_API.WAAPI#loop}] - Sets whether we want to play the audio looping (starting again and again) or just play it once. Note that at the end of each loop the \"onStop\" function defined (through the {@link CB_AudioFile_API.WAAPI#onStop} method) will not be called.\r\n * @param {boolean} [avoidDelayedPlay=false] - If set to false (recommended) and the audio failed previously or was aborted (destroyed), it will try to load it correctly again automatically and play it after that if possible (this can take some time so the audio could start playing after a delay). Otherwise, if set to true and the audio failed or was aborted (destroyed), the audio will not play at all and the {@link CB_AudioFile_API.WAAPI#stop} method will be called immediately.\r\n * @param {boolean} [allowedRecursiveDelay={@link CB_Configuration.CrossBase.CB_AudioFile_AudioFileCache_ALLOWED_RECURSIVE_DELAY_DEFAULT}] - The maximum amount of time (in milliseconds) of delay that we accept before start playing the audio. If the amount of time is overcome, the audio will not play at all and the {@link CB_AudioFile_API.WAAPI#stop} method will be called immediately. Used only when the \"avoidDelayedPlay\" parameter is set to false and the audio needs to be loaded because it failed previously or was aborted (destroyed).\r\n * @param {function} [onPlayStart] - Function to be called when the audio starts playing successfully. The function will be called with the following parameters (in order): \"startAt\", \"stopAt\", \"startAtNextLoop\", \"loop\", \"avoidDelayedPlay\", \"allowedRecursiveDelay\" and \"startPlayingTime\", being \"this\" the {@link CB_AudioFile_API.WAAPI} object. If the audio is looping, this will be called only once when the audio starts playing the first time and it will not be called next loops.\r\n * @param {function} [onLoadError] - Function to be called if the audio cannot be played successfully. It will not be called if the audio is not paused or is stopped. The first and unique parameter will be a string describing the error found (if it could be determined), being \"this\" the {@link CB_AudioFile_API.WAAPI} object.\r\n * @returns {boolean|integer} Returns the returning value of the {@link CB_AudioFile_API.WAAPI#play} method which is called internally. It returns false if the audio is not paused or it is stopped, returns \"-1\" if the audio cannot be played and an error is detected or returns true otherwise. Note that even when it returns true there can be a non-detectable error and maybe the audio is not played.\r\n */","meta":{"filename":"CB_AudioFile_API_WAAPI.js","lineno":1111,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{}},"description":"<p>Resumes the audio (after being paused), starting from the same point it was paused previously.</p>","kind":"function","name":"resume","params":[{"type":{"names":["boolean"]},"optional":true,"defaultvalue":"{@link CB_AudioFile_API.WAAPI#loop}","description":"<p>Sets whether we want to play the audio looping (starting again and again) or just play it once. Note that at the end of each loop the &quot;onStop&quot; function defined (through the {@link CB_AudioFile_API.WAAPI#onStop} method) will not be called.</p>","name":"loop"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If set to false (recommended) and the audio failed previously or was aborted (destroyed), it will try to load it correctly again automatically and play it after that if possible (this can take some time so the audio could start playing after a delay). Otherwise, if set to true and the audio failed or was aborted (destroyed), the audio will not play at all and the {@link CB_AudioFile_API.WAAPI#stop} method will be called immediately.</p>","name":"avoidDelayedPlay"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":"{@link CB_Configuration.CrossBase.CB_AudioFile_AudioFileCache_ALLOWED_RECURSIVE_DELAY_DEFAULT}","description":"<p>The maximum amount of time (in milliseconds) of delay that we accept before start playing the audio. If the amount of time is overcome, the audio will not play at all and the {@link CB_AudioFile_API.WAAPI#stop} method will be called immediately. Used only when the &quot;avoidDelayedPlay&quot; parameter is set to false and the audio needs to be loaded because it failed previously or was aborted (destroyed).</p>","name":"allowedRecursiveDelay"},{"type":{"names":["function"]},"optional":true,"description":"<p>Function to be called when the audio starts playing successfully. The function will be called with the following parameters (in order): &quot;startAt&quot;, &quot;stopAt&quot;, &quot;startAtNextLoop&quot;, &quot;loop&quot;, &quot;avoidDelayedPlay&quot;, &quot;allowedRecursiveDelay&quot; and &quot;startPlayingTime&quot;, being &quot;this&quot; the {@link CB_AudioFile_API.WAAPI} object. If the audio is looping, this will be called only once when the audio starts playing the first time and it will not be called next loops.</p>","name":"onPlayStart"},{"type":{"names":["function"]},"optional":true,"description":"<p>Function to be called if the audio cannot be played successfully. It will not be called if the audio is not paused or is stopped. The first and unique parameter will be a string describing the error found (if it could be determined), being &quot;this&quot; the {@link CB_AudioFile_API.WAAPI} object.</p>","name":"onLoadError"}],"returns":[{"type":{"names":["boolean","integer"]},"description":"<p>Returns the returning value of the {@link CB_AudioFile_API.WAAPI#play} method which is called internally. It returns false if the audio is not paused or it is stopped, returns &quot;-1&quot; if the audio cannot be played and an error is detected or returns true otherwise. Note that even when it returns true there can be a non-detectable error and maybe the audio is not played.</p>"}],"memberof":"CB_AudioFile_API.WAAPI","longname":"CB_AudioFile_API.WAAPI#resume","scope":"instance"},{"comment":"/**\r\n * Pauses the audio when it is being played.\r\n * @function CB_AudioFile_API.WAAPI#pause\r\n * @param {function} [onPause] - Function without parameters to be called when the audio is paused successfully, being \"this\" the {@link CB_AudioFile_API.WAAPI} object.\r\n * @param {boolean} [keepPausedUnaltered=false] - If set to true (not recommended), the {@link CB_AudioFile_API.WAAPI#paused} property will not be set to true and it will remain with its current value.\r\n * @returns {boolean} It returns false if the audio is already paused or it is stopped or if it cannot be paused. Returns true otherwise.\r\n */","meta":{"filename":"CB_AudioFile_API_WAAPI.js","lineno":1139,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{}},"description":"<p>Pauses the audio when it is being played.</p>","kind":"function","name":"pause","params":[{"type":{"names":["function"]},"optional":true,"description":"<p>Function without parameters to be called when the audio is paused successfully, being &quot;this&quot; the {@link CB_AudioFile_API.WAAPI} object.</p>","name":"onPause"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If set to true (not recommended), the {@link CB_AudioFile_API.WAAPI#paused} property will not be set to true and it will remain with its current value.</p>","name":"keepPausedUnaltered"}],"returns":[{"type":{"names":["boolean"]},"description":"<p>It returns false if the audio is already paused or it is stopped or if it cannot be paused. Returns true otherwise.</p>"}],"memberof":"CB_AudioFile_API.WAAPI","longname":"CB_AudioFile_API.WAAPI#pause","scope":"instance"},{"comment":"/**\r\n * Stops the audio.\r\n * @function CB_AudioFile_API.WAAPI#stop\r\n * @param {boolean} [keepStoppedUnaltered=false] - If set to true (not recommended), the {@link CB_AudioFile_API.WAAPI#stopped} property will not be set to true and it will remain with its current value.\r\n * @param {boolean} [avoidOnStop=false] - If set to false and there is an \"onStop\" function defined (through the {@link CB_AudioFile_API.WAAPI#onStop} method), it will be called after stopping the audio (or after trying to do it, at least) but only if either the \"forceOnStop\" parameter is set to true or if the \"keepStoppedUnaltered\" parameter is set to false and the audio was not already stopped before. If set to true, the \"onStop\" function (if any) will not be called at all.\r\n * @param {boolean} [forceOnStop=false] - If it is set to true and the \"avoidOnStop\" parameter is set to false and there is an \"onStop\" function defined (through the {@link CB_AudioFile_API.WAAPI#onStop} method), it will be called regardless the audio was stopped before or not. If set to false, the \"onStop\" function (if any) will only be called if the \"keepStoppedUnaltered\" parameter is set to false and the audio was not already stopped before. This parameter will be ignored if the \"avoidOnStop\" parameter is set to true.\r\n * @returns {boolean} It returns false if the stopping action cannot be performed at all (this could happen when the audio has not been loaded properly, for example). Returns true otherwise (this only means that it has been tried to be stopped but it could not be successfully).\r\n */","meta":{"filename":"CB_AudioFile_API_WAAPI.js","lineno":1172,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{}},"description":"<p>Stops the audio.</p>","kind":"function","name":"stop","params":[{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If set to true (not recommended), the {@link CB_AudioFile_API.WAAPI#stopped} property will not be set to true and it will remain with its current value.</p>","name":"keepStoppedUnaltered"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If set to false and there is an &quot;onStop&quot; function defined (through the {@link CB_AudioFile_API.WAAPI#onStop} method), it will be called after stopping the audio (or after trying to do it, at least) but only if either the &quot;forceOnStop&quot; parameter is set to true or if the &quot;keepStoppedUnaltered&quot; parameter is set to false and the audio was not already stopped before. If set to true, the &quot;onStop&quot; function (if any) will not be called at all.</p>","name":"avoidOnStop"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If it is set to true and the &quot;avoidOnStop&quot; parameter is set to false and there is an &quot;onStop&quot; function defined (through the {@link CB_AudioFile_API.WAAPI#onStop} method), it will be called regardless the audio was stopped before or not. If set to false, the &quot;onStop&quot; function (if any) will only be called if the &quot;keepStoppedUnaltered&quot; parameter is set to false and the audio was not already stopped before. This parameter will be ignored if the &quot;avoidOnStop&quot; parameter is set to true.</p>","name":"forceOnStop"}],"returns":[{"type":{"names":["boolean"]},"description":"<p>It returns false if the stopping action cannot be performed at all (this could happen when the audio has not been loaded properly, for example). Returns true otherwise (this only means that it has been tried to be stopped but it could not be successfully).</p>"}],"memberof":"CB_AudioFile_API.WAAPI","longname":"CB_AudioFile_API.WAAPI#stop","scope":"instance"},{"comment":"/**\r\n * Sets the desired volume for the audio file (from 0 to the maximum value, where the maximum value will be the returning value of calling the {@link CB_Speaker.getVolume} function if the {@link CB_Configuration.CrossBase.CB_AudioFile_AudioFileCache_USE_SPEAKER_VOLUME_AS_MAXIMUM} property is set to true or it will be 100 otherwise).\r\n * @function CB_AudioFile_API.WAAPI#setVolume\r\n * @param {number} [volume={@link CB_Speaker.getVolume()} | {@link CB_Configuration.CrossBase.CB_Speaker_DEFAULT_VOLUME}] - Desired volume (from 0 to the maximum value, where the maximum value will be the returning value of calling the {@link CB_Speaker.getVolume} function if the {@link CB_Configuration.CrossBase.CB_AudioFile_AudioFileCache_USE_SPEAKER_VOLUME_AS_MAXIMUM} property is set to true or it will be 100 otherwise).\r\n * @param {boolean} [forceSetVolumeProperty=false] - If set to true (not recommended), it will change the {@link CB_AudioFile_API.WAAPI#volume} property even when the volume failed to be changed.\r\n * @param {function} [onSetVolume] - Callback function which will be called if it has been possible to set the volume (or at least it was possible to try it). It will not receive any parameters, being \"this\" the {@link CB_AudioFile_API.WAAPI} object.\r\n * @param {boolean} [saveForUnmute=false] - If set to true (not recommended), it will save internally the current volume before setting it so it will restore the same volume again after calling the {@link CB_AudioFile_API.WAAPI#unmute} method. Internal usage only recommended.\r\n * @returns {number} Returns the current volume (from 0 to the maximum value, where the maximum value will be the returning value of calling the {@link CB_Speaker.getVolume} function if the {@link CB_Configuration.CrossBase.CB_AudioFile_AudioFileCache_USE_SPEAKER_VOLUME_AS_MAXIMUM} property is set to true or it will be 100 otherwise).\r\n */","meta":{"filename":"CB_AudioFile_API_WAAPI.js","lineno":1201,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{}},"description":"<p>Sets the desired volume for the audio file (from 0 to the maximum value, where the maximum value will be the returning value of calling the {@link CB_Speaker.getVolume} function if the {@link CB_Configuration.CrossBase.CB_AudioFile_AudioFileCache_USE_SPEAKER_VOLUME_AS_MAXIMUM} property is set to true or it will be 100 otherwise).</p>","kind":"function","name":"setVolume","params":[{"type":{"names":["number"]},"optional":true,"defaultvalue":"{@link CB_Speaker.getVolume()} | {@link CB_Configuration.CrossBase.CB_Speaker_DEFAULT_VOLUME}","description":"<p>Desired volume (from 0 to the maximum value, where the maximum value will be the returning value of calling the {@link CB_Speaker.getVolume} function if the {@link CB_Configuration.CrossBase.CB_AudioFile_AudioFileCache_USE_SPEAKER_VOLUME_AS_MAXIMUM} property is set to true or it will be 100 otherwise).</p>","name":"volume"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If set to true (not recommended), it will change the {@link CB_AudioFile_API.WAAPI#volume} property even when the volume failed to be changed.</p>","name":"forceSetVolumeProperty"},{"type":{"names":["function"]},"optional":true,"description":"<p>Callback function which will be called if it has been possible to set the volume (or at least it was possible to try it). It will not receive any parameters, being &quot;this&quot; the {@link CB_AudioFile_API.WAAPI} object.</p>","name":"onSetVolume"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If set to true (not recommended), it will save internally the current volume before setting it so it will restore the same volume again after calling the {@link CB_AudioFile_API.WAAPI#unmute} method. Internal usage only recommended.</p>","name":"saveForUnmute"}],"returns":[{"type":{"names":["number"]},"description":"<p>Returns the current volume (from 0 to the maximum value, where the maximum value will be the returning value of calling the {@link CB_Speaker.getVolume} function if the {@link CB_Configuration.CrossBase.CB_AudioFile_AudioFileCache_USE_SPEAKER_VOLUME_AS_MAXIMUM} property is set to true or it will be 100 otherwise).</p>"}],"memberof":"CB_AudioFile_API.WAAPI","longname":"CB_AudioFile_API.WAAPI#setVolume","scope":"instance"},{"comment":"/**\r\n * Mutes the audio file.\r\n * @function CB_AudioFile_API.WAAPI#mute\r\n * @param {function} [onMute] - Callback function which will be called if it has been possible to mute the audio file (or at least it was possible to try it). It will not receive any parameters, being \"this\" the {@link CB_AudioFile_API.WAAPI} object.\r\n * @returns {number} Returns the current volume (from 0 to the maximum value, where the maximum value will be the returning value of calling the {@link CB_Speaker.getVolume} function if the {@link CB_Configuration.CrossBase.CB_AudioFile_AudioFileCache_USE_SPEAKER_VOLUME_AS_MAXIMUM} property is set to true or it will be 100 otherwise). If all goes well, the returning value should be zero (0). Note that, even when it returns a zero (0) value, this does not always mean that the mute has been applied successfully.\r\n */","meta":{"filename":"CB_AudioFile_API_WAAPI.js","lineno":1240,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{}},"description":"<p>Mutes the audio file.</p>","kind":"function","name":"mute","params":[{"type":{"names":["function"]},"optional":true,"description":"<p>Callback function which will be called if it has been possible to mute the audio file (or at least it was possible to try it). It will not receive any parameters, being &quot;this&quot; the {@link CB_AudioFile_API.WAAPI} object.</p>","name":"onMute"}],"returns":[{"type":{"names":["number"]},"description":"<p>Returns the current volume (from 0 to the maximum value, where the maximum value will be the returning value of calling the {@link CB_Speaker.getVolume} function if the {@link CB_Configuration.CrossBase.CB_AudioFile_AudioFileCache_USE_SPEAKER_VOLUME_AS_MAXIMUM} property is set to true or it will be 100 otherwise). If all goes well, the returning value should be zero (0). Note that, even when it returns a zero (0) value, this does not always mean that the mute has been applied successfully.</p>"}],"memberof":"CB_AudioFile_API.WAAPI","longname":"CB_AudioFile_API.WAAPI#mute","scope":"instance"},{"comment":"/**\r\n * Restores audio after muting it (unmutes it).\r\n * @function CB_AudioFile_API.WAAPI#unmute\r\n * @param {function} [onUnmute] - Callback function which will be called if it has been possible to unmute the audio file (or at least it was possible to try it). It will not receive any parameters, being \"this\" the {@link CB_AudioFile_API.WAAPI} object.\r\n * @returns {number} Returns the current volume (from 0 to the maximum value, where the maximum value will be the returning value of calling the {@link CB_Speaker.getVolume} function if the {@link CB_Configuration.CrossBase.CB_AudioFile_AudioFileCache_USE_SPEAKER_VOLUME_AS_MAXIMUM} property is set to true or it will be 100 otherwise).\r\n */","meta":{"filename":"CB_AudioFile_API_WAAPI.js","lineno":1258,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{}},"description":"<p>Restores audio after muting it (unmutes it).</p>","kind":"function","name":"unmute","params":[{"type":{"names":["function"]},"optional":true,"description":"<p>Callback function which will be called if it has been possible to unmute the audio file (or at least it was possible to try it). It will not receive any parameters, being &quot;this&quot; the {@link CB_AudioFile_API.WAAPI} object.</p>","name":"onUnmute"}],"returns":[{"type":{"names":["number"]},"description":"<p>Returns the current volume (from 0 to the maximum value, where the maximum value will be the returning value of calling the {@link CB_Speaker.getVolume} function if the {@link CB_Configuration.CrossBase.CB_AudioFile_AudioFileCache_USE_SPEAKER_VOLUME_AS_MAXIMUM} property is set to true or it will be 100 otherwise).</p>"}],"memberof":"CB_AudioFile_API.WAAPI","longname":"CB_AudioFile_API.WAAPI#unmute","scope":"instance"},{"comment":"/**\r\n * Gets the current time (in milliseconds) which belongs to the position where the audio is currently playing or where it has been paused. Note that some audio APIs and clients could give wrong values.\r\n * @function CB_AudioFile_API.WAAPI#getCurrentTime\r\n * @returns {number} Returns the current time (in milliseconds). Note that some audio APIs and clients could give wrong values.\r\n */","meta":{"filename":"CB_AudioFile_API_WAAPI.js","lineno":1276,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{}},"description":"<p>Gets the current time (in milliseconds) which belongs to the position where the audio is currently playing or where it has been paused. Note that some audio APIs and clients could give wrong values.</p>","kind":"function","name":"getCurrentTime","returns":[{"type":{"names":["number"]},"description":"<p>Returns the current time (in milliseconds). Note that some audio APIs and clients could give wrong values.</p>"}],"memberof":"CB_AudioFile_API.WAAPI","longname":"CB_AudioFile_API.WAAPI#getCurrentTime","scope":"instance"},{"comment":"/**\r\n * Sets a function to execute when the audio file stops playing or removes it.\r\n * @function CB_AudioFile_API.WAAPI#onStop\r\n * @param {function|null} callbackFunction - The function (event listener) that we want to execute when the event is fired. No parameters will be received, being \"this\" the {@link CB_AudioFile_API.WAAPI} object. If a null value is used, the event will be removed.\r\n * @param {boolean} [keepOldFunction=true] - Defines whether we want to keep any possible previous event listener or not.\r\n * @returns {boolean} Returns whether the event has been set or not (removed).\r\n */","meta":{"filename":"CB_AudioFile_API_WAAPI.js","lineno":1315,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{}},"description":"<p>Sets a function to execute when the audio file stops playing or removes it.</p>","kind":"function","name":"onStop","params":[{"type":{"names":["function","null"]},"description":"<p>The function (event listener) that we want to execute when the event is fired. No parameters will be received, being &quot;this&quot; the {@link CB_AudioFile_API.WAAPI} object. If a null value is used, the event will be removed.</p>","name":"callbackFunction"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":true,"description":"<p>Defines whether we want to keep any possible previous event listener or not.</p>","name":"keepOldFunction"}],"returns":[{"type":{"names":["boolean"]},"description":"<p>Returns whether the event has been set or not (removed).</p>"}],"memberof":"CB_AudioFile_API.WAAPI","longname":"CB_AudioFile_API.WAAPI#onStop","scope":"instance"},{"comment":"/**\r\n * Returns a number representing the percentage of the loading progress for the audio file (from 0 to 100, being 100 a complete loading progress). The way to calculate it internally may differ from one audio API to another and it is not totally reliable.\r\n * @function CB_AudioFile_API.WAAPI#getProgress\r\n * @returns {number} Returns a number representing the percentage of the loading progress for the audio file (from 0 to 100, being 100 a complete loading progress). The way to calculate it internally may differ from one audio API to another and it is not totally reliable.\r\n */","meta":{"filename":"CB_AudioFile_API_WAAPI.js","lineno":1352,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{}},"description":"<p>Returns a number representing the percentage of the loading progress for the audio file (from 0 to 100, being 100 a complete loading progress). The way to calculate it internally may differ from one audio API to another and it is not totally reliable.</p>","kind":"function","name":"getProgress","returns":[{"type":{"names":["number"]},"description":"<p>Returns a number representing the percentage of the loading progress for the audio file (from 0 to 100, being 100 a complete loading progress). The way to calculate it internally may differ from one audio API to another and it is not totally reliable.</p>"}],"memberof":"CB_AudioFile_API.WAAPI","longname":"CB_AudioFile_API.WAAPI#getProgress","scope":"instance"},{"comment":"/**\r\n * @file Speakers management. Contains the {@link CB_Speaker} static class.\r\n * @author Joan Alba Maldonado <workindalian@gmail.com>\r\n */","meta":{"filename":"CB_Speaker.js","lineno":1,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{}},"name":"CrossBase/audiovisual/audio/CB_Speaker.js","kind":"file","description":"<p>Speakers management. Contains the {@link CB_Speaker} static class.</p>","preserveName":true,"author":["Joan Alba Maldonado <workindalian@gmail.com>"],"longname":"CrossBase/audiovisual/audio/CB_Speaker.js","scope":"global"},{"comment":"/**\r\n * Static class to manage the speaker or speakers. It will return itself if it is tried to be instantiated. It can also use [timbre.js]{@link https://mohayonao.github.io/timbre.js/}, [Band.js]{@link https://github.com/meenie/band.js/} and [jsfx]{@link https://github.com/loov/jsfx}.\r\n * @namespace\r\n * @todo Check whether the path used to play silent sounds as a workaround (through the internal \"_playBlankFilesSilently\" method) is right or not (now it uses the {@link CB_scriptPath} variable).\r\n * @todo getCopy and filterProperties methods (similar to the ones from {@link CB_GraphicSprites} and {@link CB_GraphicSpritesScene}).\r\n */","meta":{"range":[799,859],"filename":"CB_Speaker.js","lineno":13,"columnno":4,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100034694","name":"CB_Speaker","type":"AssignmentExpression","value":"CB_Speakers"}},"description":"<p>Static class to manage the speaker or speakers. It will return itself if it is tried to be instantiated. It can also use [timbre.js]{@link https://mohayonao.github.io/timbre.js/}, [Band.js]{@link https://github.com/meenie/band.js/} and [jsfx]{@link https://github.com/loov/jsfx}.</p>","kind":"namespace","todo":["Check whether the path used to play silent sounds as a workaround (through the internal \"_playBlankFilesSilently\" method) is right or not (now it uses the {@link CB_scriptPath} variable).","getCopy and filterProperties methods (similar to the ones from {@link CB_GraphicSprites} and {@link CB_GraphicSpritesScene})."],"name":"CB_Speaker","longname":"CB_Speaker","scope":"global","params":[]},{"comment":"/**\r\n\t * Sanitizes the volume (it does not allow values greater than 100 or lower than 0).\r\n\t * @function\r\n\t * @param {number} [volume=CB_Configuration.CrossBase.CB_Speaker_DEFAULT_VOLUME|CB_Speaker._volume] - The desired volume to be sanitized. If not given, it will use the current volume if the \"useSpeakerVolumeIfNaN\" parameter is set to true or the default volume otherwise.\r\n\t * @param {boolean} [useSpeakerVolumeIfNaN=false] - If it is set to true and no valid volume is received in the \"volume\" parameter, it will use the current volume ({@link CB_Speaker._volume}). Otherwise, if it is set to false and no valid volume is received in the \"volume\" parameter, it will use the default volume which is set in the {@link CB_Configuration.CrossBase.CB_Speaker_DEFAULT_VOLUME} constant.\r\n\t * @returns {number} Returns the volume sanitized (it does not allow values greater than 100 or lower than 0).\r\n\t */","meta":{"range":[44952,45363],"filename":"CB_Speaker.js","lineno":216,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100035472","name":"CB_Speaker.sanitizeVolume","type":"FunctionExpression","paramnames":["volume","useSpeakerVolumeIfNaN"]},"vars":{"volume":"CB_Speaker.sanitizeVolume~volume"}},"description":"<p>Sanitizes the volume (it does not allow values greater than 100 or lower than 0).</p>","kind":"function","params":[{"type":{"names":["number"]},"optional":true,"defaultvalue":"CB_Configuration.CrossBase.CB_Speaker_DEFAULT_VOLUME|CB_Speaker._volume","description":"<p>The desired volume to be sanitized. If not given, it will use the current volume if the &quot;useSpeakerVolumeIfNaN&quot; parameter is set to true or the default volume otherwise.</p>","name":"volume"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If it is set to true and no valid volume is received in the &quot;volume&quot; parameter, it will use the current volume ({@link CB_Speaker._volume}). Otherwise, if it is set to false and no valid volume is received in the &quot;volume&quot; parameter, it will use the default volume which is set in the {@link CB_Configuration.CrossBase.CB_Speaker_DEFAULT_VOLUME} constant.</p>","name":"useSpeakerVolumeIfNaN"}],"returns":[{"type":{"names":["number"]},"description":"<p>Returns the volume sanitized (it does not allow values greater than 100 or lower than 0).</p>"}],"name":"sanitizeVolume","longname":"CB_Speaker.sanitizeVolume","memberof":"CB_Speaker","scope":"static"},{"comment":"/**\r\n\t * Sets the given volume.\r\n\t * @function\r\n\t * @param {number} [volume=CB_Speaker._volume] - The desired volume to be used (it will be sanitized internally by calling the {@link CB_Speaker.sanitizeVolume} function with the volume as the unique parameter). If not given, it will use the current volume. If the \"avoidApplyingVolume\" is set to false and the \"isMuteOrUnmute\" parameter is false, it will also be used as a parameter to call the {@link CB_AudioFileSpritesPool#setVolumeAll} method of the internal {@link CB_AudioFileSpritesPool} object defined in {@link CB_Speaker._audioFileSpritesPool} (if any).\r\n\t * @param {boolean} [avoidApplyingVolume=false] - If it is set to true, the volume will not be applied (by calling the {@link CB_Speaker._applyVolume} internal function, which will also use the internal {@link CB_AudioFileSpritesPool} object defined in {@link CB_Speaker._audioFileSpritesPool}, if any) and just the {@link CB_Speaker._volume} internal property will be set.\r\n\t * @param {boolean} [forceSetVolumeProperty=false] - If the \"avoidApplyingVolume\" is set to false and the \"isMuteOrUnmute\" parameter is false, it will be used as a parameter to call the {@link CB_AudioFileSpritesPool#setVolumeAll} method of the internal {@link CB_AudioFileSpritesPool} object defined in {@link CB_Speaker._audioFileSpritesPool} (if any).\r\n\t * @param {function} [functionToExecute] - A callback function. If the \"avoidApplyingVolume\" is set to false and the \"isMuteOrUnmute\" parameter is false, it will be used as the \"onSetVolume\" parameter to call the {@link CB_AudioFileSpritesPool#setVolumeAll} method of the internal {@link CB_AudioFileSpritesPool} object defined in {@link CB_Speaker._audioFileSpritesPool} (if any). If the \"avoidApplyingVolume\" is set to false and the \"isMuteOrUnmute\" parameter is true, it will be used as the \"onMute\" parameter to call the {@link CB_AudioFileSpritesPool#muteAll} method or as the \"onUnmute\" parameter to call the {@link CB_AudioFileSpritesPool#unmuteAll} method of the internal {@link CB_AudioFileSpritesPool} object defined in {@link CB_Speaker._audioFileSpritesPool} (if any).\r\n\t * @param {array} [audioFiles] - An array containing the CB_AudioFile objects that we want to affect (if not set and the \"avoidApplyingVolume\" is set to false, it will affect all the CB_AudioFile objects of the internal {@link CB_AudioFileSpritesPool} object defined in {@link CB_Speaker._audioFileSpritesPool}, if any). If the \"avoidApplyingVolume\" is set to false and the \"isMuteOrUnmute\" parameter is false, it will be used as the \"audioFiles\" parameter to call the {@link CB_AudioFileSpritesPool#setVolumeAll} method of the internal {@link CB_AudioFileSpritesPool} object defined in {@link CB_Speaker._audioFileSpritesPool} (if any). If the \"avoidApplyingVolume\" is set to false and the \"isMuteOrUnmute\" parameter is true, it will be used as the \"audioFiles\" parameter to call the {@link CB_AudioFileSpritesPool#muteAll} method or as the \"audioFiles\" parameter to call the {@link CB_AudioFileSpritesPool#unmuteAll} method of the internal {@link CB_AudioFileSpritesPool} object defined in {@link CB_Speaker._audioFileSpritesPool} (if any).\r\n\t * @param {boolean} [saveForUnmute=false] - If it is set to true, the given volume will be saved to be restored later when the {@link CB_Speaker.unmute} method is called.\r\n\t * @param {boolean} [isMuteOrUnmute=false] - If it is set to true and the volume given is zero, the action performed internally will be muting (by calling the {@link CB_AudioFileSpritesPool#muteAll} method of the internal {@link CB_AudioFileSpritesPool} object defined in {@link CB_Speaker._audioFileSpritesPool}, if any). Otherwise, if it is set to true and the volume given is not zero, the action performed internally will be unmuting (by calling the {@link CB_AudioFileSpritesPool#unmuteAll} method of the internal {@link CB_AudioFileSpritesPool} object defined in {@link CB_Speaker._audioFileSpritesPool}, if any). If it is set to false, the action performed will be set the volume given (by calling the {@link CB_AudioFileSpritesPool#setVolumeAll} method of the internal {@link CB_AudioFileSpritesPool} object defined in {@link CB_Speaker._audioFileSpritesPool}, if any).\r\n\t * @returns {number} Returns the current volume being used after setting it.\r\n\t *\t@todo Also affect BandJS, jsfx and timbre.js.\r\n\t */","meta":{"range":[49747,50331],"filename":"CB_Speaker.js","lineno":242,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100035525","name":"CB_Speaker.setVolume","type":"FunctionExpression","paramnames":["volume","avoidApplyingVolume","forceSetVolumeProperty","functionToExecute","audioFiles","saveForUnmute","isMuteOrUnmute"]},"vars":{"volume":"CB_Speaker.setVolume~volume","CB_Speaker._volumeBeforeMute":"CB_Speaker._volumeBeforeMute","CB_Speaker._volume":"CB_Speaker._volume"}},"description":"<p>Sets the given volume.</p>","kind":"function","params":[{"type":{"names":["number"]},"optional":true,"defaultvalue":"CB_Speaker._volume","description":"<p>The desired volume to be used (it will be sanitized internally by calling the {@link CB_Speaker.sanitizeVolume} function with the volume as the unique parameter). If not given, it will use the current volume. If the &quot;avoidApplyingVolume&quot; is set to false and the &quot;isMuteOrUnmute&quot; parameter is false, it will also be used as a parameter to call the {@link CB_AudioFileSpritesPool#setVolumeAll} method of the internal {@link CB_AudioFileSpritesPool} object defined in {@link CB_Speaker._audioFileSpritesPool} (if any).</p>","name":"volume"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If it is set to true, the volume will not be applied (by calling the {@link CB_Speaker._applyVolume} internal function, which will also use the internal {@link CB_AudioFileSpritesPool} object defined in {@link CB_Speaker._audioFileSpritesPool}, if any) and just the {@link CB_Speaker._volume} internal property will be set.</p>","name":"avoidApplyingVolume"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If the &quot;avoidApplyingVolume&quot; is set to false and the &quot;isMuteOrUnmute&quot; parameter is false, it will be used as a parameter to call the {@link CB_AudioFileSpritesPool#setVolumeAll} method of the internal {@link CB_AudioFileSpritesPool} object defined in {@link CB_Speaker._audioFileSpritesPool} (if any).</p>","name":"forceSetVolumeProperty"},{"type":{"names":["function"]},"optional":true,"description":"<p>A callback function. If the &quot;avoidApplyingVolume&quot; is set to false and the &quot;isMuteOrUnmute&quot; parameter is false, it will be used as the &quot;onSetVolume&quot; parameter to call the {@link CB_AudioFileSpritesPool#setVolumeAll} method of the internal {@link CB_AudioFileSpritesPool} object defined in {@link CB_Speaker._audioFileSpritesPool} (if any). If the &quot;avoidApplyingVolume&quot; is set to false and the &quot;isMuteOrUnmute&quot; parameter is true, it will be used as the &quot;onMute&quot; parameter to call the {@link CB_AudioFileSpritesPool#muteAll} method or as the &quot;onUnmute&quot; parameter to call the {@link CB_AudioFileSpritesPool#unmuteAll} method of the internal {@link CB_AudioFileSpritesPool} object defined in {@link CB_Speaker._audioFileSpritesPool} (if any).</p>","name":"functionToExecute"},{"type":{"names":["array"]},"optional":true,"description":"<p>An array containing the CB_AudioFile objects that we want to affect (if not set and the &quot;avoidApplyingVolume&quot; is set to false, it will affect all the CB_AudioFile objects of the internal {@link CB_AudioFileSpritesPool} object defined in {@link CB_Speaker._audioFileSpritesPool}, if any). If the &quot;avoidApplyingVolume&quot; is set to false and the &quot;isMuteOrUnmute&quot; parameter is false, it will be used as the &quot;audioFiles&quot; parameter to call the {@link CB_AudioFileSpritesPool#setVolumeAll} method of the internal {@link CB_AudioFileSpritesPool} object defined in {@link CB_Speaker._audioFileSpritesPool} (if any). If the &quot;avoidApplyingVolume&quot; is set to false and the &quot;isMuteOrUnmute&quot; parameter is true, it will be used as the &quot;audioFiles&quot; parameter to call the {@link CB_AudioFileSpritesPool#muteAll} method or as the &quot;audioFiles&quot; parameter to call the {@link CB_AudioFileSpritesPool#unmuteAll} method of the internal {@link CB_AudioFileSpritesPool} object defined in {@link CB_Speaker._audioFileSpritesPool} (if any).</p>","name":"audioFiles"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If it is set to true, the given volume will be saved to be restored later when the {@link CB_Speaker.unmute} method is called.</p>","name":"saveForUnmute"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If it is set to true and the volume given is zero, the action performed internally will be muting (by calling the {@link CB_AudioFileSpritesPool#muteAll} method of the internal {@link CB_AudioFileSpritesPool} object defined in {@link CB_Speaker._audioFileSpritesPool}, if any). Otherwise, if it is set to true and the volume given is not zero, the action performed internally will be unmuting (by calling the {@link CB_AudioFileSpritesPool#unmuteAll} method of the internal {@link CB_AudioFileSpritesPool} object defined in {@link CB_Speaker._audioFileSpritesPool}, if any). If it is set to false, the action performed will be set the volume given (by calling the {@link CB_AudioFileSpritesPool#setVolumeAll} method of the internal {@link CB_AudioFileSpritesPool} object defined in {@link CB_Speaker._audioFileSpritesPool}, if any).</p>","name":"isMuteOrUnmute"}],"returns":[{"type":{"names":["number"]},"description":"<p>Returns the current volume being used after setting it.</p>"}],"todo":["Also affect BandJS, jsfx and timbre.js."],"name":"setVolume","longname":"CB_Speaker.setVolume","memberof":"CB_Speaker","scope":"static"},{"comment":"/**\r\n\t * Mutes the speaker. Calls the {@link CB_Speaker.setVolume} function internally, with 0 (zero) as the \"volume\" parmeter, null as the \"forceSetVolumeProperty\" parameter and true for both \"saveForUnmute\" and \"isMuteOrUnmute\" parameters.\r\n\t * @function\r\n\t * @param {boolean} [avoidApplyingVolume=false] - Used as a parameter to call the {@link CB_Speaker.setVolume} function internally.\r\n\t * @param {function} [onMute] - Used as as the \"functionToExecute\" parameter to call the {@link CB_Speaker.setVolume} function internally.\r\n\t * @param {array} [audioFiles] - Used as a parameter to call the {@link CB_Speaker.setVolume} function internally.\r\n\t * @returns {number} Returns the result of the internal call to the {@link CB_Speaker.setVolume} function.\r\n\t *\t@todo Also affect BandJS, jsfx and timbre.js.\r\n\t */","meta":{"range":[51162,51331],"filename":"CB_Speaker.js","lineno":261,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100035593","name":"CB_Speaker.mute","type":"FunctionExpression","paramnames":["avoidApplyingVolume","onMute","audioFiles"]}},"description":"<p>Mutes the speaker. Calls the {@link CB_Speaker.setVolume} function internally, with 0 (zero) as the &quot;volume&quot; parmeter, null as the &quot;forceSetVolumeProperty&quot; parameter and true for both &quot;saveForUnmute&quot; and &quot;isMuteOrUnmute&quot; parameters.</p>","kind":"function","params":[{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>Used as a parameter to call the {@link CB_Speaker.setVolume} function internally.</p>","name":"avoidApplyingVolume"},{"type":{"names":["function"]},"optional":true,"description":"<p>Used as as the &quot;functionToExecute&quot; parameter to call the {@link CB_Speaker.setVolume} function internally.</p>","name":"onMute"},{"type":{"names":["array"]},"optional":true,"description":"<p>Used as a parameter to call the {@link CB_Speaker.setVolume} function internally.</p>","name":"audioFiles"}],"returns":[{"type":{"names":["number"]},"description":"<p>Returns the result of the internal call to the {@link CB_Speaker.setVolume} function.</p>"}],"todo":["Also affect BandJS, jsfx and timbre.js."],"name":"mute","longname":"CB_Speaker.mute","memberof":"CB_Speaker","scope":"static"},{"comment":"/**\r\n\t * Restores the audio volume after muting it. If the current volume is 0 (zero, muted) or the \"ignoreVolume\" parameter is set to true, calls the {@link CB_Speaker.setVolume} function internally, with the previously-saved volume before muting it as the \"volume\" parmeter, null as the \"forceSetVolumeProperty\" parameter, false for the \"saveForUnmute\" parameter and true for the \"isMuteOrUnmute\" parameter.\r\n\t * @function\r\n\t * @param {boolean} [avoidApplyingVolume=false] - Used as a parameter to call the {@link CB_Speaker.setVolume} function internally, if the \"ignoreVolume\" parameter is set to true.\r\n\t * @param {function} [onUnmute] - Used as as the \"functionToExecute\" parameter to call the {@link CB_Speaker.setVolume} function internally, if the \"ignoreVolume\" parameter is set to true.\r\n\t * @param {array} [audioFiles] - Used as a parameter to call the {@link CB_Speaker.setVolume} function internally, if the \"ignoreVolume\" parameter is set to true.\r\n\t * @param {boolean} [ignoreVolume=false] - If set to true, it will try to perform the muting action even when the current volume is not 0 (zero, muted).\r\n\t * @returns {number} Returns the current volume.\r\n\t *\t@todo Also affect BandJS, jsfx and timbre.js.\r\n\t */","meta":{"range":[52572,52872],"filename":"CB_Speaker.js","lineno":277,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100035615","name":"CB_Speaker.unmute","type":"FunctionExpression","paramnames":["avoidApplyingVolume","onUnmute","audioFiles","ignoreVolume"]}},"description":"<p>Restores the audio volume after muting it. If the current volume is 0 (zero, muted) or the &quot;ignoreVolume&quot; parameter is set to true, calls the {@link CB_Speaker.setVolume} function internally, with the previously-saved volume before muting it as the &quot;volume&quot; parmeter, null as the &quot;forceSetVolumeProperty&quot; parameter, false for the &quot;saveForUnmute&quot; parameter and true for the &quot;isMuteOrUnmute&quot; parameter.</p>","kind":"function","params":[{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>Used as a parameter to call the {@link CB_Speaker.setVolume} function internally, if the &quot;ignoreVolume&quot; parameter is set to true.</p>","name":"avoidApplyingVolume"},{"type":{"names":["function"]},"optional":true,"description":"<p>Used as as the &quot;functionToExecute&quot; parameter to call the {@link CB_Speaker.setVolume} function internally, if the &quot;ignoreVolume&quot; parameter is set to true.</p>","name":"onUnmute"},{"type":{"names":["array"]},"optional":true,"description":"<p>Used as a parameter to call the {@link CB_Speaker.setVolume} function internally, if the &quot;ignoreVolume&quot; parameter is set to true.</p>","name":"audioFiles"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If set to true, it will try to perform the muting action even when the current volume is not 0 (zero, muted).</p>","name":"ignoreVolume"}],"returns":[{"type":{"names":["number"]},"description":"<p>Returns the current volume.</p>"}],"todo":["Also affect BandJS, jsfx and timbre.js."],"name":"unmute","longname":"CB_Speaker.unmute","memberof":"CB_Speaker","scope":"static"},{"comment":"/**\r\n\t * Tells the current volume.\r\n\t * @function\r\n\t * @param {boolean} [avoidSanitize=false] - If set to true, it will not call the {@link CB_Speaker.sanitizeVolume} function internally before returning the volume.\r\n\t * @returns {number} Returns the current volume.\r\n\t */","meta":{"range":[53158,53337],"filename":"CB_Speaker.js","lineno":293,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100035653","name":"CB_Speaker.getVolume","type":"FunctionExpression","paramnames":["avoidSanitize"]},"vars":{"CB_Speaker._volume":"CB_Speaker._volume"}},"description":"<p>Tells the current volume.</p>","kind":"function","params":[{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If set to true, it will not call the {@link CB_Speaker.sanitizeVolume} function internally before returning the volume.</p>","name":"avoidSanitize"}],"returns":[{"type":{"names":["number"]},"description":"<p>Returns the current volume.</p>"}],"name":"getVolume","longname":"CB_Speaker.getVolume","memberof":"CB_Speaker","scope":"static"},{"comment":"/**\r\n\t * Sets the desired {@link CB_AudioFileSpritesPool} object.\r\n\t * @function\r\n\t * @param {CB_AudioFileSpritesPool} audioFileSpritesPool - The desired {@link CB_AudioFileSpritesPool} object to manage all audio files.\r\n\t * @returns {CB_AudioFileSpritesPool|null} Returns the current {@link CB_AudioFileSpritesPool} object after setting it (if any) or null otherwise.\r\n\t */","meta":{"range":[53726,54127],"filename":"CB_Speaker.js","lineno":306,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100035681","name":"CB_Speaker.setAudioFileSpritesPool","type":"FunctionExpression","paramnames":["audioFileSpritesPool"]},"vars":{"CB_Speaker._audioFileSpritesPool":"CB_Speaker._audioFileSpritesPool"}},"description":"<p>Sets the desired {@link CB_AudioFileSpritesPool} object.</p>","kind":"function","params":[{"type":{"names":["CB_AudioFileSpritesPool"]},"description":"<p>The desired {@link CB_AudioFileSpritesPool} object to manage all audio files.</p>","name":"audioFileSpritesPool"}],"returns":[{"type":{"names":["CB_AudioFileSpritesPool","null"]},"description":"<p>Returns the current {@link CB_AudioFileSpritesPool} object after setting it (if any) or null otherwise.</p>"}],"name":"setAudioFileSpritesPool","longname":"CB_Speaker.setAudioFileSpritesPool","memberof":"CB_Speaker","scope":"static"},{"comment":"/**\r\n\t * Returns the current {@link CB_AudioFileSpritesPool} object (if any).\r\n\t * @function\r\n\t * @returns {CB_AudioFileSpritesPool|null} Returns the current {@link CB_AudioFileSpritesPool} object (if any) or null otherwise.\r\n\t */","meta":{"range":[54369,54476],"filename":"CB_Speaker.js","lineno":322,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100035704","name":"CB_Speaker.getAudioFileSpritesPool","type":"FunctionExpression","paramnames":[]}},"description":"<p>Returns the current {@link CB_AudioFileSpritesPool} object (if any).</p>","kind":"function","returns":[{"type":{"names":["CB_AudioFileSpritesPool","null"]},"description":"<p>Returns the current {@link CB_AudioFileSpritesPool} object (if any) or null otherwise.</p>"}],"name":"getAudioFileSpritesPool","longname":"CB_Speaker.getAudioFileSpritesPool","memberof":"CB_Speaker","scope":"static"},{"comment":"/**\r\n\t * Returns the [timbre.js]{@link https://mohayonao.github.io/timbre.js/} object (if any). Useful for functional processing and synthesizing audio.\r\n\t * @function\r\n\t * @returns {Object|null} Returns the current [timbre.js]{@link https://mohayonao.github.io/timbre.js/} object (if any) or null otherwise.\r\n\t * @todo timbre.js should have into account the CB_Speaker._volume\r\n\t */","meta":{"range":[54873,54968],"filename":"CB_Speaker.js","lineno":334,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100035717","name":"CB_Speaker.getTimbreJSObject","type":"FunctionExpression","paramnames":[]}},"description":"<p>Returns the [timbre.js]{@link https://mohayonao.github.io/timbre.js/} object (if any). Useful for functional processing and synthesizing audio.</p>","kind":"function","returns":[{"type":{"names":["Object","null"]},"description":"<p>Returns the current [timbre.js]{@link https://mohayonao.github.io/timbre.js/} object (if any) or null otherwise.</p>"}],"todo":["timbre.js should have into account the CB_Speaker._volume"],"name":"getTimbreJSObject","longname":"CB_Speaker.getTimbreJSObject","memberof":"CB_Speaker","scope":"static"},{"comment":"/**\r\n\t * Returns a new [Band.js]{@link https://github.com/meenie/band.js/} object (if possible). Useful for managing music composition.\r\n\t * @function\r\n\t * @returns {Object|null} Returns a new [Band.js]{@link https://github.com/meenie/band.js/} object (if possible) or null otherwise.\r\n\t * @todo Band.js should have into account the CB_Speaker._volume\r\n\t */","meta":{"range":[55339,55462],"filename":"CB_Speaker.js","lineno":346,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100035730","name":"CB_Speaker.getBandJSObject","type":"FunctionExpression","paramnames":[]}},"description":"<p>Returns a new [Band.js]{@link https://github.com/meenie/band.js/} object (if possible). Useful for managing music composition.</p>","kind":"function","returns":[{"type":{"names":["Object","null"]},"description":"<p>Returns a new [Band.js]{@link https://github.com/meenie/band.js/} object (if possible) or null otherwise.</p>"}],"todo":["Band.js should have into account the CB_Speaker._volume"],"name":"getBandJSObject","longname":"CB_Speaker.getBandJSObject","memberof":"CB_Speaker","scope":"static"},{"comment":"/**\r\n\t * Returns the [jsfx]{@link https://github.com/loov/jsfx} object (if any). Useful for managing sound effects generation.\r\n\t * @function\r\n\t * @returns {Object|null} Returns the current [jsfx]{@link https://github.com/loov/jsfx} object (if any) or null otherwise.\r\n\t * @todo jsfx should have into account the CB_Speaker._volume\r\n\t */","meta":{"range":[55813,55900],"filename":"CB_Speaker.js","lineno":358,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\audio","code":{"id":"astnode100035747","name":"CB_Speaker.getJsfxObject","type":"FunctionExpression","paramnames":[]}},"description":"<p>Returns the [jsfx]{@link https://github.com/loov/jsfx} object (if any). Useful for managing sound effects generation.</p>","kind":"function","returns":[{"type":{"names":["Object","null"]},"description":"<p>Returns the current [jsfx]{@link https://github.com/loov/jsfx} object (if any) or null otherwise.</p>"}],"todo":["jsfx should have into account the CB_Speaker._volume"],"name":"getJsfxObject","longname":"CB_Speaker.getJsfxObject","memberof":"CB_Speaker","scope":"static"},{"comment":"/**\r\n * @file Canvas management (including emulation fallbacks). Contains the {@link CB_Canvas} class.\r\n * @author Joan Alba Maldonado <workindalian@gmail.com>\r\n */","meta":{"filename":"CB_Canvas.js","lineno":1,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image\\canvas","code":{}},"name":"CrossBase/audiovisual/image/canvas/CB_Canvas.js","kind":"file","description":"<p>Canvas management (including emulation fallbacks). Contains the {@link CB_Canvas} class.</p>","preserveName":true,"author":["Joan Alba Maldonado <workindalian@gmail.com>"],"longname":"CrossBase/audiovisual/image/canvas/CB_Canvas.js","scope":"global"},{"comment":"/**\r\n * Class to manage a canvas.\r\n * @class\r\n * @classdesc Class to manage a canvas. For clients which do not support native [canvas]{@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/canvas}, it provides [Adobe Flash (formerly Macromedia Flash)]{@link https://en.wikipedia.org/wiki/Adobe_Flash_Player} emulation with [FlashCanvas]{@link https://github.com/everlaat/flashcanvas}, Microsoft Silverlight emulation with [SLCanvas]{@link https://slcanvas.codeplex.com/}, VML emulation with [ExplorerCanvas]{@link https://github.com/arv/explorercanvas} (reinforced with [canvas-text]{@link https://github.com/PhenX/canvas-text}) and DHTML (DOM elements) emulation with [CanBox]{@link https://github.com/robertinglin/CanBox}.\r\n\tNOTE:\r\n\t\tTo make the VML emulation work without errors (using [ExplorerCanvas]{@link https://github.com/arv/explorercanvas}), it is recommended to always load [FlashCanvas]{@link https://github.com/everlaat/flashcanvas} (which already includes [ExplorerCanvas]{@link https://github.com/arv/explorercanvas}) in your HTML code (without using lazy-load, as [ExplorerCanvas]{@link https://github.com/arv/explorercanvas} does not support it). This is recommended even when we are not going to use [Adobe Flash (formerly Macromedia Flash)]{@link https://en.wikipedia.org/wiki/Adobe_Flash_Player} emulation with [FlashCanvas]{@link https://github.com/everlaat/flashcanvas}.\r\n\t\tThis is an example (should be placed before loading the main \"CrossBrowdy\" script):\r\n\t\t\t&lt;!-- Loads FlashCanvas (Flash emulation) before CrossBrowdy. Needed also to use ExplorerCanvas (VML emulation) without problems: --&gt;\r\n\t\t\t&lt;script type=\"text/javascript\" src=\"CrossBrowdy/CrossBase/audiovisual/image/canvas/FlashCanvas/pro/bin/flashcanvas.js\"&gt;&lt;/script&gt;&lt;!-- FlashCanvas/ExplorerCanvas do not support lazy load. --&gt;\r\n * @param {string} canvasId - The desired ID for the canvas.\r\n * @param {('2d'|'webgl'|'experimental-webgl'|'webgl2'|'experimental-webgl2'|'bitmaprenderer')} [contextType='2d'] - The contextType desired by default. More information: [HTMLCanvasElement.getContext]{@link https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement/getContext}. Note that most emulation methods will only support \"2d\".\r\n * @param {integer} [canvasWidth={@link CB_Canvas.WIDTH_DEFAULT}] - The desired width (horizontal size) in pixels for the canvas.\r\n * @param {integer} [canvasHeight={@link CB_Canvas.HEIGHT_DEFAULT}] - The desired height (vertical size) in pixels for the canvas.\r\n * @param {function} [onLoad] - Callback function that will be called when the canvas is finally loaded. It will not receive parameters, being \"this\" the {@link CB_Canvas} object itself.\r\n * @param {function} [onError] - Callback function that will be called when there is an error creating or loading the canvas. Being \"this\" the {@link CB_Canvas} object itself, the unique parameter received will be a string describing the error (if it could be determined).\r\n * @param {Element} [canvasParent=document.body] - The parent element desired to adopt the canvas.\r\n * @param {array} [alternativeCanvasEmulationPreferredOrder={@link CB_Configuration.CrossBase.CB_Canvas_PREFERRED_EMULATION_METHODS}] - Numeric array listing the desired alternative emulation methods for rendering the canvas, in order of preference. Supported emulation methods: \"FLASH\", \"VML\", \"DHTML\" and \"SILVERLIGHT\".\r\n * @param {boolean} [forceFirstEmulationMethod=false] - If set to true, it will force to use the first alternative emulation method desired (even when this alternative emulation method could be not supported and even when native [canvas]{@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/canvas} support could be supported).\r\n * @param {boolean} [addOtherMethods=true] - If set to true, it will add other alternative methods (if any is missing) at the end of the desired alternative emulation methods so they will also be checked and used if the previous ones are not finally used. The order they will be added will be the one used in the {@link CB_Configuration.CrossBase.CB_Canvas_PREFERRED_EMULATION_METHODS} constant.\r\n * @param {boolean} [allowFlashCanvasLocally={@link CB_Configuration.CrossBase.FLASHCANVAS_ALLOW_RUN_LOCALLY_DEFAULT}] - If set to true, it will allow to use [Adobe Flash (formerly Macromedia Flash)]{@link https://en.wikipedia.org/wiki/Adobe_Flash_Player} emulation (if needed) even when it is running locally. Uses the {@link CB_Client.isRunningLocally} function internally.\r\n * @returns {CB_Canvas} Returns a new {@link CB_Canvas} object.\r\n */","meta":{"range":[4776,6439],"filename":"CB_Canvas.js","lineno":29,"columnno":4,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image\\canvas","code":{"id":"astnode100035762","name":"CB_Canvas","type":"FunctionExpression"},"vars":{"this._parent":"CB_Canvas#_parent","this._id":"CB_Canvas#_id","this.canvas":"CB_Canvas#canvas","this.context":"CB_Canvas#context","this._contextType":"CB_Canvas#_contextType","this._supported":"CB_Canvas#_supported","this._width":"CB_Canvas#_width","this._height":"CB_Canvas#_height","this._mode":"CB_Canvas#_mode","this._ready":"CB_Canvas#_ready","this._loading":"CB_Canvas#_loading"}},"description":"<p>Class to manage a canvas.</p>","kind":"class","classdesc":"<p>Class to manage a canvas. For clients which do not support native [canvas]{@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/canvas}, it provides [Adobe Flash (formerly Macromedia Flash)]{@link https://en.wikipedia.org/wiki/Adobe_Flash_Player} emulation with [FlashCanvas]{@link https://github.com/everlaat/flashcanvas}, Microsoft Silverlight emulation with [SLCanvas]{@link https://slcanvas.codeplex.com/}, VML emulation with [ExplorerCanvas]{@link https://github.com/arv/explorercanvas} (reinforced with [canvas-text]{@link https://github.com/PhenX/canvas-text}) and DHTML (DOM elements) emulation with [CanBox]{@link https://github.com/robertinglin/CanBox}.<br> NOTE:<br> To make the VML emulation work without errors (using [ExplorerCanvas]{@link https://github.com/arv/explorercanvas}), it is recommended to always load [FlashCanvas]{@link https://github.com/everlaat/flashcanvas} (which already includes [ExplorerCanvas]{@link https://github.com/arv/explorercanvas}) in your HTML code (without using lazy-load, as [ExplorerCanvas]{@link https://github.com/arv/explorercanvas} does not support it). This is recommended even when we are not going to use [Adobe Flash (formerly Macromedia Flash)]{@link https://en.wikipedia.org/wiki/Adobe_Flash_Player} emulation with [FlashCanvas]{@link https://github.com/everlaat/flashcanvas}.<br> This is an example (should be placed before loading the main &quot;CrossBrowdy&quot; script):<br> &lt;!-- Loads FlashCanvas (Flash emulation) before CrossBrowdy. Needed also to use ExplorerCanvas (VML emulation) without problems: --&gt;<br> &lt;script type=&quot;text/javascript&quot; src=&quot;CrossBrowdy/CrossBase/audiovisual/image/canvas/FlashCanvas/pro/bin/flashcanvas.js&quot;&gt;&lt;/script&gt;&lt;!-- FlashCanvas/ExplorerCanvas do not support lazy load. --&gt;</p>","params":[{"type":{"names":["string"]},"description":"<p>The desired ID for the canvas.</p>","name":"canvasId"},{"type":{"names":["'2d'","'webgl'","'experimental-webgl'","'webgl2'","'experimental-webgl2'","'bitmaprenderer'"]},"optional":true,"defaultvalue":"'2d'","description":"<p>The contextType desired by default. More information: [HTMLCanvasElement.getContext]{@link https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement/getContext}. Note that most emulation methods will only support &quot;2d&quot;.</p>","name":"contextType"},{"type":{"names":["integer"]},"optional":true,"defaultvalue":"{@link CB_Canvas.WIDTH_DEFAULT}","description":"<p>The desired width (horizontal size) in pixels for the canvas.</p>","name":"canvasWidth"},{"type":{"names":["integer"]},"optional":true,"defaultvalue":"{@link CB_Canvas.HEIGHT_DEFAULT}","description":"<p>The desired height (vertical size) in pixels for the canvas.</p>","name":"canvasHeight"},{"type":{"names":["function"]},"optional":true,"description":"<p>Callback function that will be called when the canvas is finally loaded. It will not receive parameters, being &quot;this&quot; the {@link CB_Canvas} object itself.</p>","name":"onLoad"},{"type":{"names":["function"]},"optional":true,"description":"<p>Callback function that will be called when there is an error creating or loading the canvas. Being &quot;this&quot; the {@link CB_Canvas} object itself, the unique parameter received will be a string describing the error (if it could be determined).</p>","name":"onError"},{"type":{"names":["Element"]},"optional":true,"defaultvalue":"document.body","description":"<p>The parent element desired to adopt the canvas.</p>","name":"canvasParent"},{"type":{"names":["array"]},"optional":true,"defaultvalue":"{@link CB_Configuration.CrossBase.CB_Canvas_PREFERRED_EMULATION_METHODS}","description":"<p>Numeric array listing the desired alternative emulation methods for rendering the canvas, in order of preference. Supported emulation methods: &quot;FLASH&quot;, &quot;VML&quot;, &quot;DHTML&quot; and &quot;SILVERLIGHT&quot;.</p>","name":"alternativeCanvasEmulationPreferredOrder"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If set to true, it will force to use the first alternative emulation method desired (even when this alternative emulation method could be not supported and even when native [canvas]{@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/canvas} support could be supported).</p>","name":"forceFirstEmulationMethod"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":true,"description":"<p>If set to true, it will add other alternative methods (if any is missing) at the end of the desired alternative emulation methods so they will also be checked and used if the previous ones are not finally used. The order they will be added will be the one used in the {@link CB_Configuration.CrossBase.CB_Canvas_PREFERRED_EMULATION_METHODS} constant.</p>","name":"addOtherMethods"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":"{@link CB_Configuration.CrossBase.FLASHCANVAS_ALLOW_RUN_LOCALLY_DEFAULT}","description":"<p>If set to true, it will allow to use [Adobe Flash (formerly Macromedia Flash)]{@link https://en.wikipedia.org/wiki/Adobe_Flash_Player} emulation (if needed) even when it is running locally. Uses the {@link CB_Client.isRunningLocally} function internally.</p>","name":"allowFlashCanvasLocally"}],"returns":[{"type":{"names":["CB_Canvas"]},"description":"<p>Returns a new {@link CB_Canvas} object.</p>"}],"name":"CB_Canvas","longname":"CB_Canvas","scope":"global"},{"comment":"/**\r\n * Default canvas width in pixels.\r\n *\t@constant\r\n * @type {integer}\r\n * @default\r\n */","meta":{"range":[6986,7015],"filename":"CB_Canvas.js","lineno":73,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image\\canvas","code":{"id":"astnode100035882","name":"CB_Canvas.WIDTH_DEFAULT","type":"Literal","value":320,"paramnames":[]}},"description":"<p>Default canvas width in pixels.</p>","kind":"constant","type":{"names":["integer"]},"defaultvalue":320,"name":"WIDTH_DEFAULT","longname":"CB_Canvas.WIDTH_DEFAULT","memberof":"CB_Canvas","scope":"static"},{"comment":"/**\r\n * Default canvas height in pixels.\r\n *\t@constant\r\n * @type {integer}\r\n * @default\r\n */","meta":{"range":[7138,7168],"filename":"CB_Canvas.js","lineno":80,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image\\canvas","code":{"id":"astnode100035888","name":"CB_Canvas.HEIGHT_DEFAULT","type":"Literal","value":240,"paramnames":[]}},"description":"<p>Default canvas height in pixels.</p>","kind":"constant","type":{"names":["integer"]},"defaultvalue":240,"name":"HEIGHT_DEFAULT","longname":"CB_Canvas.HEIGHT_DEFAULT","memberof":"CB_Canvas","scope":"static"},{"comment":"/**\r\n * Tells whether the current client needs canvas emulation or not. Uses {@link CB_Client.supportsCanvas} internally.\r\n * @function\r\n * @returns {boolean} Returns whether the current client needs canvas emulation or not.\r\n */","meta":{"range":[8940,9021],"filename":"CB_Canvas.js","lineno":126,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image\\canvas","code":{"id":"astnode100036024","name":"CB_Canvas.needsEmulation","type":"FunctionExpression","paramnames":[]}},"description":"<p>Tells whether the current client needs canvas emulation or not. Uses {@link CB_Client.supportsCanvas} internally.</p>","kind":"function","returns":[{"type":{"names":["boolean"]},"description":"<p>Returns whether the current client needs canvas emulation or not.</p>"}],"name":"needsEmulation","longname":"CB_Canvas.needsEmulation","memberof":"CB_Canvas","scope":"static"},{"comment":"/**\r\n * Calculates and returns the best alternative canvas emulation.\r\n * @function\r\n * @param {array|string} [preferredOrder={@link CB_Configuration.CrossBase.CB_Canvas_PREFERRED_EMULATION_METHODS}] - Numeric array listing the desired alternative emulation methods for rendering the canvas, in order of preference. Possible emulation methods: \"FLASH\", \"VML\", \"DHTML\" and \"SILVERLIGHT\". It can also be a string with the unique desired canvas emulation method or with \"NO\" or \"NONE\" value (meaning no emulation method is desired and then the returning value will always be \"NONE\").\r\n * @param {boolean} [forceFirstEmulationMethod=false] - If set to true, it will force to return the first alternative emulation method desired which is detected as supported without being too strict (even when this alternative emulation method could be not really supported and even when native [canvas]{@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/canvas} support could be supported).\r\n * @param {boolean} [addOtherMethods=true] - If set to true, it will add other alternative methods (if any is missing) at the end of the desired alternative emulation methods so they will also be checked and used if the previous ones are not finally used. The order they will be added will be the one used in the {@link CB_Configuration.CrossBase.CB_Canvas_PREFERRED_EMULATION_METHODS} constant.\r\n * @param {boolean} [allowFlashCanvasLocally={@link CB_Configuration.CrossBase.FLASHCANVAS_ALLOW_RUN_LOCALLY_DEFAULT}] - If set to true, it will allow to use [Adobe Flash (formerly Macromedia Flash)]{@link https://en.wikipedia.org/wiki/Adobe_Flash_Player} emulation (if needed) even when it is running locally. Uses the {@link CB_Client.isRunningLocally} function internally.\r\n * @returns {'NONE'|'FLASH'|'SILVERLIGHT'|'VML'|'DHTML'} Returns \"NONE\" if no canvas emulation is needed/supported (and no emulation method is forced). Otherwise, it returns the best emulation method calculated (\"FLASH\", \"SILVERLIGHT\", \"VML\" or \"DHTML\").\r\n */","meta":{"range":[11056,14338],"filename":"CB_Canvas.js","lineno":141,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image\\canvas","code":{"id":"astnode100036037","name":"CB_Canvas.bestEmulation","type":"FunctionExpression","paramnames":["preferredOrder","forceFirstEmulationMethod","addOtherMethods","allowFlashCanvasLocally"]},"vars":{"addOtherMethods":"CB_Canvas.bestEmulation~addOtherMethods","allowFlashCanvasLocally":"CB_Canvas.bestEmulation~allowFlashCanvasLocally","allEmulationMethods":"CB_Canvas.bestEmulation~allEmulationMethods","preferredOrder":"CB_Canvas.bestEmulation~preferredOrder","allEmulationMethodsLength":"CB_Canvas.bestEmulation~allEmulationMethodsLength","x":"CB_Canvas.bestEmulation~x","preferredOrder[undefined]":"CB_Canvas.bestEmulation~preferredOrder.undefined]","preferredOrderLength":"CB_Canvas.bestEmulation~preferredOrderLength","chosenEmulationMethod":"CB_Canvas.bestEmulation~chosenEmulationMethod","currentEmulationMethod":"CB_Canvas.bestEmulation~currentEmulationMethod"}},"description":"<p>Calculates and returns the best alternative canvas emulation.</p>","kind":"function","params":[{"type":{"names":["array","string"]},"optional":true,"defaultvalue":"{@link CB_Configuration.CrossBase.CB_Canvas_PREFERRED_EMULATION_METHODS}","description":"<p>Numeric array listing the desired alternative emulation methods for rendering the canvas, in order of preference. Possible emulation methods: &quot;FLASH&quot;, &quot;VML&quot;, &quot;DHTML&quot; and &quot;SILVERLIGHT&quot;. It can also be a string with the unique desired canvas emulation method or with &quot;NO&quot; or &quot;NONE&quot; value (meaning no emulation method is desired and then the returning value will always be &quot;NONE&quot;).</p>","name":"preferredOrder"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If set to true, it will force to return the first alternative emulation method desired which is detected as supported without being too strict (even when this alternative emulation method could be not really supported and even when native [canvas]{@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/canvas} support could be supported).</p>","name":"forceFirstEmulationMethod"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":true,"description":"<p>If set to true, it will add other alternative methods (if any is missing) at the end of the desired alternative emulation methods so they will also be checked and used if the previous ones are not finally used. The order they will be added will be the one used in the {@link CB_Configuration.CrossBase.CB_Canvas_PREFERRED_EMULATION_METHODS} constant.</p>","name":"addOtherMethods"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":"{@link CB_Configuration.CrossBase.FLASHCANVAS_ALLOW_RUN_LOCALLY_DEFAULT}","description":"<p>If set to true, it will allow to use [Adobe Flash (formerly Macromedia Flash)]{@link https://en.wikipedia.org/wiki/Adobe_Flash_Player} emulation (if needed) even when it is running locally. Uses the {@link CB_Client.isRunningLocally} function internally.</p>","name":"allowFlashCanvasLocally"}],"returns":[{"type":{"names":["'NONE'","'FLASH'","'SILVERLIGHT'","'VML'","'DHTML'"]},"description":"<p>Returns &quot;NONE&quot; if no canvas emulation is needed/supported (and no emulation method is forced). Otherwise, it returns the best emulation method calculated (&quot;FLASH&quot;, &quot;SILVERLIGHT&quot;, &quot;VML&quot; or &quot;DHTML&quot;).</p>"}],"name":"bestEmulation","longname":"CB_Canvas.bestEmulation","memberof":"CB_Canvas","scope":"static"},{"comment":"/**\r\n * Tells whether the current client is compatible with a given canvas emulation method or not.\r\n * @function\r\n * @param {string} emulationMethod - Emulation method we want to check. Possible emulation methods: \"FLASH\", \"VML\", \"DHTML\" and \"SILVERLIGHT\".\r\n * @param {boolean} [strictMode=true] - If set to true, the compatibility will be checked more carefully. If set to false (not recommended), the method could return true even when sometimes the canvas emulation method is not totally supported by the current client.\r\n * @returns {boolean} Returns whether the current client is compatible with the given canvas emulation method or not.\r\n */","meta":{"range":[14998,17808],"filename":"CB_Canvas.js","lineno":215,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image\\canvas","code":{"id":"astnode100036264","name":"CB_Canvas.supportsEmulationMethod","type":"FunctionExpression","paramnames":["emulationMethod","strictMode"]},"vars":{"strictMode":"CB_Canvas.supportsEmulationMethod~strictMode","emulationMethod":"CB_Canvas.supportsEmulationMethod~emulationMethod","isAvailable":"CB_Canvas.supportsEmulationMethod~isAvailable","FlashCanvas":"CB_Canvas.supportsEmulationMethod~FlashCanvas","slcanvas":"CB_Canvas.supportsEmulationMethod~slcanvas","G_vmlCanvasManager":"CB_Canvas.supportsEmulationMethod~G_vmlCanvasManager","_CanboxManager":"CB_Canvas.supportsEmulationMethod~_CanboxManager"}},"description":"<p>Tells whether the current client is compatible with a given canvas emulation method or not.</p>","kind":"function","params":[{"type":{"names":["string"]},"description":"<p>Emulation method we want to check. Possible emulation methods: &quot;FLASH&quot;, &quot;VML&quot;, &quot;DHTML&quot; and &quot;SILVERLIGHT&quot;.</p>","name":"emulationMethod"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":true,"description":"<p>If set to true, the compatibility will be checked more carefully. If set to false (not recommended), the method could return true even when sometimes the canvas emulation method is not totally supported by the current client.</p>","name":"strictMode"}],"returns":[{"type":{"names":["boolean"]},"description":"<p>Returns whether the current client is compatible with the given canvas emulation method or not.</p>"}],"name":"supportsEmulationMethod","longname":"CB_Canvas.supportsEmulationMethod","memberof":"CB_Canvas","scope":"static"},{"comment":"/**\r\n * Sets the desired identifier (ID) of the canvas element. Since this method is called by the constructor already, it is not needed to be called unless the canvas element wants to be defined again through the {@link CB_Canvas#set} method. Note that changing the ID after the canvas has been set could lead to some problems when using certain emulation methods so it is not recommended.\r\n * @function\r\n * @param {string} canvasId - Identifier (ID) for the canvas element.\r\n */","meta":{"range":[18298,18553],"filename":"CB_Canvas.js","lineno":303,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image\\canvas","code":{"id":"astnode100036499","name":"CB_Canvas.prototype.setId","type":"FunctionExpression","paramnames":["canvasId"]},"vars":{"this._id":"CB_Canvas#_id"}},"description":"<p>Sets the desired identifier (ID) of the canvas element. Since this method is called by the constructor already, it is not needed to be called unless the canvas element wants to be defined again through the {@link CB_Canvas#set} method. Note that changing the ID after the canvas has been set could lead to some problems when using certain emulation methods so it is not recommended.</p>","kind":"function","params":[{"type":{"names":["string"]},"description":"<p>Identifier (ID) for the canvas element.</p>","name":"canvasId"}],"name":"setId","longname":"CB_Canvas#setId","memberof":"CB_Canvas","scope":"instance"},{"comment":"/**\r\n * Returns the identifier (ID) of the canvas element.\r\n * @function\r\n * @returns {string} Returns the identifier (ID) of the canvas element.\r\n */","meta":{"range":[18713,18776],"filename":"CB_Canvas.js","lineno":318,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image\\canvas","code":{"id":"astnode100036549","name":"CB_Canvas.prototype.getId","type":"FunctionExpression","paramnames":[]}},"description":"<p>Returns the identifier (ID) of the canvas element.</p>","kind":"function","returns":[{"type":{"names":["string"]},"description":"<p>Returns the identifier (ID) of the canvas element.</p>"}],"name":"getId","longname":"CB_Canvas#getId","memberof":"CB_Canvas","scope":"instance"},{"comment":"/**\r\n * Defines the canvas element. Since this method is called by the constructor already, it is not needed to be called unless the canvas element wants to be defined again.\r\n * @function\r\n * @param {string} canvasId - The desired ID for the canvas.\r\n * @param {integer} [canvasWidth={@link CB_Canvas.WIDTH_DEFAULT}] - The desired width (horizontal size) in pixels for the canvas.\r\n * @param {integer} [canvasHeight={@link CB_Canvas.HEIGHT_DEFAULT}] - The desired height (vertical size) in pixels for the canvas.\r\n * @param {function} [onLoad] - Callback function that will be called when the canvas is finally loaded. It will not receive parameters, being \"this\" the {@link CB_Canvas} object itself.\r\n * @param {function} [onError] - Callback function that will be called when there is an error creating or loading the canvas. Being \"this\" the {@link CB_Canvas} object itself, the unique parameter received will be a string describing the error (if it could be determined).\r\n * @param {string} [alternativeCanvasEmulation={@link CB_Canvas.bestEmulation}()] - Emulation method we want to use in the case that the native [canvas]{@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/canvas} is not supported or if the \"forceEmulation\" parameter is set to true. Possible emulation methods: \"FLASH\", \"VML\", \"DHTML\" and \"SILVERLIGHT\".\r\n * @param {boolean} [forceEmulation=false] - If set to true, it will force to use the emulation method defined in the \"alternativeCanvasEmulation\" parameter (even when this alternative emulation method could be not supported and even when native [canvas]{@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/canvas} support could be supported).\r\n */","meta":{"range":[20496,29450],"filename":"CB_Canvas.js","lineno":335,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image\\canvas","code":{"id":"astnode100036562","name":"CB_Canvas.prototype.set","type":"FunctionExpression","paramnames":["canvasId","canvasWidth","canvasHeight","onLoad","onError","alternativeCanvasEmulation","forceEmulation"]},"vars":{"canvasWidth":"CB_Canvas#set~canvasWidth","canvasHeight":"CB_Canvas#set~canvasHeight","alternativeCanvasEmulation":"CB_Canvas#set~alternativeCanvasEmulation","this.canvas.action":"CB_Canvas#canvas.action","":null,"this._ready":"CB_Canvas#_ready","this._loading":"CB_Canvas#_loading","this.canvas":"CB_Canvas#canvas","this._mode":"CB_Canvas#_mode","needsEmulation":"CB_Canvas#set~needsEmulation","tagName":"CB_Canvas#set~tagName","this.canvas.innerHTML":"CB_Canvas#canvas.innerHTML","that":"CB_Canvas#set~that","functionOnLoad":"CB_Canvas#set~functionOnLoad","SLCanvasDiv":"CB_Canvas#set~SLCanvasDiv","SLCanvasDivForeground":"CB_Canvas#set~SLCanvasDivForeground","SLCanvasDivForeground.style.position":"CB_Canvas#set~SLCanvasDivForeground.style.position","SLCanvasDivForeground.style.padding":"CB_Canvas#set~SLCanvasDivForeground.style.padding","SLCanvasDivForeground.style.filter":"CB_Canvas#set~SLCanvasDivForeground.style.filter","SLCanvasDivForeground.style.backgroundColor":"CB_Canvas#set~SLCanvasDivForeground.style.backgroundColor","SLCanvasDivForeground.style.border":"CB_Canvas#set~SLCanvasDivForeground.style.border","SLCanvasDivForeground.innerHTML":"CB_Canvas#set~SLCanvasDivForeground.innerHTML"}},"description":"<p>Defines the canvas element. Since this method is called by the constructor already, it is not needed to be called unless the canvas element wants to be defined again.</p>","kind":"function","params":[{"type":{"names":["string"]},"description":"<p>The desired ID for the canvas.</p>","name":"canvasId"},{"type":{"names":["integer"]},"optional":true,"defaultvalue":"{@link CB_Canvas.WIDTH_DEFAULT}","description":"<p>The desired width (horizontal size) in pixels for the canvas.</p>","name":"canvasWidth"},{"type":{"names":["integer"]},"optional":true,"defaultvalue":"{@link CB_Canvas.HEIGHT_DEFAULT}","description":"<p>The desired height (vertical size) in pixels for the canvas.</p>","name":"canvasHeight"},{"type":{"names":["function"]},"optional":true,"description":"<p>Callback function that will be called when the canvas is finally loaded. It will not receive parameters, being &quot;this&quot; the {@link CB_Canvas} object itself.</p>","name":"onLoad"},{"type":{"names":["function"]},"optional":true,"description":"<p>Callback function that will be called when there is an error creating or loading the canvas. Being &quot;this&quot; the {@link CB_Canvas} object itself, the unique parameter received will be a string describing the error (if it could be determined).</p>","name":"onError"},{"type":{"names":["string"]},"optional":true,"defaultvalue":"{@link CB_Canvas.bestEmulation}()","description":"<p>Emulation method we want to use in the case that the native [canvas]{@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/canvas} is not supported or if the &quot;forceEmulation&quot; parameter is set to true. Possible emulation methods: &quot;FLASH&quot;, &quot;VML&quot;, &quot;DHTML&quot; and &quot;SILVERLIGHT&quot;.</p>","name":"alternativeCanvasEmulation"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If set to true, it will force to use the emulation method defined in the &quot;alternativeCanvasEmulation&quot; parameter (even when this alternative emulation method could be not supported and even when native [canvas]{@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/canvas} support could be supported).</p>","name":"forceEmulation"}],"name":"set","longname":"CB_Canvas#set","memberof":"CB_Canvas","scope":"instance"},{"comment":"/**\r\n * Alias for {@link CB_Canvas#prepareContext}.\r\n * @function CB_Canvas.prototype.normalizeContext\r\n * @see {@link CB_Canvas#prepareContext}\r\n */","meta":{"filename":"CB_Canvas.js","lineno":536,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image\\canvas","code":{}},"description":"<p>Alias for {@link CB_Canvas#prepareContext}.</p>","kind":"function","name":"normalizeContext","see":["{@link CB_Canvas#prepareContext}"],"memberof":"CB_Canvas","longname":"CB_Canvas#normalizeContext","scope":"instance"},{"comment":"/**\r\n * Provides the canvas [context]{@link https://developer.mozilla.org/en-US/docs/Web/API/RenderingContext} with some methods and properties, in case it needs it (as some canvas emulation methods lack of some methods and properties). Since this method is called by the {@link CB_Canvas#set} method already (and this one is called by the constructor automatically), it is not needed to be called again normally.\r\n * @function\r\n * @param {RenderingContext|Object} [context={@link CB_Canvas#getContext}()] - The [context]{@link https://developer.mozilla.org/en-US/docs/Web/API/RenderingContext} object that we want to prepare (different type if a canvas emulation method is being used). If not defined, calls the {@link CB_Canvas#getContext} method internally.\r\n * @returns {RenderingContext|Object} Returns the canvas [context]{@link https://developer.mozilla.org/en-US/docs/Web/API/RenderingContext} (different type if a canvas emulation method is being used).\r\n * @todo Add more methods and properties needed by some emulation methods.\r\n */","meta":{"range":[30660,32268],"filename":"CB_Canvas.js","lineno":548,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image\\canvas","code":{"id":"astnode100037373","name":"CB_Canvas.prototype.prepareContext","type":"AssignmentExpression","value":"CB_Canvas.prototype.normalizeContext","paramnames":[]}},"description":"<p>Provides the canvas [context]{@link https://developer.mozilla.org/en-US/docs/Web/API/RenderingContext} with some methods and properties, in case it needs it (as some canvas emulation methods lack of some methods and properties). Since this method is called by the {@link CB_Canvas#set} method already (and this one is called by the constructor automatically), it is not needed to be called again normally.</p>","kind":"function","params":[{"type":{"names":["RenderingContext","Object"]},"optional":true,"defaultvalue":"{@link CB_Canvas#getContext}()","description":"<p>The [context]{@link https://developer.mozilla.org/en-US/docs/Web/API/RenderingContext} object that we want to prepare (different type if a canvas emulation method is being used). If not defined, calls the {@link CB_Canvas#getContext} method internally.</p>","name":"context"}],"returns":[{"type":{"names":["RenderingContext","Object"]},"description":"<p>Returns the canvas [context]{@link https://developer.mozilla.org/en-US/docs/Web/API/RenderingContext} (different type if a canvas emulation method is being used).</p>"}],"todo":["Add more methods and properties needed by some emulation methods."],"name":"prepareContext","longname":"CB_Canvas#prepareContext","memberof":"CB_Canvas","scope":"instance"},{"comment":"/**\r\n * Returns the canvas element (if any).\r\n * @function\r\n * @returns {Element|null} Returns the canvas element (if any). If not found, null will be returned.\r\n */","meta":{"range":[32443,32515],"filename":"CB_Canvas.js","lineno":601,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image\\canvas","code":{"id":"astnode100037507","name":"CB_Canvas.prototype.get","type":"FunctionExpression","paramnames":[]}},"description":"<p>Returns the canvas element (if any).</p>","kind":"function","returns":[{"type":{"names":["Element","null"]},"description":"<p>Returns the canvas element (if any). If not found, null will be returned.</p>"}],"name":"get","longname":"CB_Canvas#get","memberof":"CB_Canvas","scope":"instance"},{"comment":"/**\r\n * Defines and returns the canvas [context]{@link https://developer.mozilla.org/en-US/docs/Web/API/RenderingContext}. It could call the {@link CB_Canvas#prepareContext} method internally.\r\n * @function\r\n * @param {('2d'|'webgl'|'experimental-webgl'|'webgl2'|'experimental-webgl2'|'bitmaprenderer')} [contextType=CB_Canvas#._contextType|'2d'] - The [context]{@link https://developer.mozilla.org/en-US/docs/Web/API/RenderingContext} type desired. More information: [HTMLCanvasElement.getContext]{@link https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement/getContext}. Note that most emulation methods will only support \"2d\".\r\n * @returns {RenderingContext|Object} Returns the canvas [context]{@link https://developer.mozilla.org/en-US/docs/Web/API/RenderingContext} (different type if a canvas emulation method is being used).\r\n */","meta":{"range":[33375,34453],"filename":"CB_Canvas.js","lineno":613,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image\\canvas","code":{"id":"astnode100037522","name":"CB_Canvas.prototype.getContext","type":"FunctionExpression","paramnames":["contextType"]},"vars":{"contextType":"CB_Canvas#getContext~contextType","this.context":"CB_Canvas#context"}},"description":"<p>Defines and returns the canvas [context]{@link https://developer.mozilla.org/en-US/docs/Web/API/RenderingContext}. It could call the {@link CB_Canvas#prepareContext} method internally.</p>","kind":"function","params":[{"type":{"names":["'2d'","'webgl'","'experimental-webgl'","'webgl2'","'experimental-webgl2'","'bitmaprenderer'"]},"optional":true,"defaultvalue":"CB_Canvas#._contextType|'2d'","description":"<p>The [context]{@link https://developer.mozilla.org/en-US/docs/Web/API/RenderingContext} type desired. More information: [HTMLCanvasElement.getContext]{@link https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement/getContext}. Note that most emulation methods will only support &quot;2d&quot;.</p>","name":"contextType"}],"returns":[{"type":{"names":["RenderingContext","Object"]},"description":"<p>Returns the canvas [context]{@link https://developer.mozilla.org/en-US/docs/Web/API/RenderingContext} (different type if a canvas emulation method is being used).</p>"}],"name":"getContext","longname":"CB_Canvas#getContext","memberof":"CB_Canvas","scope":"instance"},{"comment":"/**\r\n * Defines the desired canvas [context]{@link https://developer.mozilla.org/en-US/docs/Web/API/RenderingContext} type. Internally, it only defines the {@link CB_Canvas#._contextType} property.\r\n * @function\r\n * @param {('2d'|'webgl'|'experimental-webgl'|'webgl2'|'experimental-webgl2'|'bitmaprenderer')} [contextType='2d'] - The [context]{@link https://developer.mozilla.org/en-US/docs/Web/API/RenderingContext} type desired. More information: [HTMLCanvasElement.getContext]{@link https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement/getContext}. Note that most emulation methods will only support \"2d\".\r\n * @returns {string} Returns the context type just applied.\r\n */","meta":{"range":[35152,35524],"filename":"CB_Canvas.js","lineno":649,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image\\canvas","code":{"id":"astnode100037632","name":"CB_Canvas.prototype.setContextType","type":"FunctionExpression","paramnames":["contextType"]},"vars":{"contextType":"CB_Canvas#setContextType~contextType","this._contextType":"CB_Canvas#_contextType"}},"description":"<p>Defines the desired canvas [context]{@link https://developer.mozilla.org/en-US/docs/Web/API/RenderingContext} type. Internally, it only defines the {@link CB_Canvas#._contextType} property.</p>","kind":"function","params":[{"type":{"names":["'2d'","'webgl'","'experimental-webgl'","'webgl2'","'experimental-webgl2'","'bitmaprenderer'"]},"optional":true,"defaultvalue":"'2d'","description":"<p>The [context]{@link https://developer.mozilla.org/en-US/docs/Web/API/RenderingContext} type desired. More information: [HTMLCanvasElement.getContext]{@link https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement/getContext}. Note that most emulation methods will only support &quot;2d&quot;.</p>","name":"contextType"}],"returns":[{"type":{"names":["string"]},"description":"<p>Returns the context type just applied.</p>"}],"name":"setContextType","longname":"CB_Canvas#setContextType","memberof":"CB_Canvas","scope":"instance"},{"comment":"/**\r\n * Tells the current canvas [context]{@link https://developer.mozilla.org/en-US/docs/Web/API/RenderingContext} type used. Internally, it returns the value of the {@link CB_Canvas#._contextType} property.\r\n * @function\r\n * @returns {string} Tells the current canvas [context]{@link https://developer.mozilla.org/en-US/docs/Web/API/RenderingContext} type used. More information: [HTMLCanvasElement.getContext]{@link https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement/getContext}.\r\n */","meta":{"range":[36038,36119],"filename":"CB_Canvas.js","lineno":667,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image\\canvas","code":{"id":"astnode100037678","name":"CB_Canvas.prototype.getContextType","type":"FunctionExpression","paramnames":[]}},"description":"<p>Tells the current canvas [context]{@link https://developer.mozilla.org/en-US/docs/Web/API/RenderingContext} type used. Internally, it returns the value of the {@link CB_Canvas#._contextType} property.</p>","kind":"function","returns":[{"type":{"names":["string"]},"description":"<p>Tells the current canvas [context]{@link https://developer.mozilla.org/en-US/docs/Web/API/RenderingContext} type used. More information: [HTMLCanvasElement.getContext]{@link https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement/getContext}.</p>"}],"name":"getContextType","longname":"CB_Canvas#getContextType","memberof":"CB_Canvas","scope":"instance"},{"comment":"/**\r\n * Tells whether the canvas works or not. The internal test used could be not totally reliable.\r\n * @function\r\n * @returns {boolean} Returns whether the canvas works or not. The internal test used could be not totally reliable.\r\n */","meta":{"range":[36366,36897],"filename":"CB_Canvas.js","lineno":678,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image\\canvas","code":{"id":"astnode100037691","name":"CB_Canvas.prototype.isSupported","type":"FunctionExpression","paramnames":[]},"vars":{"this._supported":"CB_Canvas#_supported"}},"description":"<p>Tells whether the canvas works or not. The internal test used could be not totally reliable.</p>","kind":"function","returns":[{"type":{"names":["boolean"]},"description":"<p>Returns whether the canvas works or not. The internal test used could be not totally reliable.</p>"}],"name":"isSupported","longname":"CB_Canvas#isSupported","memberof":"CB_Canvas","scope":"instance"},{"comment":"/**\r\n * Defines the desired canvas width.\r\n * @function\r\n * @param {integer} [canvasWidth={@link CB_Canvas.WIDTH_DEFAULT}] - The desired width (horizontal size) in pixels for the canvas.\r\n * @returns {number} Returns the canvas width (horizontal size) being used in pixels. It could return zero (0) if cannot be calculated.\r\n */","meta":{"range":[37236,38236],"filename":"CB_Canvas.js","lineno":700,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image\\canvas","code":{"id":"astnode100037751","name":"CB_Canvas.prototype.setWidth","type":"FunctionExpression","paramnames":["canvasWidth"]},"vars":{"canvasWidth":"CB_Canvas#setWidth~canvasWidth","canvas":"CB_Canvas#setWidth~canvas","this._width":"CB_Canvas#_width","canvas.style.width":"CB_Canvas#setWidth~canvas.style.width"}},"description":"<p>Defines the desired canvas width.</p>","kind":"function","params":[{"type":{"names":["integer"]},"optional":true,"defaultvalue":"{@link CB_Canvas.WIDTH_DEFAULT}","description":"<p>The desired width (horizontal size) in pixels for the canvas.</p>","name":"canvasWidth"}],"returns":[{"type":{"names":["number"]},"description":"<p>Returns the canvas width (horizontal size) being used in pixels. It could return zero (0) if cannot be calculated.</p>"}],"name":"setWidth","longname":"CB_Canvas#setWidth","memberof":"CB_Canvas","scope":"instance"},{"comment":"/**\r\n * Tells the canvas width (horizontal size) being used in pixels.\r\n * @function\r\n * @returns {number} Returns the canvas width (horizontal size) being used in pixels. It could return zero (0) if cannot be calculated.\r\n */","meta":{"range":[38472,38546],"filename":"CB_Canvas.js","lineno":738,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image\\canvas","code":{"id":"astnode100037826","name":"CB_Canvas.prototype.getWidth","type":"FunctionExpression","paramnames":[]}},"description":"<p>Tells the canvas width (horizontal size) being used in pixels.</p>","kind":"function","returns":[{"type":{"names":["number"]},"description":"<p>Returns the canvas width (horizontal size) being used in pixels. It could return zero (0) if cannot be calculated.</p>"}],"name":"getWidth","longname":"CB_Canvas#getWidth","memberof":"CB_Canvas","scope":"instance"},{"comment":"/**\r\n * Defines the desired canvas height.\r\n * @function\r\n * @param {integer} [canvasHeight={@link CB_Canvas.HEIGHT_DEFAULT}] - The desired height (vertical size) in pixels for the canvas.\r\n * @returns {number} Returns the canvas height (vertical size) being used in pixels. It could return zero (0) if cannot be calculated.\r\n */","meta":{"range":[38886,39922],"filename":"CB_Canvas.js","lineno":750,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image\\canvas","code":{"id":"astnode100037841","name":"CB_Canvas.prototype.setHeight","type":"FunctionExpression","paramnames":["canvasHeight"]},"vars":{"canvasHeight":"CB_Canvas#setHeight~canvasHeight","canvas":"CB_Canvas#setHeight~canvas","this._height":"CB_Canvas#_height","canvas.style.height":"CB_Canvas#setHeight~canvas.style.height"}},"description":"<p>Defines the desired canvas height.</p>","kind":"function","params":[{"type":{"names":["integer"]},"optional":true,"defaultvalue":"{@link CB_Canvas.HEIGHT_DEFAULT}","description":"<p>The desired height (vertical size) in pixels for the canvas.</p>","name":"canvasHeight"}],"returns":[{"type":{"names":["number"]},"description":"<p>Returns the canvas height (vertical size) being used in pixels. It could return zero (0) if cannot be calculated.</p>"}],"name":"setHeight","longname":"CB_Canvas#setHeight","memberof":"CB_Canvas","scope":"instance"},{"comment":"/**\r\n * Tells the canvas height (vertical size) being used in pixels.\r\n * @function\r\n * @returns {number} Returns the canvas height (vertical size) being used in pixels. It could return zero (0) if cannot be calculated.\r\n */","meta":{"range":[40156,40232],"filename":"CB_Canvas.js","lineno":788,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image\\canvas","code":{"id":"astnode100037916","name":"CB_Canvas.prototype.getHeight","type":"FunctionExpression","paramnames":[]}},"description":"<p>Tells the canvas height (vertical size) being used in pixels.</p>","kind":"function","returns":[{"type":{"names":["number"]},"description":"<p>Returns the canvas height (vertical size) being used in pixels. It could return zero (0) if cannot be calculated.</p>"}],"name":"getHeight","longname":"CB_Canvas#getHeight","memberof":"CB_Canvas","scope":"instance"},{"comment":"/**\r\n * Tells the mode used to create the canvas.\r\n * @function\r\n * @returns {'NONE'|'NORMAL'|'FLASH'|'SILVERLIGHT'|'VML'|'DHTML'} Returns the mode used to create the canvas. Returns \"NONE\" if no method is used yet (possible when no method is supported at all or when it is still loading). Returns \"NORMAL\" if native [canvas]{@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/canvas} is used (no canvas emulation method).\r\n */","meta":{"range":[40682,40759],"filename":"CB_Canvas.js","lineno":799,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image\\canvas","code":{"id":"astnode100037931","name":"CB_Canvas.prototype.getMode","type":"FunctionExpression","paramnames":[]}},"description":"<p>Tells the mode used to create the canvas.</p>","kind":"function","returns":[{"type":{"names":["'NONE'","'NORMAL'","'FLASH'","'SILVERLIGHT'","'VML'","'DHTML'"]},"description":"<p>Returns the mode used to create the canvas. Returns &quot;NONE&quot; if no method is used yet (possible when no method is supported at all or when it is still loading). Returns &quot;NORMAL&quot; if native [canvas]{@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/canvas} is used (no canvas emulation method).</p>"}],"name":"getMode","longname":"CB_Canvas#getMode","memberof":"CB_Canvas","scope":"instance"},{"comment":"/**\r\n * Tells whether the canvas is ready to be used or not. Some canvas emulation methods can take some time until they are ready to be used.\r\n * @function\r\n * @returns {boolean} Returns whether the canvas is ready to be used or not.\r\n */","meta":{"range":[41008,41076],"filename":"CB_Canvas.js","lineno":810,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image\\canvas","code":{"id":"astnode100037946","name":"CB_Canvas.prototype.isReady","type":"FunctionExpression","paramnames":[]}},"description":"<p>Tells whether the canvas is ready to be used or not. Some canvas emulation methods can take some time until they are ready to be used.</p>","kind":"function","returns":[{"type":{"names":["boolean"]},"description":"<p>Returns whether the canvas is ready to be used or not.</p>"}],"name":"isReady","longname":"CB_Canvas#isReady","memberof":"CB_Canvas","scope":"instance"},{"comment":"/**\r\n * Tells whether the canvas is loading or not. Some canvas emulation methods can take some time until they finish loading.\r\n * @function\r\n * @returns {boolean} Returns whether the canvas is loading or not.\r\n */","meta":{"range":[41301,41373],"filename":"CB_Canvas.js","lineno":821,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image\\canvas","code":{"id":"astnode100037959","name":"CB_Canvas.prototype.isLoading","type":"FunctionExpression","paramnames":[]}},"description":"<p>Tells whether the canvas is loading or not. Some canvas emulation methods can take some time until they finish loading.</p>","kind":"function","returns":[{"type":{"names":["boolean"]},"description":"<p>Returns whether the canvas is loading or not.</p>"}],"name":"isLoading","longname":"CB_Canvas#isLoading","memberof":"CB_Canvas","scope":"instance"},{"comment":"/**\r\n * Alias for {@link CB_Canvas#clear}.\r\n * @function CB_Canvas.prototype.clearCanvas\r\n * @see {@link CB_Canvas#clear}\r\n */","meta":{"filename":"CB_Canvas.js","lineno":827,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image\\canvas","code":{}},"description":"<p>Alias for {@link CB_Canvas#clear}.</p>","kind":"function","name":"clearCanvas","see":["{@link CB_Canvas#clear}"],"memberof":"CB_Canvas","longname":"CB_Canvas#clearCanvas","scope":"instance"},{"comment":"/**\r\n * Clear the canvas entirely.\r\n * @function\r\n * @param {boolean} [keepTransform=false] - If set to true, it will [save]{@link https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/save} and [restore]{@link https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/restore} the current transformation.\r\n * @param {string} [backgroundFillStyle] - The style used (color, gradient, pattern...) to fill the canvas background. If defined, it will be used as the value for the [fillStyle]{@link https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/fillStyle} property of the [context]{@link https://developer.mozilla.org/en-US/docs/Web/API/RenderingContext} object, internally.\r\n * @returns {boolean} Returns true if the action could be performed or false otherwise.\r\n */","meta":{"range":[42342,43402],"filename":"CB_Canvas.js","lineno":839,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image\\canvas","code":{"id":"astnode100037972","name":"CB_Canvas.prototype.clear","type":"AssignmentExpression","value":"CB_Canvas.prototype.clearCanvas","paramnames":[]}},"description":"<p>Clear the canvas entirely.</p>","kind":"function","params":[{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If set to true, it will [save]{@link https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/save} and [restore]{@link https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/restore} the current transformation.</p>","name":"keepTransform"},{"type":{"names":["string"]},"optional":true,"description":"<p>The style used (color, gradient, pattern...) to fill the canvas background. If defined, it will be used as the value for the [fillStyle]{@link https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/fillStyle} property of the [context]{@link https://developer.mozilla.org/en-US/docs/Web/API/RenderingContext} object, internally.</p>","name":"backgroundFillStyle"}],"returns":[{"type":{"names":["boolean"]},"description":"<p>Returns true if the action could be performed or false otherwise.</p>"}],"name":"clear","longname":"CB_Canvas#clear","memberof":"CB_Canvas","scope":"instance"},{"comment":"/**\r\n * Disables anti-aliasing. Useful to work with image sprites (to avoid problems showing adjacent ones), for example.\r\n * @function\r\n * @param {boolean} [performTranslate=false] - If set to true, it will also call the [transform]{@link https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/transform} method.\r\n * @returns {boolean} Returns true if the action could be performed or false otherwise.\r\n */","meta":{"range":[43840,44482],"filename":"CB_Canvas.js","lineno":888,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image\\canvas","code":{"id":"astnode100038089","name":"CB_Canvas.prototype.disableAntiAliasing","type":"FunctionExpression","paramnames":["performTranslate"]},"vars":{"context":"CB_Canvas#disableAntiAliasing~context","context.khtmlImageSmoothingEnabled":"CB_Canvas#disableAntiAliasing~context.khtmlImageSmoothingEnabled","context.oImageSmoothingEnabled":"CB_Canvas#disableAntiAliasing~context.oImageSmoothingEnabled","context.msImageSmoothingEnabled":"CB_Canvas#disableAntiAliasing~context.msImageSmoothingEnabled","context.webkitImageSmoothingEnabled":"CB_Canvas#disableAntiAliasing~context.webkitImageSmoothingEnabled","context.mozImageSmoothingEnabled":"CB_Canvas#disableAntiAliasing~context.mozImageSmoothingEnabled","context.imageSmoothingEnabled":"CB_Canvas#disableAntiAliasing~context.imageSmoothingEnabled"}},"description":"<p>Disables anti-aliasing. Useful to work with image sprites (to avoid problems showing adjacent ones), for example.</p>","kind":"function","params":[{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If set to true, it will also call the [transform]{@link https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/transform} method.</p>","name":"performTranslate"}],"returns":[{"type":{"names":["boolean"]},"description":"<p>Returns true if the action could be performed or false otherwise.</p>"}],"name":"disableAntiAliasing","longname":"CB_Canvas#disableAntiAliasing","memberof":"CB_Canvas","scope":"instance"},{"comment":"/**\r\n * @file Group of graphic sprites management (2D or 3D). Contains the {@link CB_GraphicSprites} class.\r\n * @author Joan Alba Maldonado <workindalian@gmail.com>\r\n */","meta":{"filename":"CB_GraphicSprites.js","lineno":1,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image","code":{}},"name":"CrossBase/audiovisual/image/CB_GraphicSprites.js","kind":"file","description":"<p>Group of graphic sprites management (2D or 3D). Contains the {@link CB_GraphicSprites} class.</p>","preserveName":true,"author":["Joan Alba Maldonado <workindalian@gmail.com>"],"longname":"CrossBase/audiovisual/image/CB_GraphicSprites.js","scope":"global"},{"comment":"/**\r\n * An object with the information that belongs to a sub-sprite (data which belongs to a certain source) used by a graphic sprite.\r\n * @example\r\n {\r\n\tid: \"my_subsprite_1\",\r\n\tsrc: \"path/to/image.gif\",\r\n\tsrcType: CB_GraphicSprites.SRC_TYPES.IMAGE,\r\n\tsrcLeft: 10,\r\n\tsrcTop: 20,\r\n\tsrcWidth: 64,\r\n\tsrcHeight: 32,\r\n\tleft: 10,\r\n\ttop: 20,\r\n\twidth: 64,\r\n\theight: 32,\r\n\tzIndex: 1,\r\n\tdisabled: false,\r\n\tdata: { datum_1: \"value_1\", datum_2: 2, datum_3: [ \"a\", \"b\", \"c\" ] }\r\n }\r\n * @memberof CB_GraphicSprites\r\n * @typedef {Object} CB_GraphicSprites.SUBSPRITE_OBJECT\r\n * @property {string|*} [id='CB_GraphicSprites.subSprite_' + CB_GraphicSprites._idSubSpriteUnique++] - Identifier of the sub-sprite. It should be unique. It must be a value which evaluates to true. By default, it is generated automatically (with an internal counter).\r\n * @property {*} [src=this.parent.src|\"\"] - Source of origin. Can be a path or identifier of an image, text, bitmap, 3D object, etc. They can be used for any kind of source you may think of, including (but not limited to) one sprites sheet or more, one atlas or more, etc. or even a mix of all of them. If not provided, as default it will use the value from the sprite that it belongs to.\r\n * @property {string} [srcType=this.parent.srcType|{@link CB_GraphicSprites.SRC_TYPES.DEFAULT}] - Type of the source of origin. If not provided, as default it will use the value from the sprite that it belongs to. It should point to a property of the {@link CB_GraphicSprites.SRC_TYPES} object. You can use other values of the {@link CB_GraphicSprites.SRC_TYPES} object or create new ones.\r\n * @property {number} [srcLeft=this.parent.srcLeft|{@link CB_GraphicSprites.LEFT_SOURCE_DEFAULT}] - Left (horizontal) position in the original source (having in mind its real width and height). Unit agnostic (only numeric values are allowed). If not provided, as default it will use the value from the sprite that it belongs to.\r\n * @property {number} [srcTop=this.parent.srcTop|{@link CB_GraphicSprites.TOP_SOURCE_DEFAULT}] - Top (vertical) position in the original source (having in mind its real width and height). Unit agnostic (only numeric values are allowed). If not provided, as default it will use the value from the sprite that it belongs to.\r\n * @property {number} [srcWidth=this.parent.srcWidth|{@link CB_GraphicSprites.WIDTH_SOURCE_DEFAULT}] - Width of the original source. Unit agnostic (only numeric values are allowed). If not provided, as default it will use the value from the sprite that it belongs to.\r\n * @property {number} [srcHeight=this.parent.srcHeight|{@link CB_GraphicSprites.HEIGHT_SOURCE_DEFAULT}] - Height of the original source. Unit agnostic (only numeric values are allowed). If not provided, as default it will use the value from the sprite that it belongs to.\r\n * @property {number} [left={@link CB_GraphicSprites.LEFT_DEFAULT}] - Left (horizontal) position in the destiny (inside the sprite). Unit agnostic (only numeric values are allowed).\r\n * @property {number} [top={@link CB_GraphicSprites.TOP_DEFAULT}] - Top (vertical) position in the destiny (inside the sprite). Unit agnostic (only numeric values are allowed).\r\n * @property {number} [width=this.parent.width|{@link CB_GraphicSprites.WIDTH_DEFAULT}] - Width of the destiny (inside the sprite). Unit agnostic (only numeric values are allowed). If not provided, as default it will use the value from the sprite that it belongs to.\r\n * @property {number} [height=this.parent.height|{@link CB_GraphicSprites.HEIGHT_DEFAULT}] - Height of the destiny (inside the sprite). Unit agnostic (only numeric values are allowed). If not provided, as default it will use the value from the sprite that it belongs to.\r\n * @property {number} [zIndex=this.parent.zIndex|{@link CB_GraphicSprites.ZINDEX_DEFAULT}] - The z-index for the destiny (inside the sprite). Only numeric values which are not zero (0) are allowed. If not provided, as default it will use the value from the sprite that it belongs to. To change the value of this property, use the \"setZIndex\" method of the sub-sprite or the {@link CB_GraphicSprites#setZIndexSubSprite} method (which will call the {@link CB_GraphicSpritesScene#updateSubSpritesByZIndex} method internally).\r\n * @property {boolean} [disabled=this.parent.disabled|false] - Tells whether this sub-sprite is disabled or not. Regardless its value, it will be considered disabled if its sprite parent is also disabled. If not provided, as default it will use the value from the sprite that it belongs to.\r\n * @property {object} [data=CB_combineJSON(this.parent.data, this.data)||this.parent.data||{ 'that' : CB_GraphicSprites.SPRITES_OBJECT, 'getThis' = function() { return this.that; } }] - Object with any additional data desired which can be any kind. If not provided, missing properties as default will use the value from the sprite that it belongs to. It will always have a \"that\" property pointing to the {@link CB_GraphicSprites.SUBSPRITE_OBJECT} object where it belongs to and a function in its \"getThis\" property returning the same value (added automatically). These properties (\"that\" and \"getThis\") cannot be overridden.\r\n * @property {boolean} [byReference=false] - If set to true, when inserting the sub-sprite, the same sub-sprite itself ({@link CB_GraphicSprites.SUBSPRITE_OBJECT} object) will be inserted internally directly without making a copy of itself.\r\n * @property {CB_GraphicSprites.SPRITE_OBJECT} parent - Read-only property pointing to its parent ({@link CB_GraphicSprites.SPRITE_OBJECT} object).\r\n * @property {CB_GraphicSprites} container - Read-only property pointing to the {@link CB_GraphicSprites} object which contains it.\r\n * @property {boolean} isSubSprite - Read-only property which is always set to true to help identify this type of object.\r\n * @property {'subSprite'} type - Read-only property indicating the type of object (always \"subSprite\").\r\n * @property {integer} position - Read-only property indicating the position of this sub-sprite in the array which is set the \"subSprites\" property of the sprite parent ({@link CB_GraphicSprites.SPRITE_OBJECT} object).\r\n * @property {integer} positionByZIndex - Read-only property indicating the position of this sub-sprite in the array which is set the \"subSpritesByZIndex\" property of the sprite parent ({@link CB_GraphicSprites.SPRITE_OBJECT} object).\r\n * @property {integer} time - Property which stores the time in milliseconds when its parent sprite was started being pointed for the last time (time elapsed since the [time origin]{@link https://developer.mozilla.org/en-US/docs/Web/API/DOMHighResTimeStamp#The_time_origin} which was obtained calling the {@link CB_Device.getTiming} function internally). Note that the parent could being not pointed anymore. If it has never being pointed before, it will be set to 0. It normally has the same value as the \"time\" property of its parent object but they can be modified independently.\r\n * @property {function} setTime - Read-only property which is a method that updates the \"time\" property of the sub-sprite (calls {@link CB_GraphicSprites#setTime} internally and returns its returning value). With only one parameter which belongs to the \"time\" parameter of the {@link CB_GraphicSprites#setTime} method.\r\n * @property {function} getTime - Read-only property which is a method that returns the \"time\" property of the sub-sprite (calls {@link CB_GraphicSprites#getTime} internally and returns its returning value). With only one parameter which belongs to the \"returnValueOnFail\" parameter of the {@link CB_GraphicSprites#getTime} method. If the \"time\" property of the sub-sprite is not found, it will use the \"time\" property from its sprite parent.\r\n * @property {function} getTimeElapsed - Read-only property which is a method that returns how many milliseconds elapsed since the sprite was or will be pointed (checking its \"time\" property), comparing with the time given in milliseconds (time elapsed since the [time origin]{@link https://developer.mozilla.org/en-US/docs/Web/API/DOMHighResTimeStamp#The_time_origin} which can be obtained calling the {@link CB_Device.getTiming} function) or with the current one if none is given (calls {@link CB_GraphicSprites#getTimeElapsed} internally and returns its returning value). With only one parameter which belongs to the \"timeToCompare\" parameter of the {@link CB_GraphicSprites#getTimeElapsed} method. If the \"time\" property of the sub-sprite is not found, it will use the \"time\" property from its sprite parent.\r\n * @property {function} getZIndex - Read-only property which is a method that returns the z-index (\"z-index\" property) of the sub-sprite (calls {@link CB_GraphicSprites#getZIndexSubSprite} internally and returns its returning value). With only one parameter which belongs to the \"returnValueOnFail\" parameter of the {@link CB_GraphicSprites#getZIndexSubSprite} method.\r\n * @property {function} setZIndex - Read-only property which is a method to set the z-index (\"z-index\" property) of the sub-sprite (calls {@link CB_GraphicSprites#setZIndexSubSprite} internally and returns its returning value). With only one parameter which belongs to the \"zIndex\" parameter of the {@link CB_GraphicSprites#setZIndexSubSprite} method.\r\n * @property {function} isDisabled - Read-only property which is a method that tells whether the sub-sprite is disabled or not (calls {@link CB_GraphicSprites#isDisabledSubSprite} internally and returns its returning value). With no parameters. A sub-sprite is considered disabled if its sprite parent is disabled (a sprite is considered disabled if its sprites group parent is also disabled).\r\n * @property {function} setDisabled - Read-only property which is a method to disable or enable the sub-sprite (calls {@link CB_GraphicSprites#setDisabledSubSprite} internally and returns its returning value). With three parameters (\"disabled\", \"affectParents\" and \"affectParentsChildren\") which belong to the parameters with the same name of the {@link CB_GraphicSprites#setDisabledSubSprite} method.\r\n */","meta":{"filename":"CB_GraphicSprites.js","lineno":7,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image","code":{}},"description":"<p>An object with the information that belongs to a sub-sprite (data which belongs to a certain source) used by a graphic sprite.</p>","examples":["{\r\n\tid: \"my_subsprite_1\",\r\n\tsrc: \"path/to/image.gif\",\r\n\tsrcType: CB_GraphicSprites.SRC_TYPES.IMAGE,\r\n\tsrcLeft: 10,\r\n\tsrcTop: 20,\r\n\tsrcWidth: 64,\r\n\tsrcHeight: 32,\r\n\tleft: 10,\r\n\ttop: 20,\r\n\twidth: 64,\r\n\theight: 32,\r\n\tzIndex: 1,\r\n\tdisabled: false,\r\n\tdata: { datum_1: \"value_1\", datum_2: 2, datum_3: [ \"a\", \"b\", \"c\" ] }\r\n }\r "],"memberof":"CB_GraphicSprites","kind":"typedef","name":"SUBSPRITE_OBJECT","type":{"names":["Object"]},"properties":[{"type":{"names":["string","*"]},"optional":true,"defaultvalue":"'CB_GraphicSprites.subSprite_' + CB_GraphicSprites._idSubSpriteUnique++","description":"<p>Identifier of the sub-sprite. It should be unique. It must be a value which evaluates to true. By default, it is generated automatically (with an internal counter).</p>","name":"id"},{"type":{"names":["*"]},"optional":true,"defaultvalue":"this.parent.src|\"\"","description":"<p>Source of origin. Can be a path or identifier of an image, text, bitmap, 3D object, etc. They can be used for any kind of source you may think of, including (but not limited to) one sprites sheet or more, one atlas or more, etc. or even a mix of all of them. If not provided, as default it will use the value from the sprite that it belongs to.</p>","name":"src"},{"type":{"names":["string"]},"optional":true,"defaultvalue":"this.parent.srcType|{@link CB_GraphicSprites.SRC_TYPES.DEFAULT}","description":"<p>Type of the source of origin. If not provided, as default it will use the value from the sprite that it belongs to. It should point to a property of the {@link CB_GraphicSprites.SRC_TYPES} object. You can use other values of the {@link CB_GraphicSprites.SRC_TYPES} object or create new ones.</p>","name":"srcType"},{"type":{"names":["number"]},"optional":true,"defaultvalue":"this.parent.srcLeft|{@link CB_GraphicSprites.LEFT_SOURCE_DEFAULT}","description":"<p>Left (horizontal) position in the original source (having in mind its real width and height). Unit agnostic (only numeric values are allowed). If not provided, as default it will use the value from the sprite that it belongs to.</p>","name":"srcLeft"},{"type":{"names":["number"]},"optional":true,"defaultvalue":"this.parent.srcTop|{@link CB_GraphicSprites.TOP_SOURCE_DEFAULT}","description":"<p>Top (vertical) position in the original source (having in mind its real width and height). Unit agnostic (only numeric values are allowed). If not provided, as default it will use the value from the sprite that it belongs to.</p>","name":"srcTop"},{"type":{"names":["number"]},"optional":true,"defaultvalue":"this.parent.srcWidth|{@link CB_GraphicSprites.WIDTH_SOURCE_DEFAULT}","description":"<p>Width of the original source. Unit agnostic (only numeric values are allowed). If not provided, as default it will use the value from the sprite that it belongs to.</p>","name":"srcWidth"},{"type":{"names":["number"]},"optional":true,"defaultvalue":"this.parent.srcHeight|{@link CB_GraphicSprites.HEIGHT_SOURCE_DEFAULT}","description":"<p>Height of the original source. Unit agnostic (only numeric values are allowed). If not provided, as default it will use the value from the sprite that it belongs to.</p>","name":"srcHeight"},{"type":{"names":["number"]},"optional":true,"defaultvalue":"{@link CB_GraphicSprites.LEFT_DEFAULT}","description":"<p>Left (horizontal) position in the destiny (inside the sprite). Unit agnostic (only numeric values are allowed).</p>","name":"left"},{"type":{"names":["number"]},"optional":true,"defaultvalue":"{@link CB_GraphicSprites.TOP_DEFAULT}","description":"<p>Top (vertical) position in the destiny (inside the sprite). Unit agnostic (only numeric values are allowed).</p>","name":"top"},{"type":{"names":["number"]},"optional":true,"defaultvalue":"this.parent.width|{@link CB_GraphicSprites.WIDTH_DEFAULT}","description":"<p>Width of the destiny (inside the sprite). Unit agnostic (only numeric values are allowed). If not provided, as default it will use the value from the sprite that it belongs to.</p>","name":"width"},{"type":{"names":["number"]},"optional":true,"defaultvalue":"this.parent.height|{@link CB_GraphicSprites.HEIGHT_DEFAULT}","description":"<p>Height of the destiny (inside the sprite). Unit agnostic (only numeric values are allowed). If not provided, as default it will use the value from the sprite that it belongs to.</p>","name":"height"},{"type":{"names":["number"]},"optional":true,"defaultvalue":"this.parent.zIndex|{@link CB_GraphicSprites.ZINDEX_DEFAULT}","description":"<p>The z-index for the destiny (inside the sprite). Only numeric values which are not zero (0) are allowed. If not provided, as default it will use the value from the sprite that it belongs to. To change the value of this property, use the &quot;setZIndex&quot; method of the sub-sprite or the {@link CB_GraphicSprites#setZIndexSubSprite} method (which will call the {@link CB_GraphicSpritesScene#updateSubSpritesByZIndex} method internally).</p>","name":"zIndex"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":"this.parent.disabled|false","description":"<p>Tells whether this sub-sprite is disabled or not. Regardless its value, it will be considered disabled if its sprite parent is also disabled. If not provided, as default it will use the value from the sprite that it belongs to.</p>","name":"disabled"},{"type":{"names":["object"]},"optional":true,"defaultvalue":"CB_combineJSON(this.parent.data, this.data)||this.parent.data||{ 'that' : CB_GraphicSprites.SPRITES_OBJECT, 'getThis' = function() { return this.that; } }","description":"<p>Object with any additional data desired which can be any kind. If not provided, missing properties as default will use the value from the sprite that it belongs to. It will always have a &quot;that&quot; property pointing to the {@link CB_GraphicSprites.SUBSPRITE_OBJECT} object where it belongs to and a function in its &quot;getThis&quot; property returning the same value (added automatically). These properties (&quot;that&quot; and &quot;getThis&quot;) cannot be overridden.</p>","name":"data"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If set to true, when inserting the sub-sprite, the same sub-sprite itself ({@link CB_GraphicSprites.SUBSPRITE_OBJECT} object) will be inserted internally directly without making a copy of itself.</p>","name":"byReference"},{"type":{"names":["CB_GraphicSprites.SPRITE_OBJECT"]},"description":"<p>Read-only property pointing to its parent ({@link CB_GraphicSprites.SPRITE_OBJECT} object).</p>","name":"parent"},{"type":{"names":["CB_GraphicSprites"]},"description":"<p>Read-only property pointing to the {@link CB_GraphicSprites} object which contains it.</p>","name":"container"},{"type":{"names":["boolean"]},"description":"<p>Read-only property which is always set to true to help identify this type of object.</p>","name":"isSubSprite"},{"type":{"names":["'subSprite'"]},"description":"<p>Read-only property indicating the type of object (always &quot;subSprite&quot;).</p>","name":"type"},{"type":{"names":["integer"]},"description":"<p>Read-only property indicating the position of this sub-sprite in the array which is set the &quot;subSprites&quot; property of the sprite parent ({@link CB_GraphicSprites.SPRITE_OBJECT} object).</p>","name":"position"},{"type":{"names":["integer"]},"description":"<p>Read-only property indicating the position of this sub-sprite in the array which is set the &quot;subSpritesByZIndex&quot; property of the sprite parent ({@link CB_GraphicSprites.SPRITE_OBJECT} object).</p>","name":"positionByZIndex"},{"type":{"names":["integer"]},"description":"<p>Property which stores the time in milliseconds when its parent sprite was started being pointed for the last time (time elapsed since the [time origin]{@link https://developer.mozilla.org/en-US/docs/Web/API/DOMHighResTimeStamp#The_time_origin} which was obtained calling the {@link CB_Device.getTiming} function internally). Note that the parent could being not pointed anymore. If it has never being pointed before, it will be set to 0. It normally has the same value as the &quot;time&quot; property of its parent object but they can be modified independently.</p>","name":"time"},{"type":{"names":["function"]},"description":"<p>Read-only property which is a method that updates the &quot;time&quot; property of the sub-sprite (calls {@link CB_GraphicSprites#setTime} internally and returns its returning value). With only one parameter which belongs to the &quot;time&quot; parameter of the {@link CB_GraphicSprites#setTime} method.</p>","name":"setTime"},{"type":{"names":["function"]},"description":"<p>Read-only property which is a method that returns the &quot;time&quot; property of the sub-sprite (calls {@link CB_GraphicSprites#getTime} internally and returns its returning value). With only one parameter which belongs to the &quot;returnValueOnFail&quot; parameter of the {@link CB_GraphicSprites#getTime} method. If the &quot;time&quot; property of the sub-sprite is not found, it will use the &quot;time&quot; property from its sprite parent.</p>","name":"getTime"},{"type":{"names":["function"]},"description":"<p>Read-only property which is a method that returns how many milliseconds elapsed since the sprite was or will be pointed (checking its &quot;time&quot; property), comparing with the time given in milliseconds (time elapsed since the [time origin]{@link https://developer.mozilla.org/en-US/docs/Web/API/DOMHighResTimeStamp#The_time_origin} which can be obtained calling the {@link CB_Device.getTiming} function) or with the current one if none is given (calls {@link CB_GraphicSprites#getTimeElapsed} internally and returns its returning value). With only one parameter which belongs to the &quot;timeToCompare&quot; parameter of the {@link CB_GraphicSprites#getTimeElapsed} method. If the &quot;time&quot; property of the sub-sprite is not found, it will use the &quot;time&quot; property from its sprite parent.</p>","name":"getTimeElapsed"},{"type":{"names":["function"]},"description":"<p>Read-only property which is a method that returns the z-index (&quot;z-index&quot; property) of the sub-sprite (calls {@link CB_GraphicSprites#getZIndexSubSprite} internally and returns its returning value). With only one parameter which belongs to the &quot;returnValueOnFail&quot; parameter of the {@link CB_GraphicSprites#getZIndexSubSprite} method.</p>","name":"getZIndex"},{"type":{"names":["function"]},"description":"<p>Read-only property which is a method to set the z-index (&quot;z-index&quot; property) of the sub-sprite (calls {@link CB_GraphicSprites#setZIndexSubSprite} internally and returns its returning value). With only one parameter which belongs to the &quot;zIndex&quot; parameter of the {@link CB_GraphicSprites#setZIndexSubSprite} method.</p>","name":"setZIndex"},{"type":{"names":["function"]},"description":"<p>Read-only property which is a method that tells whether the sub-sprite is disabled or not (calls {@link CB_GraphicSprites#isDisabledSubSprite} internally and returns its returning value). With no parameters. A sub-sprite is considered disabled if its sprite parent is disabled (a sprite is considered disabled if its sprites group parent is also disabled).</p>","name":"isDisabled"},{"type":{"names":["function"]},"description":"<p>Read-only property which is a method to disable or enable the sub-sprite (calls {@link CB_GraphicSprites#setDisabledSubSprite} internally and returns its returning value). With three parameters (&quot;disabled&quot;, &quot;affectParents&quot; and &quot;affectParentsChildren&quot;) which belong to the parameters with the same name of the {@link CB_GraphicSprites#setDisabledSubSprite} method.</p>","name":"setDisabled"}],"longname":"CB_GraphicSprites.SUBSPRITE_OBJECT","scope":"static"},{"comment":"/**\r\n * An object with the information that belongs to a certain graphic sprite, being able to contain more than one source used by this graphic sprite (inside sub-sprites).\r\n * @example\r\n {\r\n\t//'my_sprite_1':\r\n\tid: \"my_sprite_1\",\r\n\tsrc: \"path/to/image.gif\",\r\n\tsrcType: CB_GraphicSprites.SRC_TYPES.IMAGE,\r\n\tsrcLeft: 10,\r\n\tsrcTop: 20,\r\n\tsrcWidth: 64,\r\n\tsrcHeight: 32,\r\n\tleft: 10,\r\n\ttop: 20,\r\n\twidth: 64,\r\n\theight: 32,\r\n\tdisabled: false,\r\n\tdata: { datum_1 : \"value_1\", datum_2 : 2, datum_3: [ \"a\", \"b\", \"c\" ] },\r\n\tsubSprites:\r\n\t[\r\n\t\t//'my_subsprite_1':\r\n\t\t{ id: \"my_subsprite_1\", srcLeft: 10, srcTop: 20, zIndex: 1 },\r\n\t\t//'my_subsprite_2':\r\n\t\t{ id: \"my_subsprite_2\", srcLeft: 20, srcTop: 40, zIndex: 2 }\r\n\t]\r\n }\r\n * @memberof CB_GraphicSprites\r\n * @typedef {Object} CB_GraphicSprites.SPRITE_OBJECT\r\n * @property {string|*} [id='CB_GraphicSprites.sprite_' + CB_GraphicSprites._idSpriteUnique++] - Identifier of the sprite. It should be unique. Recommended. It must be a value which evaluates to true. By default, it is generated automatically (with an internal counter).\r\n * @property {*} [src=this.parent.src|\"\"] - Source of origin. Can be a path or identifier of an image, text, bitmap, 3D object, etc. They can be used for any kind of source you may think of, including (but not limited to) one sprites sheet or more, one atlas or more, etc. or even a mix of all of them. If not provided, as default it will use the value from the sprites group that it belongs to.\r\n * @property {string} [srcType=this.parent.srcType|{@link CB_GraphicSprites.SRC_TYPES.DEFAULT}] - Type of the source of origin. If not provided, as default it will use the value from the sprites group that it belongs to. It should point to a property of the {@link CB_GraphicSprites.SRC_TYPES} object. You can use other values of the {@link CB_GraphicSprites.SRC_TYPES} object or create new ones.\r\n * @property {number} [srcLeft=this.parent.srcLeft|{@link CB_GraphicSprites.LEFT_SOURCE_DEFAULT}] - Left (horizontal) position in the original source (having in mind its real width and height). Unit agnostic (only numeric values are allowed). If not provided, as default it will use the value from the sprites group that it belongs to.\r\n * @property {number} [srcTop=this.parent.srcTop|{@link CB_GraphicSprites.TOP_SOURCE_DEFAULT}] - Top (vertical) position in the original source (having in mind its real width and height). Unit agnostic (only numeric values are allowed). If not provided, as default it will use the value from the sprites group that it belongs to.\r\n * @property {number} [srcWidth=this.parent.srcWidth|{@link CB_GraphicSprites.WIDTH_SOURCE_DEFAULT}] - Width of the original source. Unit agnostic (only numeric values are allowed). If not provided, as default it will use the value from the sprites group that it belongs to.\r\n * @property {number} [srcHeight=this.parent.srcHeight|{@link CB_GraphicSprites.HEIGHT_SOURCE_DEFAULT}] - Height of the original source. Unit agnostic (only numeric values are allowed). If not provided, as default it will use the value from the sprites group that it belongs to.\r\n * @property {number} [left={@link CB_GraphicSprites.LEFT_DEFAULT}] - Left (horizontal) position in the destiny (inside the sprites group). Unit agnostic (only numeric values are allowed).\r\n * @property {number} [top={@link CB_GraphicSprites.TOP_DEFAULT}] - Top (vertical) position in the destiny (inside the sprites group). Unit agnostic (only numeric values are allowed).\r\n * @property {number} [width=this.parent.width|{@link CB_GraphicSprites.WIDTH_DEFAULT}] - Width of the destiny (inside the sprites group). Unit agnostic (only numeric values are allowed). If not provided, as default it will use the value from the sprites group that it belongs to.\r\n * @property {number} [height=this.parent.height|{@link CB_GraphicSprites.HEIGHT_DEFAULT}] - Height of the destiny (inside the sprites group). Unit agnostic (only numeric values are allowed). If not provided, as default it will use the value from the sprites group that it belongs to.\r\n * @property {number} [zIndex=this.parent.zIndex|{@link CB_GraphicSprites.ZINDEX_DEFAULT}] - The z-index for the destiny (inside the sprites group). Only numeric values which are not zero (0) are allowed. If not provided, as default it will use the value from the sprites group that it belongs to. To change the value of this property, use the \"setZIndex\" method of the sprite or the {@link CB_GraphicSprites#setZIndexSprite} method (which will call the {@link CB_GraphicSpritesScene#updateSpritesByZIndex} method internally).\r\n * @property {boolean} [disabled=this.parent.disabled|false] - Tells whether this sprite is disabled or not. Regardless its value, it will be considered disabled if its sprites group parent is also disabled. If not provided, as default it will use the value from the sprites group that it belongs to.\r\n * @property {object} [data=CB_combineJSON(this.parent.data, this.data)||this.parent.data||{ 'that' : CB_GraphicSprites.SPRITES_OBJECT, 'getThis' = function() { return this.that; } }] - Object with any additional data desired which can be any kind. If not provided, missing properties as default will use the value from the sprites group that it belongs to. It will always have a \"that\" property pointing to the {@link CB_GraphicSprites.SPRITE_OBJECT} object where it belongs to and a function in its \"getThis\" property returning the same value (added automatically). These properties (\"that\" and \"getThis\") cannot be overridden.\r\n * @property {array} [subSprites=[]] - Numeric array containing {@link CB_GraphicSprites.SUBSPRITE_OBJECT} objects with the sub-sprites that this sprite uses.\r\n * @property {array} subSpritesByZIndex - Read-only property containing a numeric array of all the {@link CB_GraphicSprites.SUBSPRITE_OBJECT} objects of the sprite ordered by their z-index (\"zIndex\" property). It is updated automatically when the z-index of a sub-sprite is set with its \"setZIndex\" method (or when calling the {@link CB_GraphicSprites#setZIndexSubSprite} method) or when inserting/removing sub-sprites through the {@link CB_GraphicSprites#insertSubSprites}, {@link CB_GraphicSprites#insertSubSprite}, {@link CB_GraphicSprites#removeSubSprite} or {@link CB_GraphicSprites#removeSubSpriteById} methods.\r\n * @property {boolean} [byReference=false] - If set to true, when inserting the sprite, its \"subSprites\" property will use exactly the object given for that property (without making a copy) and the same sprite itself ({@link CB_GraphicSprites.SPRITE_OBJECT} object) will be inserted internally directly without making a copy of itself.\r\n * @property {CB_GraphicSprites.SPRITES_OBJECT} parent - Read-only property pointing to its parent ({@link CB_GraphicSprites.SPRITES_OBJECT} object).\r\n * @property {CB_GraphicSprites} container - Read-only property pointing to the {@link CB_GraphicSprites} object which contains it.\r\n * @property {boolean} isSprite - Read-only property which is always set to true to help identify this type of object.\r\n * @property {'sprite'} type - Read-only property indicating the type of object (always \"sprite\").\r\n * @property {integer} position - Read-only property indicating the position of this sprite in the array which is set the \"sprites\" property of the sprites group parent ({@link CB_GraphicSprites.SPRITES_OBJECT} object).\r\n * @property {integer} positionByZIndex - Read-only property indicating the position of this sprite in the array which is set the \"spritesByZIndex\" property of the sprites group parent ({@link CB_GraphicSprites.SPRITES_OBJECT} object).\r\n * @property {integer} time - Property which stores the time in milliseconds when the sprite was started being pointed for the last time (time elapsed since the [time origin]{@link https://developer.mozilla.org/en-US/docs/Web/API/DOMHighResTimeStamp#The_time_origin} which was obtained calling the {@link CB_Device.getTiming} function internally). Note that it could being not pointed anymore. If it has never being pointed before, it will be set to 0.\r\n * @property {function} setTime - Read-only property which is a method that updates the \"time\" property of the sprite (calls {@link CB_GraphicSprites#setTime} internally and returns its returning value). With only one parameter which belongs to the \"time\" parameter of the {@link CB_GraphicSprites#setTime} method.\r\n * @property {function} getTime - Read-only property which is a method that returns the \"time\" property of the sprite (calls {@link CB_GraphicSprites#getTime} internally and returns its returning value). With only one parameter which belongs to the \"returnValueOnFail\" parameter of the {@link CB_GraphicSprites#getTime} method.\r\n * @property {function} getTimeElapsed - Read-only property which is a method that returns how many milliseconds elapsed since the sprite was or will be pointed (checking its \"time\" property), comparing with the time given in milliseconds (time elapsed since the [time origin]{@link https://developer.mozilla.org/en-US/docs/Web/API/DOMHighResTimeStamp#The_time_origin} which can be obtained calling the {@link CB_Device.getTiming} function) or with the current one if none is given (calls {@link CB_GraphicSprites#getTimeElapsed} internally and returns its returning value). With only one parameter which belongs to the \"timeToCompare\" parameter of the {@link CB_GraphicSprites#getTimeElapsed} method.\r\n * @property {function} removeAll - Read-only property which is a method that removes all the internal sub-sprites ({@link CB_GraphicSprites.SUBSPRITE_OBJECT} objects) from the sprite which are in the \"subSprites\" property (calls {@link CB_GraphicSprites#removeSubSprites} internally and returns its returning value). With no parameters.\r\n * @property {function} removeSubSprites - Alias for the \"removeAll\" method.\r\n * @property {function} insertSubSprites - Read-only property which is a method that inserts the given sub-sprites ({@link CB_GraphicSprites.SUBSPRITE_OBJECT} objects) in the sprite, adding them to the \"subSprites\" property (calls {@link CB_GraphicSprites#insertSubSprites} internally and returns its returning value). With only one parameter which belongs to the \"subSprites\" parameter of the {@link CB_GraphicSprites#insertSubSprites} method.\r\n * @property {function} remove - Read-only property which is a method that removes an internal sub-sprite ({@link CB_GraphicSprites.SUBSPRITE_OBJECT} object) by its index (position in the \"subSprites\" array) from the sprite, removing it from the \"subSprites\" property (calls {@link CB_GraphicSprites#removeSubSprite} internally and returns its returning value). With only one parameter which belongs to the \"index\" parameter of the {@link CB_GraphicSprites#removeSubSprite} method.\r\n * @property {function} removeById - Read-only property which is a method that removes an internal sub-sprite ({@link CB_GraphicSprites.SUBSPRITE_OBJECT} object) by its identifier from the sprite, removing it from the \"subSprites\" property (calls {@link CB_GraphicSprites#removeSubSpriteById} internally and returns its returning value). With only one parameter which belongs to the \"id\" parameter of the {@link CB_GraphicSprites#removeSubSpriteById} method.\r\n * @property {function} insert - Read-only property which is a method that inserts a given sub-sprite ({@link CB_GraphicSprites.SUBSPRITE_OBJECT} object) in the sprite, adding it to the \"subSprites\" property (calls {@link CB_GraphicSprites#insertSubSprite} internally and returns its returning value). With only one parameter which belongs to the \"subSprite\" parameter of the {@link CB_GraphicSprites#insertSubSprite} method.\r\n * @property {function} getAll - Read-only property which is a method that returns all the internal sub-sprites ({@link CB_GraphicSprites.SUBSPRITE_OBJECT} objects) in the sprite, getting them from the \"subSprites\" property (calls {@link CB_GraphicSprites#getAll} internally and returns its returning value). With two parameters (\"orderedByZIndex\" and \"returnValueOnFail\") which belong to the parameters with the same name of the {@link CB_GraphicSprites#getAll} method.\r\n * @property {function} getSubSprites - Alias for the \"getAll\" method.\r\n * @property {function} get - Read-only property which is a method that returns a sub-sprite ({@link CB_GraphicSprites.SUBSPRITE_OBJECT} object) by its index (position in the \"subSprites\" array) from the sprite, getting it from the \"subSprites\" property (calls {@link CB_GraphicSprites#getSubSprite} internally and returns its returning value). With two parameters (\"index\" and \"returnValueOnFail\") which belong to the parameters with the same name of the {@link CB_GraphicSprites#getSubSprite} method.\r\n * @property {function} getById - Read-only property which is a method that returns a sub-sprite ({@link CB_GraphicSprites.SUBSPRITE_OBJECT} object) by its identifier from the sprite, getting it from the \"subSprites\" property (calls {@link CB_GraphicSprites#getSubSpriteById} internally and returns its returning value). With two parameters (\"id\" and \"returnValueOnFail\") which belong to the parameters with the same name of the {@link CB_GraphicSprites#getSubSpriteById} method.\r\n * @property {function} getIndexById - Read-only property which is a method that returns the index (position in the \"subSprites\" array) of a sub-sprite ({@link CB_GraphicSprites.SUBSPRITE_OBJECT} object) by its identifier (calls {@link CB_GraphicSprites#getSubSpriteIndexById} internally and returns its returning value). With only one parameter which belongs to the \"id\" parameter of the {@link CB_GraphicSprites#getSubSpriteIndexById} method.\r\n * @property {function} executeFunctionAll - Read-only property which is a method that executes the desired function for each sub-sprite ({@link CB_GraphicSprites.SUBSPRITE_OBJECT} objects which are in the \"subSprites\" property) in the sprite (calls {@link CB_GraphicSprites#executeFunctionAllSubSprites} internally and returns its returning value). With five parameters (\"functionEach\", \"orderedByZIndex\", \"delayBetweenEach\", \"returnSetTimeoutsArray\", \"delayBetweenEachAffectsFirst\" and \"functionFinish\") which belong to the parameters with the same name of the {@link CB_GraphicSprites#executeFunctionAllSubSprites} method.\r\n * @property {function} executeAll - Alias for the \"executeFunctionAll\" method.\r\n * @property {function} forEach - Alias for the \"executeFunctionAll\" method.\r\n * @property {function} getZIndex - Read-only property which is a method that returns the z-index (\"z-index\" property) of the sprite (calls {@link CB_GraphicSprites#getZIndexSprite} internally and returns its returning value). With only one parameter which belongs to the \"returnValueOnFail\" parameter of the {@link CB_GraphicSprites#getZIndexSprite} method.\r\n * @property {function} setZIndex - Read-only property which is a method to set the z-index (\"z-index\" property) of the sprite (calls {@link CB_GraphicSprites#setZIndexSprite} internally and returns its returning value). With only one parameter which belongs to the \"zIndex\" parameter of the {@link CB_GraphicSprites#setZIndexSprite} method.\r\n * @property {function} isDisabled - Read-only property which is a method that tells whether the sprite is disabled or not (calls {@link CB_GraphicSprites#isDisabledSprite} internally and returns its returning value). With no parameters. A sprite is considered disabled if its sprites group parent is also disabled.\r\n * @property {function} setDisabled - Read-only property which is a method to disable or enable the sprite (calls {@link CB_GraphicSprites#setDisabledSprite} internally and returns its returning value). With four parameters (\"disabled\", \"affectSubSprites\", \"affectParent\" and \"affectParentChildren\") which belong to the parameters with the same name of the {@link CB_GraphicSprites#setDisabledSprite} method.\r\n * @property {function} getPointer - Read-only property which is a method that gets the current position of the pointer. It belongs to an index of the {@link CB_GraphicSprites#spritesGroup.sprites} array where a {@link CB_GraphicSprites.SPRITE_OBJECT} object is placed (containing a sprite). Internally, it uses the {@link CB_GraphicSprites#pointer} property. Calls {@link CB_GraphicSprites#getPointer} internally and returns its returning value. With no parameters.\r\n * @property {function} getCurrentPosition - Alias for the \"getPointer\" method.\r\n * @property {function} getPointerPrevious - Read-only property which is a method that gets the previous position of the pointer. Internally, it uses the {@link CB_GraphicSprites#pointerPrevious} property. Calls {@link CB_GraphicSprites#getPointerPrevious} internally and returns its returning value. With no parameters.\r\n * @property {function} getPreviousPosition - Alias for the \"getPointerPrevious\" method.\r\n * @property {function} setPointer - Read-only property which is a method that sets the pointer to the desired position (if possible). The position should belong to an index of the {@link CB_GraphicSprites#spritesGroup.sprites} array where a {@link CB_GraphicSprites.SPRITE_OBJECT} object is placed (containing a sprite). Internally, it modifies the {@link CB_GraphicSprites#pointer} property (if possible). If the position was updated, it will also reset the {@link CB_GraphicSprites#time} property (setting the current time in milliseconds). Calls {@link CB_GraphicSprites#setPointer} internally and returns the sprite (a {@link CB_GraphicSprites.SPRITE_OBJECT} object) which is being currently pointed (by the pointer set in the {@link CB_GraphicSprites#pointer} property). With two parameters (\"position\" and \"loop\") which belong to the parameters with the same name of the {@link CB_GraphicSprites#setPointer} method.\r\n * @property {function} setCurrentPosition - Alias for the \"setPointer\" method.\r\n * @property {function} getCurrent - Read-only property which is a method that gets the sprite (a {@link CB_GraphicSprites.SPRITE_OBJECT} object) which is being currently pointed (by the pointer set in the {@link CB_GraphicSprites#pointer} property). Calls {@link CB_GraphicSprites#getCurrent} internally and returns its returning value. With no parameters.\r\n * @property {function} current - Alias for the \"getCurrent\" method.\r\n * @property {function} now - Alias for the \"getCurrent\" method.\r\n * @property {function} getPrevious - Read-only property which is a method that gets the sprite which was previously pointed if any or returns null otherwise. It does not modify the {@link CB_GraphicSprites#pointer} property. Calls {@link CB_GraphicSprites#getPrevious} internally and returns its returning value. With no parameters.\r\n * @property {function} setPrevious - Read-only property which is a method that makes the pointer to go back to the previous position (if possible) and returns the sprite located there (if any). The position should belong to an index of the {@link CB_GraphicSprites#spritesGroup.sprites} array where a {@link CB_GraphicSprites.SPRITE_OBJECT} object is placed (containing a sprite) and it will be returned if found. Internally, it modifies the {@link CB_GraphicSprites#pointer} property (if possible). If the position was updated, it will update also the {@link CB_GraphicSprites#time} property (setting the current time in milliseconds). Calls {@link CB_GraphicSprites#setPrevious} internally and returns its returning value. With only one parameter which belongs to the \"loop\" parameter of the {@link CB_GraphicSprites#setPrevious} method.\r\n * @property {function} previous - Alias for the \"setPrevious\" method.\r\n * @property {function} setNext - Read-only property which is a method that makes the pointer to advance to the next position (if possible) and returns the sprite located there (if any). The position should belong to an index of the {@link CB_GraphicSprites#spritesGroup.sprites} array where a {@link CB_GraphicSprites.SPRITE_OBJECT} object is placed (containing a sprite) and it will be returned if found. Internally, it modifies the {@link CB_GraphicSprites#pointer} property (if possible). If the position was updated, it will also update the {@link CB_GraphicSprites#time} property (setting the current time in milliseconds). Calls {@link CB_GraphicSprites#setNext} internally and returns its returning value. With only one parameter which belongs to the \"loop\" parameter of the {@link CB_GraphicSprites#setNext} method.\r\n * @property {function} next - Alias for the \"setNext\" method.\r\n * @property {function} setPropertyCascade - Read-only property which is a method that sets the desired value of a given property name to the sprite itself and all of its sub-sprites (if any). Calls {@link CB_GraphicSprites#setPropertyCascade} internally and returns its returning value. With two parameters (\"propertyName\" and \"value\") which belong to the parameters with the same name of the {@link CB_GraphicSprites#setPropertyCascade} method.\r\n */","meta":{"filename":"CB_GraphicSprites.js","lineno":60,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image","code":{}},"description":"<p>An object with the information that belongs to a certain graphic sprite, being able to contain more than one source used by this graphic sprite (inside sub-sprites).</p>","examples":["{\r\n\t//'my_sprite_1':\r\n\tid: \"my_sprite_1\",\r\n\tsrc: \"path/to/image.gif\",\r\n\tsrcType: CB_GraphicSprites.SRC_TYPES.IMAGE,\r\n\tsrcLeft: 10,\r\n\tsrcTop: 20,\r\n\tsrcWidth: 64,\r\n\tsrcHeight: 32,\r\n\tleft: 10,\r\n\ttop: 20,\r\n\twidth: 64,\r\n\theight: 32,\r\n\tdisabled: false,\r\n\tdata: { datum_1 : \"value_1\", datum_2 : 2, datum_3: [ \"a\", \"b\", \"c\" ] },\r\n\tsubSprites:\r\n\t[\r\n\t\t//'my_subsprite_1':\r\n\t\t{ id: \"my_subsprite_1\", srcLeft: 10, srcTop: 20, zIndex: 1 },\r\n\t\t//'my_subsprite_2':\r\n\t\t{ id: \"my_subsprite_2\", srcLeft: 20, srcTop: 40, zIndex: 2 }\r\n\t]\r\n }\r "],"memberof":"CB_GraphicSprites","kind":"typedef","name":"SPRITE_OBJECT","type":{"names":["Object"]},"properties":[{"type":{"names":["string","*"]},"optional":true,"defaultvalue":"'CB_GraphicSprites.sprite_' + CB_GraphicSprites._idSpriteUnique++","description":"<p>Identifier of the sprite. It should be unique. Recommended. It must be a value which evaluates to true. By default, it is generated automatically (with an internal counter).</p>","name":"id"},{"type":{"names":["*"]},"optional":true,"defaultvalue":"this.parent.src|\"\"","description":"<p>Source of origin. Can be a path or identifier of an image, text, bitmap, 3D object, etc. They can be used for any kind of source you may think of, including (but not limited to) one sprites sheet or more, one atlas or more, etc. or even a mix of all of them. If not provided, as default it will use the value from the sprites group that it belongs to.</p>","name":"src"},{"type":{"names":["string"]},"optional":true,"defaultvalue":"this.parent.srcType|{@link CB_GraphicSprites.SRC_TYPES.DEFAULT}","description":"<p>Type of the source of origin. If not provided, as default it will use the value from the sprites group that it belongs to. It should point to a property of the {@link CB_GraphicSprites.SRC_TYPES} object. You can use other values of the {@link CB_GraphicSprites.SRC_TYPES} object or create new ones.</p>","name":"srcType"},{"type":{"names":["number"]},"optional":true,"defaultvalue":"this.parent.srcLeft|{@link CB_GraphicSprites.LEFT_SOURCE_DEFAULT}","description":"<p>Left (horizontal) position in the original source (having in mind its real width and height). Unit agnostic (only numeric values are allowed). If not provided, as default it will use the value from the sprites group that it belongs to.</p>","name":"srcLeft"},{"type":{"names":["number"]},"optional":true,"defaultvalue":"this.parent.srcTop|{@link CB_GraphicSprites.TOP_SOURCE_DEFAULT}","description":"<p>Top (vertical) position in the original source (having in mind its real width and height). Unit agnostic (only numeric values are allowed). If not provided, as default it will use the value from the sprites group that it belongs to.</p>","name":"srcTop"},{"type":{"names":["number"]},"optional":true,"defaultvalue":"this.parent.srcWidth|{@link CB_GraphicSprites.WIDTH_SOURCE_DEFAULT}","description":"<p>Width of the original source. Unit agnostic (only numeric values are allowed). If not provided, as default it will use the value from the sprites group that it belongs to.</p>","name":"srcWidth"},{"type":{"names":["number"]},"optional":true,"defaultvalue":"this.parent.srcHeight|{@link CB_GraphicSprites.HEIGHT_SOURCE_DEFAULT}","description":"<p>Height of the original source. Unit agnostic (only numeric values are allowed). If not provided, as default it will use the value from the sprites group that it belongs to.</p>","name":"srcHeight"},{"type":{"names":["number"]},"optional":true,"defaultvalue":"{@link CB_GraphicSprites.LEFT_DEFAULT}","description":"<p>Left (horizontal) position in the destiny (inside the sprites group). Unit agnostic (only numeric values are allowed).</p>","name":"left"},{"type":{"names":["number"]},"optional":true,"defaultvalue":"{@link CB_GraphicSprites.TOP_DEFAULT}","description":"<p>Top (vertical) position in the destiny (inside the sprites group). Unit agnostic (only numeric values are allowed).</p>","name":"top"},{"type":{"names":["number"]},"optional":true,"defaultvalue":"this.parent.width|{@link CB_GraphicSprites.WIDTH_DEFAULT}","description":"<p>Width of the destiny (inside the sprites group). Unit agnostic (only numeric values are allowed). If not provided, as default it will use the value from the sprites group that it belongs to.</p>","name":"width"},{"type":{"names":["number"]},"optional":true,"defaultvalue":"this.parent.height|{@link CB_GraphicSprites.HEIGHT_DEFAULT}","description":"<p>Height of the destiny (inside the sprites group). Unit agnostic (only numeric values are allowed). If not provided, as default it will use the value from the sprites group that it belongs to.</p>","name":"height"},{"type":{"names":["number"]},"optional":true,"defaultvalue":"this.parent.zIndex|{@link CB_GraphicSprites.ZINDEX_DEFAULT}","description":"<p>The z-index for the destiny (inside the sprites group). Only numeric values which are not zero (0) are allowed. If not provided, as default it will use the value from the sprites group that it belongs to. To change the value of this property, use the &quot;setZIndex&quot; method of the sprite or the {@link CB_GraphicSprites#setZIndexSprite} method (which will call the {@link CB_GraphicSpritesScene#updateSpritesByZIndex} method internally).</p>","name":"zIndex"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":"this.parent.disabled|false","description":"<p>Tells whether this sprite is disabled or not. Regardless its value, it will be considered disabled if its sprites group parent is also disabled. If not provided, as default it will use the value from the sprites group that it belongs to.</p>","name":"disabled"},{"type":{"names":["object"]},"optional":true,"defaultvalue":"CB_combineJSON(this.parent.data, this.data)||this.parent.data||{ 'that' : CB_GraphicSprites.SPRITES_OBJECT, 'getThis' = function() { return this.that; } }","description":"<p>Object with any additional data desired which can be any kind. If not provided, missing properties as default will use the value from the sprites group that it belongs to. It will always have a &quot;that&quot; property pointing to the {@link CB_GraphicSprites.SPRITE_OBJECT} object where it belongs to and a function in its &quot;getThis&quot; property returning the same value (added automatically). These properties (&quot;that&quot; and &quot;getThis&quot;) cannot be overridden.</p>","name":"data"},{"type":{"names":["array"]},"optional":true,"defaultvalue":"[]","description":"<p>Numeric array containing {@link CB_GraphicSprites.SUBSPRITE_OBJECT} objects with the sub-sprites that this sprite uses.</p>","name":"subSprites"},{"type":{"names":["array"]},"description":"<p>Read-only property containing a numeric array of all the {@link CB_GraphicSprites.SUBSPRITE_OBJECT} objects of the sprite ordered by their z-index (&quot;zIndex&quot; property). It is updated automatically when the z-index of a sub-sprite is set with its &quot;setZIndex&quot; method (or when calling the {@link CB_GraphicSprites#setZIndexSubSprite} method) or when inserting/removing sub-sprites through the {@link CB_GraphicSprites#insertSubSprites}, {@link CB_GraphicSprites#insertSubSprite}, {@link CB_GraphicSprites#removeSubSprite} or {@link CB_GraphicSprites#removeSubSpriteById} methods.</p>","name":"subSpritesByZIndex"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If set to true, when inserting the sprite, its &quot;subSprites&quot; property will use exactly the object given for that property (without making a copy) and the same sprite itself ({@link CB_GraphicSprites.SPRITE_OBJECT} object) will be inserted internally directly without making a copy of itself.</p>","name":"byReference"},{"type":{"names":["CB_GraphicSprites.SPRITES_OBJECT"]},"description":"<p>Read-only property pointing to its parent ({@link CB_GraphicSprites.SPRITES_OBJECT} object).</p>","name":"parent"},{"type":{"names":["CB_GraphicSprites"]},"description":"<p>Read-only property pointing to the {@link CB_GraphicSprites} object which contains it.</p>","name":"container"},{"type":{"names":["boolean"]},"description":"<p>Read-only property which is always set to true to help identify this type of object.</p>","name":"isSprite"},{"type":{"names":["'sprite'"]},"description":"<p>Read-only property indicating the type of object (always &quot;sprite&quot;).</p>","name":"type"},{"type":{"names":["integer"]},"description":"<p>Read-only property indicating the position of this sprite in the array which is set the &quot;sprites&quot; property of the sprites group parent ({@link CB_GraphicSprites.SPRITES_OBJECT} object).</p>","name":"position"},{"type":{"names":["integer"]},"description":"<p>Read-only property indicating the position of this sprite in the array which is set the &quot;spritesByZIndex&quot; property of the sprites group parent ({@link CB_GraphicSprites.SPRITES_OBJECT} object).</p>","name":"positionByZIndex"},{"type":{"names":["integer"]},"description":"<p>Property which stores the time in milliseconds when the sprite was started being pointed for the last time (time elapsed since the [time origin]{@link https://developer.mozilla.org/en-US/docs/Web/API/DOMHighResTimeStamp#The_time_origin} which was obtained calling the {@link CB_Device.getTiming} function internally). Note that it could being not pointed anymore. If it has never being pointed before, it will be set to 0.</p>","name":"time"},{"type":{"names":["function"]},"description":"<p>Read-only property which is a method that updates the &quot;time&quot; property of the sprite (calls {@link CB_GraphicSprites#setTime} internally and returns its returning value). With only one parameter which belongs to the &quot;time&quot; parameter of the {@link CB_GraphicSprites#setTime} method.</p>","name":"setTime"},{"type":{"names":["function"]},"description":"<p>Read-only property which is a method that returns the &quot;time&quot; property of the sprite (calls {@link CB_GraphicSprites#getTime} internally and returns its returning value). With only one parameter which belongs to the &quot;returnValueOnFail&quot; parameter of the {@link CB_GraphicSprites#getTime} method.</p>","name":"getTime"},{"type":{"names":["function"]},"description":"<p>Read-only property which is a method that returns how many milliseconds elapsed since the sprite was or will be pointed (checking its &quot;time&quot; property), comparing with the time given in milliseconds (time elapsed since the [time origin]{@link https://developer.mozilla.org/en-US/docs/Web/API/DOMHighResTimeStamp#The_time_origin} which can be obtained calling the {@link CB_Device.getTiming} function) or with the current one if none is given (calls {@link CB_GraphicSprites#getTimeElapsed} internally and returns its returning value). With only one parameter which belongs to the &quot;timeToCompare&quot; parameter of the {@link CB_GraphicSprites#getTimeElapsed} method.</p>","name":"getTimeElapsed"},{"type":{"names":["function"]},"description":"<p>Read-only property which is a method that removes all the internal sub-sprites ({@link CB_GraphicSprites.SUBSPRITE_OBJECT} objects) from the sprite which are in the &quot;subSprites&quot; property (calls {@link CB_GraphicSprites#removeSubSprites} internally and returns its returning value). With no parameters.</p>","name":"removeAll"},{"type":{"names":["function"]},"description":"<p>Alias for the &quot;removeAll&quot; method.</p>","name":"removeSubSprites"},{"type":{"names":["function"]},"description":"<p>Read-only property which is a method that inserts the given sub-sprites ({@link CB_GraphicSprites.SUBSPRITE_OBJECT} objects) in the sprite, adding them to the &quot;subSprites&quot; property (calls {@link CB_GraphicSprites#insertSubSprites} internally and returns its returning value). With only one parameter which belongs to the &quot;subSprites&quot; parameter of the {@link CB_GraphicSprites#insertSubSprites} method.</p>","name":"insertSubSprites"},{"type":{"names":["function"]},"description":"<p>Read-only property which is a method that removes an internal sub-sprite ({@link CB_GraphicSprites.SUBSPRITE_OBJECT} object) by its index (position in the &quot;subSprites&quot; array) from the sprite, removing it from the &quot;subSprites&quot; property (calls {@link CB_GraphicSprites#removeSubSprite} internally and returns its returning value). With only one parameter which belongs to the &quot;index&quot; parameter of the {@link CB_GraphicSprites#removeSubSprite} method.</p>","name":"remove"},{"type":{"names":["function"]},"description":"<p>Read-only property which is a method that removes an internal sub-sprite ({@link CB_GraphicSprites.SUBSPRITE_OBJECT} object) by its identifier from the sprite, removing it from the &quot;subSprites&quot; property (calls {@link CB_GraphicSprites#removeSubSpriteById} internally and returns its returning value). With only one parameter which belongs to the &quot;id&quot; parameter of the {@link CB_GraphicSprites#removeSubSpriteById} method.</p>","name":"removeById"},{"type":{"names":["function"]},"description":"<p>Read-only property which is a method that inserts a given sub-sprite ({@link CB_GraphicSprites.SUBSPRITE_OBJECT} object) in the sprite, adding it to the &quot;subSprites&quot; property (calls {@link CB_GraphicSprites#insertSubSprite} internally and returns its returning value). With only one parameter which belongs to the &quot;subSprite&quot; parameter of the {@link CB_GraphicSprites#insertSubSprite} method.</p>","name":"insert"},{"type":{"names":["function"]},"description":"<p>Read-only property which is a method that returns all the internal sub-sprites ({@link CB_GraphicSprites.SUBSPRITE_OBJECT} objects) in the sprite, getting them from the &quot;subSprites&quot; property (calls {@link CB_GraphicSprites#getAll} internally and returns its returning value). With two parameters (&quot;orderedByZIndex&quot; and &quot;returnValueOnFail&quot;) which belong to the parameters with the same name of the {@link CB_GraphicSprites#getAll} method.</p>","name":"getAll"},{"type":{"names":["function"]},"description":"<p>Alias for the &quot;getAll&quot; method.</p>","name":"getSubSprites"},{"type":{"names":["function"]},"description":"<p>Read-only property which is a method that returns a sub-sprite ({@link CB_GraphicSprites.SUBSPRITE_OBJECT} object) by its index (position in the &quot;subSprites&quot; array) from the sprite, getting it from the &quot;subSprites&quot; property (calls {@link CB_GraphicSprites#getSubSprite} internally and returns its returning value). With two parameters (&quot;index&quot; and &quot;returnValueOnFail&quot;) which belong to the parameters with the same name of the {@link CB_GraphicSprites#getSubSprite} method.</p>","name":"get"},{"type":{"names":["function"]},"description":"<p>Read-only property which is a method that returns a sub-sprite ({@link CB_GraphicSprites.SUBSPRITE_OBJECT} object) by its identifier from the sprite, getting it from the &quot;subSprites&quot; property (calls {@link CB_GraphicSprites#getSubSpriteById} internally and returns its returning value). With two parameters (&quot;id&quot; and &quot;returnValueOnFail&quot;) which belong to the parameters with the same name of the {@link CB_GraphicSprites#getSubSpriteById} method.</p>","name":"getById"},{"type":{"names":["function"]},"description":"<p>Read-only property which is a method that returns the index (position in the &quot;subSprites&quot; array) of a sub-sprite ({@link CB_GraphicSprites.SUBSPRITE_OBJECT} object) by its identifier (calls {@link CB_GraphicSprites#getSubSpriteIndexById} internally and returns its returning value). With only one parameter which belongs to the &quot;id&quot; parameter of the {@link CB_GraphicSprites#getSubSpriteIndexById} method.</p>","name":"getIndexById"},{"type":{"names":["function"]},"description":"<p>Read-only property which is a method that executes the desired function for each sub-sprite ({@link CB_GraphicSprites.SUBSPRITE_OBJECT} objects which are in the &quot;subSprites&quot; property) in the sprite (calls {@link CB_GraphicSprites#executeFunctionAllSubSprites} internally and returns its returning value). With five parameters (&quot;functionEach&quot;, &quot;orderedByZIndex&quot;, &quot;delayBetweenEach&quot;, &quot;returnSetTimeoutsArray&quot;, &quot;delayBetweenEachAffectsFirst&quot; and &quot;functionFinish&quot;) which belong to the parameters with the same name of the {@link CB_GraphicSprites#executeFunctionAllSubSprites} method.</p>","name":"executeFunctionAll"},{"type":{"names":["function"]},"description":"<p>Alias for the &quot;executeFunctionAll&quot; method.</p>","name":"executeAll"},{"type":{"names":["function"]},"description":"<p>Alias for the &quot;executeFunctionAll&quot; method.</p>","name":"forEach"},{"type":{"names":["function"]},"description":"<p>Read-only property which is a method that returns the z-index (&quot;z-index&quot; property) of the sprite (calls {@link CB_GraphicSprites#getZIndexSprite} internally and returns its returning value). With only one parameter which belongs to the &quot;returnValueOnFail&quot; parameter of the {@link CB_GraphicSprites#getZIndexSprite} method.</p>","name":"getZIndex"},{"type":{"names":["function"]},"description":"<p>Read-only property which is a method to set the z-index (&quot;z-index&quot; property) of the sprite (calls {@link CB_GraphicSprites#setZIndexSprite} internally and returns its returning value). With only one parameter which belongs to the &quot;zIndex&quot; parameter of the {@link CB_GraphicSprites#setZIndexSprite} method.</p>","name":"setZIndex"},{"type":{"names":["function"]},"description":"<p>Read-only property which is a method that tells whether the sprite is disabled or not (calls {@link CB_GraphicSprites#isDisabledSprite} internally and returns its returning value). With no parameters. A sprite is considered disabled if its sprites group parent is also disabled.</p>","name":"isDisabled"},{"type":{"names":["function"]},"description":"<p>Read-only property which is a method to disable or enable the sprite (calls {@link CB_GraphicSprites#setDisabledSprite} internally and returns its returning value). With four parameters (&quot;disabled&quot;, &quot;affectSubSprites&quot;, &quot;affectParent&quot; and &quot;affectParentChildren&quot;) which belong to the parameters with the same name of the {@link CB_GraphicSprites#setDisabledSprite} method.</p>","name":"setDisabled"},{"type":{"names":["function"]},"description":"<p>Read-only property which is a method that gets the current position of the pointer. It belongs to an index of the {@link CB_GraphicSprites#spritesGroup.sprites} array where a {@link CB_GraphicSprites.SPRITE_OBJECT} object is placed (containing a sprite). Internally, it uses the {@link CB_GraphicSprites#pointer} property. Calls {@link CB_GraphicSprites#getPointer} internally and returns its returning value. With no parameters.</p>","name":"getPointer"},{"type":{"names":["function"]},"description":"<p>Alias for the &quot;getPointer&quot; method.</p>","name":"getCurrentPosition"},{"type":{"names":["function"]},"description":"<p>Read-only property which is a method that gets the previous position of the pointer. Internally, it uses the {@link CB_GraphicSprites#pointerPrevious} property. Calls {@link CB_GraphicSprites#getPointerPrevious} internally and returns its returning value. With no parameters.</p>","name":"getPointerPrevious"},{"type":{"names":["function"]},"description":"<p>Alias for the &quot;getPointerPrevious&quot; method.</p>","name":"getPreviousPosition"},{"type":{"names":["function"]},"description":"<p>Read-only property which is a method that sets the pointer to the desired position (if possible). The position should belong to an index of the {@link CB_GraphicSprites#spritesGroup.sprites} array where a {@link CB_GraphicSprites.SPRITE_OBJECT} object is placed (containing a sprite). Internally, it modifies the {@link CB_GraphicSprites#pointer} property (if possible). If the position was updated, it will also reset the {@link CB_GraphicSprites#time} property (setting the current time in milliseconds). Calls {@link CB_GraphicSprites#setPointer} internally and returns the sprite (a {@link CB_GraphicSprites.SPRITE_OBJECT} object) which is being currently pointed (by the pointer set in the {@link CB_GraphicSprites#pointer} property). With two parameters (&quot;position&quot; and &quot;loop&quot;) which belong to the parameters with the same name of the {@link CB_GraphicSprites#setPointer} method.</p>","name":"setPointer"},{"type":{"names":["function"]},"description":"<p>Alias for the &quot;setPointer&quot; method.</p>","name":"setCurrentPosition"},{"type":{"names":["function"]},"description":"<p>Read-only property which is a method that gets the sprite (a {@link CB_GraphicSprites.SPRITE_OBJECT} object) which is being currently pointed (by the pointer set in the {@link CB_GraphicSprites#pointer} property). Calls {@link CB_GraphicSprites#getCurrent} internally and returns its returning value. With no parameters.</p>","name":"getCurrent"},{"type":{"names":["function"]},"description":"<p>Alias for the &quot;getCurrent&quot; method.</p>","name":"current"},{"type":{"names":["function"]},"description":"<p>Alias for the &quot;getCurrent&quot; method.</p>","name":"now"},{"type":{"names":["function"]},"description":"<p>Read-only property which is a method that gets the sprite which was previously pointed if any or returns null otherwise. It does not modify the {@link CB_GraphicSprites#pointer} property. Calls {@link CB_GraphicSprites#getPrevious} internally and returns its returning value. With no parameters.</p>","name":"getPrevious"},{"type":{"names":["function"]},"description":"<p>Read-only property which is a method that makes the pointer to go back to the previous position (if possible) and returns the sprite located there (if any). The position should belong to an index of the {@link CB_GraphicSprites#spritesGroup.sprites} array where a {@link CB_GraphicSprites.SPRITE_OBJECT} object is placed (containing a sprite) and it will be returned if found. Internally, it modifies the {@link CB_GraphicSprites#pointer} property (if possible). If the position was updated, it will update also the {@link CB_GraphicSprites#time} property (setting the current time in milliseconds). Calls {@link CB_GraphicSprites#setPrevious} internally and returns its returning value. With only one parameter which belongs to the &quot;loop&quot; parameter of the {@link CB_GraphicSprites#setPrevious} method.</p>","name":"setPrevious"},{"type":{"names":["function"]},"description":"<p>Alias for the &quot;setPrevious&quot; method.</p>","name":"previous"},{"type":{"names":["function"]},"description":"<p>Read-only property which is a method that makes the pointer to advance to the next position (if possible) and returns the sprite located there (if any). The position should belong to an index of the {@link CB_GraphicSprites#spritesGroup.sprites} array where a {@link CB_GraphicSprites.SPRITE_OBJECT} object is placed (containing a sprite) and it will be returned if found. Internally, it modifies the {@link CB_GraphicSprites#pointer} property (if possible). If the position was updated, it will also update the {@link CB_GraphicSprites#time} property (setting the current time in milliseconds). Calls {@link CB_GraphicSprites#setNext} internally and returns its returning value. With only one parameter which belongs to the &quot;loop&quot; parameter of the {@link CB_GraphicSprites#setNext} method.</p>","name":"setNext"},{"type":{"names":["function"]},"description":"<p>Alias for the &quot;setNext&quot; method.</p>","name":"next"},{"type":{"names":["function"]},"description":"<p>Read-only property which is a method that sets the desired value of a given property name to the sprite itself and all of its sub-sprites (if any). Calls {@link CB_GraphicSprites#setPropertyCascade} internally and returns its returning value. With two parameters (&quot;propertyName&quot; and &quot;value&quot;) which belong to the parameters with the same name of the {@link CB_GraphicSprites#setPropertyCascade} method.</p>","name":"setPropertyCascade"}],"longname":"CB_GraphicSprites.SPRITE_OBJECT","scope":"static"},{"comment":"/**\r\n * An object with the information that belongs to a group of graphic sprites.\r\n * @example\r\n {\r\n\t//'my_sprites_1':\r\n\tid: \"my_sprites_1\",\r\n\tsrc: \"path/to/image.gif\",\r\n\tsrcType: CB_GraphicSprites.SRC_TYPES.IMAGE,\r\n\tsrcLeft: 10,\r\n\tsrcTop: 20,\r\n\tsrcWidth: 64,\r\n\tsrcHeight: 32,\r\n\tleft: 10,\r\n\ttop: 20,\r\n\twidth: 64,\r\n\theight: 32,\r\n\tdata: { datum_1: \"value_1\", datum_2: 2, datum_3: [ \"a\", \"b\", \"c\" ] },\r\n\tsprites:\r\n\t[\r\n\t\t//'my_sprite_1':\r\n\t\t{\r\n\t\t\tid: \"my_sprite_1\",\r\n\t\t\tsubSprites:\r\n\t\t\t[\r\n\t\t\t\t//'my_subsprite_1':\r\n\t\t\t\t{ id: \"my_subsprite_1\", srcLeft: 10, srcTop: 20, zIndex: 1 },\r\n\t\t\t\t//'my_subsprite_2':\r\n\t\t\t\t{ id: \"my_subsprite_2\", srcLeft: 20, srcTop: 40, zIndex: 2 }\r\n\t\t\t]\r\n\t\t},\r\n\t\t//'my_sprite_2':\r\n\t\t{\r\n\t\t\tid: \"my_sprite_2\",\r\n\t\t\tsubSprites:\r\n\t\t\t[\r\n\t\t\t\t//'my_subsprite_3':\r\n\t\t\t\t{ id: \"my_subsprite_3\", srcLeft: 30, srcTop: 60, zIndex: 1 },\r\n\t\t\t\t//'my_subsprite_4':\r\n\t\t\t\t{ id: \"my_subsprite_4\", srcLeft: 40, srcTop: 80, zIndex: 2 }\r\n\t\t\t]\r\n\t\t}\r\n\t]\r\n } \r\n * @memberof CB_GraphicSprites\r\n * @typedef {Object} CB_GraphicSprites.SPRITES_OBJECT\r\n * @property {string|*} [id='CB_GraphicSprites_' + CB_GraphicSprites._idUnique++] - Identifier of the group of graphic sprites (also used as the {@link CB_GraphicSprites.id} property for the {@link CB_GraphicSprites} object). It should be unique. Recommended. It must be a value which evaluates to true. By default, it is generated automatically (with an internal counter).\r\n * @property {*} [src=\"\"] - Source of origin. Can be a path or identifier of an image, text, bitmap, 3D object, etc. They can be used for any kind of source you may think of, including (but not limited to) one sprites sheet or more, one atlas or more, etc. or even a mix of all of them.\r\n * @property {string} [srcType={@link CB_GraphicSprites.SRC_TYPES.DEFAULT}] - Type of the source of origin. It should point to a property of the {@link CB_GraphicSprites.SRC_TYPES} object. You can use other values of the {@link CB_GraphicSprites.SRC_TYPES} object or create new ones.\r\n * @property {number} [srcLeft={@link CB_GraphicSprites.LEFT_SOURCE_DEFAULT}] - Left (horizontal) position in the original source (having in mind its real width and height). Unit agnostic (only numeric values are allowed). If not provided, as default it will use the value from {@link CB_GraphicSprites.LEFT_SOURCE_DEFAULT}.\r\n * @property {number} [srcTop={@link CB_GraphicSprites.TOP_SOURCE_DEFAULT}] - Top (vertical) position in the original source (having in mind its real width and height). Unit agnostic (only numeric values are allowed). If not provided, as default it will use the value from {@link CB_GraphicSprites.TOP_SOURCE_DEFAULT}.\r\n * @property {number} [srcWidth={@link CB_GraphicSprites.WIDTH_SOURCE_DEFAULT}] - Width of the original source. Unit agnostic (only numeric values are allowed). If not provided, as default it will use the value from {@link CB_GraphicSprites.WIDTH_SOURCE_DEFAULT}.\r\n * @property {number} [srcHeight={@link CB_GraphicSprites.HEIGHT_SOURCE_DEFAULT}] - Height of the original source. Unit agnostic (only numeric values are allowed). If not provided, as default it will use the value from {@link CB_GraphicSprites.HEIGHT_SOURCE_DEFAULT}.\r\n * @property {number} [left={@link CB_GraphicSprites.LEFT_DEFAULT}] - Left (horizontal) position in the destiny. Unit agnostic (only numeric values are allowed). If not provided, as default it will use the value from {@link CB_GraphicSprites.LEFT_DEFAULT}.\r\n * @property {number} [top={@link CB_GraphicSprites.TOP_DEFAULT}] - Top (vertical) position in the destiny. Unit agnostic (only numeric values are allowed). If not provided, as default it will use the value from {@link CB_GraphicSprites.TOP_DEFAULT}.\r\n * @property {number} [width={@link CB_GraphicSprites.WIDTH_DEFAULT}] - Width of the destiny. Unit agnostic (only numeric values are allowed). If not provided, as default it will use the value from {@link CB_GraphicSprites.WIDTH_DEFAULT}.\r\n * @property {number} [height={@link CB_GraphicSprites.HEIGHT_DEFAULT}] - Height of the destiny. Unit agnostic (only numeric values are allowed). If not provided, as default it will use the value from {@link CB_GraphicSprites.HEIGHT_DEFAULT}.\r\n * @property {number} [zIndex={@link CB_GraphicSprites.ZINDEX_DEFAULT}] - The z-index for the destiny (only numeric values which are not zero (0) are allowed). Also used as the {@link CB_GraphicSprites.zIndex} property for the {@link CB_GraphicSprites} object. If not provided, as default it will use the value from {@link CB_GraphicSprites.ZINDEX_DEFAULT}. To change the value of this property, use the {@link CB_GraphicSprites#setZIndex} method (which will call the {@link CB_GraphicSpritesScene#updateGraphicSpritesByZIndex} method internally if there is a {@link CB_GraphicSpritesScene} parent object).\r\n * @property {boolean} [disabled=false] - Tells whether this sprites group (and the {@link CB_GraphicSprites} object itself) is disabled or not. If not provided, as default it will be false (which means it is enabled).\r\n * @property {object} [data={ 'that' : CB_GraphicSprites.SPRITES_OBJECT, 'getThis' = function() { return this.that; } }] - Object with any additional data desired which can be any kind. It will always have a \"that\" property pointing to the {@link CB_GraphicSprites.SPRITES_OBJECT} object where it belongs to and a function in its \"getThis\" property returning the same value (added automatically). These properties (\"that\" and \"getThis\") cannot be overridden.\r\n * @property {array} [sprites=[]] - Numeric array containing {@link CB_GraphicSprites.SPRITE_OBJECT} objects with all the sprites that will be used. Recommended at least to provide one {@link CB_GraphicSprites.SPRITE_OBJECT} object in the first index.\r\n * @property {array} spritesByZIndex - Read-only property containing a numeric array of all the {@link CB_GraphicSprites.SPRITE_OBJECT} objects ordered by their z-index (\"zIndex\" property). It is updated automatically when the z-index of a sprite is set with its \"setZIndex\" method (or when calling the {@link CB_GraphicSprites#setZIndexSprite} method) or when inserting/removing sprites through the {@link CB_GraphicSprites#insertSprites}, {@link CB_GraphicSprites#insertSprite}, {@link CB_GraphicSprites#removeSprite} or {@link CB_GraphicSprites#removeSpriteById} methods.\r\n * @property {boolean} [byReference_DEFAULT=false] - Default value to use as the \"byReference\" parameter for the constructor and for the {@link CB_GraphicSprites#insertSprites} method. If a boolean value is not provided, it will be parsed to boolean (resulting undefined to be false).\r\n * @property {*} [parent=undefined|{@link CB_GraphicSpritesScene}] - Property pointing to or containing its parent (also used as the {@link CB_GraphicSprites.parent} property for the {@link CB_GraphicSprites} object). It could be a {@link CB_GraphicSpritesScene} object.\r\n * @property {CB_GraphicSprites} container - Read-only property pointing to the {@link CB_GraphicSprites} object which contains it.\r\n * @property {boolean} isSpritesGroup - Read-only property which is always set to true to help identify this type of object.\r\n * @property {'spritesGroup'} type - Read-only property indicating the type of object (always \"spritesGroup\"). \r\n * @property {integer} [position=undefined] - Read-only property indicating the position of this {@link CB_GraphicSprites} object in the array which is set the \"items\" property inside the {@link CB_GraphicSpritesScene#spritesGroups} object which is in the {@link CB_GraphicSpritesScene} object parent (if any).\r\n * @property {integer} [positionByZIndex=undefined] - Read-only property indicating the position of this {@link CB_GraphicSprites} object in the array which is set the \"itemsByZIndex\" property inside the {@link CB_GraphicSpritesScene#spritesGroups} object which is in the {@link CB_GraphicSpritesScene} object parent (if any).\r\n */","meta":{"filename":"CB_GraphicSprites.js","lineno":151,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image","code":{}},"description":"<p>An object with the information that belongs to a group of graphic sprites.</p>","examples":["{\r\n\t//'my_sprites_1':\r\n\tid: \"my_sprites_1\",\r\n\tsrc: \"path/to/image.gif\",\r\n\tsrcType: CB_GraphicSprites.SRC_TYPES.IMAGE,\r\n\tsrcLeft: 10,\r\n\tsrcTop: 20,\r\n\tsrcWidth: 64,\r\n\tsrcHeight: 32,\r\n\tleft: 10,\r\n\ttop: 20,\r\n\twidth: 64,\r\n\theight: 32,\r\n\tdata: { datum_1: \"value_1\", datum_2: 2, datum_3: [ \"a\", \"b\", \"c\" ] },\r\n\tsprites:\r\n\t[\r\n\t\t//'my_sprite_1':\r\n\t\t{\r\n\t\t\tid: \"my_sprite_1\",\r\n\t\t\tsubSprites:\r\n\t\t\t[\r\n\t\t\t\t//'my_subsprite_1':\r\n\t\t\t\t{ id: \"my_subsprite_1\", srcLeft: 10, srcTop: 20, zIndex: 1 },\r\n\t\t\t\t//'my_subsprite_2':\r\n\t\t\t\t{ id: \"my_subsprite_2\", srcLeft: 20, srcTop: 40, zIndex: 2 }\r\n\t\t\t]\r\n\t\t},\r\n\t\t//'my_sprite_2':\r\n\t\t{\r\n\t\t\tid: \"my_sprite_2\",\r\n\t\t\tsubSprites:\r\n\t\t\t[\r\n\t\t\t\t//'my_subsprite_3':\r\n\t\t\t\t{ id: \"my_subsprite_3\", srcLeft: 30, srcTop: 60, zIndex: 1 },\r\n\t\t\t\t//'my_subsprite_4':\r\n\t\t\t\t{ id: \"my_subsprite_4\", srcLeft: 40, srcTop: 80, zIndex: 2 }\r\n\t\t\t]\r\n\t\t}\r\n\t]\r\n } \r "],"memberof":"CB_GraphicSprites","kind":"typedef","name":"SPRITES_OBJECT","type":{"names":["Object"]},"properties":[{"type":{"names":["string","*"]},"optional":true,"defaultvalue":"'CB_GraphicSprites_' + CB_GraphicSprites._idUnique++","description":"<p>Identifier of the group of graphic sprites (also used as the {@link CB_GraphicSprites.id} property for the {@link CB_GraphicSprites} object). It should be unique. Recommended. It must be a value which evaluates to true. By default, it is generated automatically (with an internal counter).</p>","name":"id"},{"type":{"names":["*"]},"optional":true,"defaultvalue":"\"\"","description":"<p>Source of origin. Can be a path or identifier of an image, text, bitmap, 3D object, etc. They can be used for any kind of source you may think of, including (but not limited to) one sprites sheet or more, one atlas or more, etc. or even a mix of all of them.</p>","name":"src"},{"type":{"names":["string"]},"optional":true,"defaultvalue":"{@link CB_GraphicSprites.SRC_TYPES.DEFAULT}","description":"<p>Type of the source of origin. It should point to a property of the {@link CB_GraphicSprites.SRC_TYPES} object. You can use other values of the {@link CB_GraphicSprites.SRC_TYPES} object or create new ones.</p>","name":"srcType"},{"type":{"names":["number"]},"optional":true,"defaultvalue":"{@link CB_GraphicSprites.LEFT_SOURCE_DEFAULT}","description":"<p>Left (horizontal) position in the original source (having in mind its real width and height). Unit agnostic (only numeric values are allowed). If not provided, as default it will use the value from {@link CB_GraphicSprites.LEFT_SOURCE_DEFAULT}.</p>","name":"srcLeft"},{"type":{"names":["number"]},"optional":true,"defaultvalue":"{@link CB_GraphicSprites.TOP_SOURCE_DEFAULT}","description":"<p>Top (vertical) position in the original source (having in mind its real width and height). Unit agnostic (only numeric values are allowed). If not provided, as default it will use the value from {@link CB_GraphicSprites.TOP_SOURCE_DEFAULT}.</p>","name":"srcTop"},{"type":{"names":["number"]},"optional":true,"defaultvalue":"{@link CB_GraphicSprites.WIDTH_SOURCE_DEFAULT}","description":"<p>Width of the original source. Unit agnostic (only numeric values are allowed). If not provided, as default it will use the value from {@link CB_GraphicSprites.WIDTH_SOURCE_DEFAULT}.</p>","name":"srcWidth"},{"type":{"names":["number"]},"optional":true,"defaultvalue":"{@link CB_GraphicSprites.HEIGHT_SOURCE_DEFAULT}","description":"<p>Height of the original source. Unit agnostic (only numeric values are allowed). If not provided, as default it will use the value from {@link CB_GraphicSprites.HEIGHT_SOURCE_DEFAULT}.</p>","name":"srcHeight"},{"type":{"names":["number"]},"optional":true,"defaultvalue":"{@link CB_GraphicSprites.LEFT_DEFAULT}","description":"<p>Left (horizontal) position in the destiny. Unit agnostic (only numeric values are allowed). If not provided, as default it will use the value from {@link CB_GraphicSprites.LEFT_DEFAULT}.</p>","name":"left"},{"type":{"names":["number"]},"optional":true,"defaultvalue":"{@link CB_GraphicSprites.TOP_DEFAULT}","description":"<p>Top (vertical) position in the destiny. Unit agnostic (only numeric values are allowed). If not provided, as default it will use the value from {@link CB_GraphicSprites.TOP_DEFAULT}.</p>","name":"top"},{"type":{"names":["number"]},"optional":true,"defaultvalue":"{@link CB_GraphicSprites.WIDTH_DEFAULT}","description":"<p>Width of the destiny. Unit agnostic (only numeric values are allowed). If not provided, as default it will use the value from {@link CB_GraphicSprites.WIDTH_DEFAULT}.</p>","name":"width"},{"type":{"names":["number"]},"optional":true,"defaultvalue":"{@link CB_GraphicSprites.HEIGHT_DEFAULT}","description":"<p>Height of the destiny. Unit agnostic (only numeric values are allowed). If not provided, as default it will use the value from {@link CB_GraphicSprites.HEIGHT_DEFAULT}.</p>","name":"height"},{"type":{"names":["number"]},"optional":true,"defaultvalue":"{@link CB_GraphicSprites.ZINDEX_DEFAULT}","description":"<p>The z-index for the destiny (only numeric values which are not zero (0) are allowed). Also used as the {@link CB_GraphicSprites.zIndex} property for the {@link CB_GraphicSprites} object. If not provided, as default it will use the value from {@link CB_GraphicSprites.ZINDEX_DEFAULT}. To change the value of this property, use the {@link CB_GraphicSprites#setZIndex} method (which will call the {@link CB_GraphicSpritesScene#updateGraphicSpritesByZIndex} method internally if there is a {@link CB_GraphicSpritesScene} parent object).</p>","name":"zIndex"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>Tells whether this sprites group (and the {@link CB_GraphicSprites} object itself) is disabled or not. If not provided, as default it will be false (which means it is enabled).</p>","name":"disabled"},{"type":{"names":["object"]},"optional":true,"defaultvalue":"{ 'that' : CB_GraphicSprites.SPRITES_OBJECT, 'getThis' = function() { return this.that; } }","description":"<p>Object with any additional data desired which can be any kind. It will always have a &quot;that&quot; property pointing to the {@link CB_GraphicSprites.SPRITES_OBJECT} object where it belongs to and a function in its &quot;getThis&quot; property returning the same value (added automatically). These properties (&quot;that&quot; and &quot;getThis&quot;) cannot be overridden.</p>","name":"data"},{"type":{"names":["array"]},"optional":true,"defaultvalue":"[]","description":"<p>Numeric array containing {@link CB_GraphicSprites.SPRITE_OBJECT} objects with all the sprites that will be used. Recommended at least to provide one {@link CB_GraphicSprites.SPRITE_OBJECT} object in the first index.</p>","name":"sprites"},{"type":{"names":["array"]},"description":"<p>Read-only property containing a numeric array of all the {@link CB_GraphicSprites.SPRITE_OBJECT} objects ordered by their z-index (&quot;zIndex&quot; property). It is updated automatically when the z-index of a sprite is set with its &quot;setZIndex&quot; method (or when calling the {@link CB_GraphicSprites#setZIndexSprite} method) or when inserting/removing sprites through the {@link CB_GraphicSprites#insertSprites}, {@link CB_GraphicSprites#insertSprite}, {@link CB_GraphicSprites#removeSprite} or {@link CB_GraphicSprites#removeSpriteById} methods.</p>","name":"spritesByZIndex"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>Default value to use as the &quot;byReference&quot; parameter for the constructor and for the {@link CB_GraphicSprites#insertSprites} method. If a boolean value is not provided, it will be parsed to boolean (resulting undefined to be false).</p>","name":"byReference_DEFAULT"},{"type":{"names":["*"]},"optional":true,"defaultvalue":"undefined|{@link CB_GraphicSpritesScene}","description":"<p>Property pointing to or containing its parent (also used as the {@link CB_GraphicSprites.parent} property for the {@link CB_GraphicSprites} object). It could be a {@link CB_GraphicSpritesScene} object.</p>","name":"parent"},{"type":{"names":["CB_GraphicSprites"]},"description":"<p>Read-only property pointing to the {@link CB_GraphicSprites} object which contains it.</p>","name":"container"},{"type":{"names":["boolean"]},"description":"<p>Read-only property which is always set to true to help identify this type of object.</p>","name":"isSpritesGroup"},{"type":{"names":["'spritesGroup'"]},"description":"<p>Read-only property indicating the type of object (always &quot;spritesGroup&quot;).</p>","name":"type"},{"type":{"names":["integer"]},"optional":true,"description":"<p>Read-only property indicating the position of this {@link CB_GraphicSprites} object in the array which is set the &quot;items&quot; property inside the {@link CB_GraphicSpritesScene#spritesGroups} object which is in the {@link CB_GraphicSpritesScene} object parent (if any).</p>","name":"position"},{"type":{"names":["integer"]},"optional":true,"description":"<p>Read-only property indicating the position of this {@link CB_GraphicSprites} object in the array which is set the &quot;itemsByZIndex&quot; property inside the {@link CB_GraphicSpritesScene#spritesGroups} object which is in the {@link CB_GraphicSpritesScene} object parent (if any).</p>","name":"positionByZIndex"}],"longname":"CB_GraphicSprites.SPRITES_OBJECT","scope":"static"},{"comment":"/**\r\n * Class to manage a group of graphic sprites (2D or 3D).\r\n * @class\r\n * @classdesc Class to manage a group of graphic sprites (2D or 3D).\r\n * @param {CB_GraphicSprites.SPRITES_OBJECT} [spritesGroup] - Object with the desired sprites. The information will be used for the {@link CB_GraphicSprites#spritesGroup} property. Used as the \"spritesGroup\" parameter when calling the {@link CB_GraphicSprites#insertSprites} method internally.\r\n * @param {boolean} [byReference=!!{@link CB_GraphicSprites.SPRITES_OBJECT.byReference_DEFAULT}] - This value will be used as the default value when the \"byReference\" property is not given in the sprites ({@link CB_GraphicSprites.SPRITE_OBJECT} objects) or sub-sprites ({@link CB_GraphicSprites.SUBSPRITE_OBJECT} objects). The value will be stored in the {@link CB_GraphicSprites#byReference_DEFAULT} property. If a boolean value is not provided, it will use the value of the {@link CB_GraphicSprites.SPRITES_OBJECT.byReference_DEFAULT} property of the given {@link CB_GraphicSprites.SPRITES_OBJECT} object (parsed to boolean).\r\n * @returns {CB_GraphicSprites} Returns a new {@link CB_GraphicSprites} object.\r\n * @todo Think about a \"createCopy\" parameter on different the insert methods (to insert sprites groups/graphic sprites objects, etc.) so it will make a copy of the object to avoid using/modifying the original one. If the \"createCopy\" is set to false, it should always use the object as reference (using/modifying it).\r\n * @todo Think about a method to remove a sprite when the same sprite is received by parameter. The same with sub-sprites, receiving the sub-sprite by parameter. The same to remove the sprites group object, receiving a sprites group object by parameter. Only remove them if they match exactly.\r\n */","meta":{"range":[40840,44220],"filename":"CB_GraphicSprites.js","lineno":232,"columnno":4,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image","code":{"id":"astnode100038302","name":"CB_GraphicSprites","type":"FunctionExpression"},"vars":{"this.id":"CB_GraphicSprites#id","this.parent":"CB_GraphicSprites#parent","this.zIndex":"CB_GraphicSprites#zIndex","this.spritesGroup":"CB_GraphicSprites#spritesGroup","this.pointer":"CB_GraphicSprites#pointer","this.pointerPrevious":"CB_GraphicSprites#pointerPrevious","this.time":"CB_GraphicSprites#time","this.byReference_DEFAULT":"CB_GraphicSprites#byReference_DEFAULT"}},"description":"<p>Class to manage a group of graphic sprites (2D or 3D).</p>","kind":"class","classdesc":"<p>Class to manage a group of graphic sprites (2D or 3D).</p>","params":[{"type":{"names":["CB_GraphicSprites.SPRITES_OBJECT"]},"optional":true,"description":"<p>Object with the desired sprites. The information will be used for the {@link CB_GraphicSprites#spritesGroup} property. Used as the &quot;spritesGroup&quot; parameter when calling the {@link CB_GraphicSprites#insertSprites} method internally.</p>","name":"spritesGroup"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":"!!{@link CB_GraphicSprites.SPRITES_OBJECT.byReference_DEFAULT}","description":"<p>This value will be used as the default value when the &quot;byReference&quot; property is not given in the sprites ({@link CB_GraphicSprites.SPRITE_OBJECT} objects) or sub-sprites ({@link CB_GraphicSprites.SUBSPRITE_OBJECT} objects). The value will be stored in the {@link CB_GraphicSprites#byReference_DEFAULT} property. If a boolean value is not provided, it will use the value of the {@link CB_GraphicSprites.SPRITES_OBJECT.byReference_DEFAULT} property of the given {@link CB_GraphicSprites.SPRITES_OBJECT} object (parsed to boolean).</p>","name":"byReference"}],"returns":[{"type":{"names":["CB_GraphicSprites"]},"description":"<p>Returns a new {@link CB_GraphicSprites} object.</p>"}],"todo":["Think about a \"createCopy\" parameter on different the insert methods (to insert sprites groups/graphic sprites objects, etc.) so it will make a copy of the object to avoid using/modifying the original one. If the \"createCopy\" is set to false, it should always use the object as reference (using/modifying it).","Think about a method to remove a sprite when the same sprite is received by parameter. The same with sub-sprites, receiving the sub-sprite by parameter. The same to remove the sprites group object, receiving a sprites group object by parameter. Only remove them if they match exactly."],"name":"CB_GraphicSprites","longname":"CB_GraphicSprites","scope":"global"},{"comment":"/**\r\n * Property which is always set to true to help identify this type of object.\r\n *\t@constant\r\n * @type {boolean}\r\n * @default\r\n */","meta":{"range":[44378,44422],"filename":"CB_GraphicSprites.js","lineno":325,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image","code":{"id":"astnode100038383","name":"CB_GraphicSprites.prototype.isSprites","type":"Literal","value":true,"paramnames":[]}},"description":"<p>Property which is always set to true to help identify this type of object.</p>","kind":"constant","type":{"names":["boolean"]},"defaultvalue":true,"name":"isSprites","longname":"CB_GraphicSprites#isSprites","memberof":"CB_GraphicSprites","scope":"instance"},{"comment":"/**\r\n * Indicates the type of object (always \"sprites\").\r\n *\t@constant\r\n * @type {string}\r\n * @default\r\n */","meta":{"range":[44540,44584],"filename":"CB_GraphicSprites.js","lineno":334,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image","code":{"id":"astnode100038391","name":"CB_GraphicSprites.prototype.type","type":"Literal","value":"sprites","paramnames":[]}},"description":"<p>Indicates the type of object (always &quot;sprites&quot;).</p>","kind":"constant","type":{"names":["string"]},"defaultvalue":"sprites","name":"type","longname":"CB_GraphicSprites#type","memberof":"CB_GraphicSprites","scope":"instance"},{"comment":"/**\r\n * Object with some \"srcType\". Each property of this object belong to one source type, having an integer as value which represents it. You can define more source types here.\r\n *\t@constant\r\n * @type {object}\r\n * @default\r\n */","meta":{"range":[44824,45049],"filename":"CB_GraphicSprites.js","lineno":343,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image","code":{"id":"astnode100038399","name":"CB_GraphicSprites.SRC_TYPES","type":"ObjectExpression","value":"{\"IMAGE\":0,\"TEXT\":1,\"SEGMENT\":2,\"PIXEL\":3,\"RECTANGLE\":4,\"CIRCLE\":5,\"ARC\":6,\"ELLIPSE\":7,\"TRIANGLE\":8,\"BEZIER_CURVE\":9,\"QUADRATIC_BEZIER_CURVE\":10,\"BITMAP\":11,\"MAP\":12}","paramnames":[]}},"description":"<p>Object with some &quot;srcType&quot;. Each property of this object belong to one source type, having an integer as value which represents it. You can define more source types here.</p>","kind":"constant","type":{"names":["object"]},"defaultvalue":"{\"IMAGE\":0,\"TEXT\":1,\"SEGMENT\":2,\"PIXEL\":3,\"RECTANGLE\":4,\"CIRCLE\":5,\"ARC\":6,\"ELLIPSE\":7,\"TRIANGLE\":8,\"BEZIER_CURVE\":9,\"QUADRATIC_BEZIER_CURVE\":10,\"BITMAP\":11,\"MAP\":12}","defaultvaluetype":"object","name":"SRC_TYPES","longname":"CB_GraphicSprites.SRC_TYPES","memberof":"CB_GraphicSprites","scope":"static"},{"comment":"/**\r\n * Default \"srcType\", the type of the original source.\r\n *\t@constant\r\n * @type {integer}\r\n * @default\r\n */","meta":{"range":[45170,45241],"filename":"CB_GraphicSprites.js","lineno":367,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image","code":{"id":"astnode100038431","name":"CB_GraphicSprites.SRC_TYPES.DEFAULT","type":"MemberExpression","value":"CB_GraphicSprites.SRC_TYPES.IMAGE","paramnames":[]}},"description":"<p>Default &quot;srcType&quot;, the type of the original source.</p>","kind":"constant","type":{"names":["integer"]},"name":"DEFAULT","longname":"CB_GraphicSprites.SRC_TYPES.DEFAULT","memberof":"CB_GraphicSprites.SRC_TYPES","scope":"static"},{"comment":"/**\r\n * Default width (\"srcWidth\") of the original source. Unit agnostic.\r\n *\t@constant\r\n * @type {number}\r\n * @default\r\n */","meta":{"range":[45374,45417],"filename":"CB_GraphicSprites.js","lineno":375,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image","code":{"id":"astnode100038443","name":"CB_GraphicSprites.WIDTH_SOURCE_DEFAULT","type":"Literal","value":32,"paramnames":[]}},"description":"<p>Default width (&quot;srcWidth&quot;) of the original source. Unit agnostic.</p>","kind":"constant","type":{"names":["number"]},"defaultvalue":32,"name":"WIDTH_SOURCE_DEFAULT","longname":"CB_GraphicSprites.WIDTH_SOURCE_DEFAULT","memberof":"CB_GraphicSprites","scope":"static"},{"comment":"/**\r\n * Default height (\"srcHeight\") of the original source. Unit agnostic.\r\n *\t@constant\r\n * @type {number}\r\n * @default\r\n */","meta":{"range":[45550,45594],"filename":"CB_GraphicSprites.js","lineno":382,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image","code":{"id":"astnode100038449","name":"CB_GraphicSprites.HEIGHT_SOURCE_DEFAULT","type":"Literal","value":32,"paramnames":[]}},"description":"<p>Default height (&quot;srcHeight&quot;) of the original source. Unit agnostic.</p>","kind":"constant","type":{"names":["number"]},"defaultvalue":32,"name":"HEIGHT_SOURCE_DEFAULT","longname":"CB_GraphicSprites.HEIGHT_SOURCE_DEFAULT","memberof":"CB_GraphicSprites","scope":"static"},{"comment":"/**\r\n * Default left (\"srcLeft\", horizontal position) in the original source. Unit agnostic.\r\n *\t@constant\r\n * @type {number}\r\n * @default\r\n */","meta":{"range":[45746,45787],"filename":"CB_GraphicSprites.js","lineno":390,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image","code":{"id":"astnode100038455","name":"CB_GraphicSprites.LEFT_SOURCE_DEFAULT","type":"Literal","value":0,"paramnames":[]}},"description":"<p>Default left (&quot;srcLeft&quot;, horizontal position) in the original source. Unit agnostic.</p>","kind":"constant","type":{"names":["number"]},"defaultvalue":0,"name":"LEFT_SOURCE_DEFAULT","longname":"CB_GraphicSprites.LEFT_SOURCE_DEFAULT","memberof":"CB_GraphicSprites","scope":"static"},{"comment":"/**\r\n * Default top (\"srcTop\", vertical position) in the original source. Unit agnostic.\r\n *\t@constant\r\n * @type {number}\r\n * @default\r\n */","meta":{"range":[45933,45973],"filename":"CB_GraphicSprites.js","lineno":397,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image","code":{"id":"astnode100038461","name":"CB_GraphicSprites.TOP_SOURCE_DEFAULT","type":"Literal","value":0,"paramnames":[]}},"description":"<p>Default top (&quot;srcTop&quot;, vertical position) in the original source. Unit agnostic.</p>","kind":"constant","type":{"names":["number"]},"defaultvalue":0,"name":"TOP_SOURCE_DEFAULT","longname":"CB_GraphicSprites.TOP_SOURCE_DEFAULT","memberof":"CB_GraphicSprites","scope":"static"},{"comment":"/**\r\n * Default \"width\" of the destiny. Unit agnostic.\r\n *\t@constant\r\n * @type {number}\r\n * @default\r\n */","meta":{"range":[46087,46159],"filename":"CB_GraphicSprites.js","lineno":405,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image","code":{"id":"astnode100038467","name":"CB_GraphicSprites.WIDTH_DEFAULT","type":"MemberExpression","value":"CB_GraphicSprites.WIDTH_SOURCE_DEFAULT","paramnames":[]}},"description":"<p>Default &quot;width&quot; of the destiny. Unit agnostic.</p>","kind":"constant","type":{"names":["number"]},"name":"WIDTH_DEFAULT","longname":"CB_GraphicSprites.WIDTH_DEFAULT","memberof":"CB_GraphicSprites","scope":"static"},{"comment":"/**\r\n * Default \"height\" of the destiny. Unit agnostic.\r\n *\t@constant\r\n * @type {number}\r\n * @default\r\n */","meta":{"range":[46272,46346],"filename":"CB_GraphicSprites.js","lineno":412,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image","code":{"id":"astnode100038475","name":"CB_GraphicSprites.HEIGHT_DEFAULT","type":"MemberExpression","value":"CB_GraphicSprites.HEIGHT_SOURCE_DEFAULT","paramnames":[]}},"description":"<p>Default &quot;height&quot; of the destiny. Unit agnostic.</p>","kind":"constant","type":{"names":["number"]},"name":"HEIGHT_DEFAULT","longname":"CB_GraphicSprites.HEIGHT_DEFAULT","memberof":"CB_GraphicSprites","scope":"static"},{"comment":"/**\r\n * Default \"left\" (horizontal position) in the destiny. Unit agnostic.\r\n *\t@constant\r\n * @type {number}\r\n * @default\r\n */","meta":{"range":[46481,46515],"filename":"CB_GraphicSprites.js","lineno":420,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image","code":{"id":"astnode100038483","name":"CB_GraphicSprites.LEFT_DEFAULT","type":"Literal","value":0,"paramnames":[]}},"description":"<p>Default &quot;left&quot; (horizontal position) in the destiny. Unit agnostic.</p>","kind":"constant","type":{"names":["number"]},"defaultvalue":0,"name":"LEFT_DEFAULT","longname":"CB_GraphicSprites.LEFT_DEFAULT","memberof":"CB_GraphicSprites","scope":"static"},{"comment":"/**\r\n * Default \"top\" (vertical position) in the destiny. Unit agnostic.\r\n *\t@constant\r\n * @type {number}\r\n * @default\r\n */","meta":{"range":[46645,46678],"filename":"CB_GraphicSprites.js","lineno":427,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image","code":{"id":"astnode100038489","name":"CB_GraphicSprites.TOP_DEFAULT","type":"Literal","value":0,"paramnames":[]}},"description":"<p>Default &quot;top&quot; (vertical position) in the destiny. Unit agnostic.</p>","kind":"constant","type":{"names":["number"]},"defaultvalue":0,"name":"TOP_DEFAULT","longname":"CB_GraphicSprites.TOP_DEFAULT","memberof":"CB_GraphicSprites","scope":"static"},{"comment":"/**\r\n * Default \"zIndex\" in the destiny.\r\n *\t@constant\r\n * @type {number}\r\n * @default\r\n */","meta":{"range":[46778,46814],"filename":"CB_GraphicSprites.js","lineno":435,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image","code":{"id":"astnode100038495","name":"CB_GraphicSprites.ZINDEX_DEFAULT","type":"Literal","value":1,"paramnames":[]}},"description":"<p>Default &quot;zIndex&quot; in the destiny.</p>","kind":"constant","type":{"names":["number"]},"defaultvalue":1,"name":"ZINDEX_DEFAULT","longname":"CB_GraphicSprites.ZINDEX_DEFAULT","memberof":"CB_GraphicSprites","scope":"static"},{"comment":"/**\r\n * Destroys the graphic sprites object (removing all the sprites and their sub-sprites, etc.) and frees memory.\r\n * @function\r\n */","meta":{"range":[47425,47552],"filename":"CB_GraphicSprites.js","lineno":457,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image","code":{"id":"astnode100038539","name":"CB_GraphicSprites.prototype.destructor","type":"FunctionExpression","paramnames":[]}},"description":"<p>Destroys the graphic sprites object (removing all the sprites and their sub-sprites, etc.) and frees memory.</p>","kind":"function","name":"destructor","longname":"CB_GraphicSprites#destructor","memberof":"CB_GraphicSprites","scope":"instance"},{"comment":"/**\r\n * Alias for {@link CB_GraphicSprites#removeSprites}.\r\n * @function CB_GraphicSprites#removeAll\r\n * @see {@link CB_GraphicSprites#removeSprites}\r\n */","meta":{"filename":"CB_GraphicSprites.js","lineno":464,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image","code":{}},"description":"<p>Alias for {@link CB_GraphicSprites#removeSprites}.</p>","kind":"function","name":"removeAll","see":["{@link CB_GraphicSprites#removeSprites}"],"memberof":"CB_GraphicSprites","longname":"CB_GraphicSprites#removeAll","scope":"instance"},{"comment":"/**\r\n * Alias for {@link CB_GraphicSprites#removeSprites}.\r\n * @function CB_GraphicSprites#removeSpritesGroup\r\n * @see {@link CB_GraphicSprites#removeSprites}\r\n */","meta":{"filename":"CB_GraphicSprites.js","lineno":469,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image","code":{}},"description":"<p>Alias for {@link CB_GraphicSprites#removeSprites}.</p>","kind":"function","name":"removeSpritesGroup","see":["{@link CB_GraphicSprites#removeSprites}"],"memberof":"CB_GraphicSprites","longname":"CB_GraphicSprites#removeSpritesGroup","scope":"instance"},{"comment":"/**\r\n * Alias for {@link CB_GraphicSprites#removeSprites}.\r\n * @function CB_GraphicSprites#removeSpritesAll\r\n * @see {@link CB_GraphicSprites#removeSprites}\r\n */","meta":{"filename":"CB_GraphicSprites.js","lineno":474,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image","code":{}},"description":"<p>Alias for {@link CB_GraphicSprites#removeSprites}.</p>","kind":"function","name":"removeSpritesAll","see":["{@link CB_GraphicSprites#removeSprites}"],"memberof":"CB_GraphicSprites","longname":"CB_GraphicSprites#removeSpritesAll","scope":"instance"},{"comment":"/**\r\n * Removes all the sprites by clearing the {@link CB_GraphicSprites#spritesGroup} property.\r\n * @function\r\n */","meta":{"range":[48167,48433],"filename":"CB_GraphicSprites.js","lineno":483,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image","code":{"id":"astnode100038553","name":"CB_GraphicSprites.prototype.removeSprites","type":"AssignmentExpression","value":"CB_GraphicSprites.prototype.removeSpritesAll","paramnames":[]}},"description":"<p>Removes all the sprites by clearing the {@link CB_GraphicSprites#spritesGroup} property.</p>","kind":"function","name":"removeSprites","longname":"CB_GraphicSprites#removeSprites","memberof":"CB_GraphicSprites","scope":"instance"},{"comment":"/**\r\n * Alias for {@link CB_GraphicSprites#insertSprites}.\r\n * @function CB_GraphicSprites#insertSpritesGroup\r\n * @see {@link CB_GraphicSprites#insertSprites}\r\n */","meta":{"filename":"CB_GraphicSprites.js","lineno":490,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image","code":{}},"description":"<p>Alias for {@link CB_GraphicSprites#insertSprites}.</p>","kind":"function","name":"insertSpritesGroup","see":["{@link CB_GraphicSprites#insertSprites}"],"memberof":"CB_GraphicSprites","longname":"CB_GraphicSprites#insertSpritesGroup","scope":"instance"},{"comment":"/**\r\n * Adds the desired group of graphic sprites. Calls the {@link CB_GraphicSprites#insertSprite} and {@link CB_GraphicSprites#updateSpritesByZIndex} methods internally.\r\n * @function\r\n * @param {CB_GraphicSprites.SPRITES_OBJECT} [spritesGroup] - Object with the desired sprites. They will be stored in the {@link CB_GraphicSprites#spritesGroup} property.\r\n * @param {boolean} [byReference=!!{@link CB_GraphicSprites.SPRITES_OBJECT.byReference_DEFAULT}] - This value will be used as the default value when the \"byReference\" property is not given in the sprites ({@link CB_GraphicSprites.SPRITE_OBJECT} objects) or sub-sprites ({@link CB_GraphicSprites.SUBSPRITE_OBJECT} objects). The value will be stored in the {@link CB_GraphicSprites#byReference_DEFAULT} property. If a boolean value is not provided, it will use the value of the {@link CB_GraphicSprites.SPRITES_OBJECT.byReference_DEFAULT} property of the given {@link CB_GraphicSprites.SPRITES_OBJECT} object (parsed to boolean).\r\n * @returns {CB_GraphicSprites.SPRITES_OBJECT} Returns the {@link CB_GraphicSprites#spritesGroup} property after updating it.\r\n */","meta":{"range":[49731,53418],"filename":"CB_GraphicSprites.js","lineno":502,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image","code":{"id":"astnode100038597","name":"CB_GraphicSprites.prototype.insertSprites","type":"AssignmentExpression","value":"CB_GraphicSprites.prototype.insertSpritesGroup","paramnames":[]}},"description":"<p>Adds the desired group of graphic sprites. Calls the {@link CB_GraphicSprites#insertSprite} and {@link CB_GraphicSprites#updateSpritesByZIndex} methods internally.</p>","kind":"function","params":[{"type":{"names":["CB_GraphicSprites.SPRITES_OBJECT"]},"optional":true,"description":"<p>Object with the desired sprites. They will be stored in the {@link CB_GraphicSprites#spritesGroup} property.</p>","name":"spritesGroup"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":"!!{@link CB_GraphicSprites.SPRITES_OBJECT.byReference_DEFAULT}","description":"<p>This value will be used as the default value when the &quot;byReference&quot; property is not given in the sprites ({@link CB_GraphicSprites.SPRITE_OBJECT} objects) or sub-sprites ({@link CB_GraphicSprites.SUBSPRITE_OBJECT} objects). The value will be stored in the {@link CB_GraphicSprites#byReference_DEFAULT} property. If a boolean value is not provided, it will use the value of the {@link CB_GraphicSprites.SPRITES_OBJECT.byReference_DEFAULT} property of the given {@link CB_GraphicSprites.SPRITES_OBJECT} object (parsed to boolean).</p>","name":"byReference"}],"returns":[{"type":{"names":["CB_GraphicSprites.SPRITES_OBJECT"]},"description":"<p>Returns the {@link CB_GraphicSprites#spritesGroup} property after updating it.</p>"}],"name":"insertSprites","longname":"CB_GraphicSprites#insertSprites","memberof":"CB_GraphicSprites","scope":"instance"},{"comment":"/**\r\n * Updates (sorts again) the \"spritesByZIndex\" property (which is an array with the sprites ordered by z-index, whose data comes from the array in the \"sprites\" property of the {@link CB_GraphicSprites#spritesGroup} object) of the {@link CB_GraphicSprites#spritesGroup} object.\r\n * @function\r\n * @returns {array} Returns the \"spritesByZIndex\" array of the {@link CB_GraphicSprites#spritesGroup} object after updating it. Returns null if the property could not be obtained or updated.\r\n */","meta":{"range":[53921,54734],"filename":"CB_GraphicSprites.js","lineno":560,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image","code":{"id":"astnode100039226","name":"CB_GraphicSprites.prototype.updateSpritesByZIndex","type":"FunctionExpression","paramnames":[]},"vars":{"this.spritesGroup.sprites":"CB_GraphicSprites#spritesGroup.sprites","spritesGroupLength":"CB_GraphicSprites#updateSpritesByZIndex~spritesGroupLength","elementIndex":"CB_GraphicSprites#updateSpritesByZIndex~elementIndex","this.spritesGroup.spritesByZIndex":"CB_GraphicSprites#spritesGroup.spritesByZIndex","x":"CB_GraphicSprites#updateSpritesByZIndex~x","this.spritesGroup.sprites[undefined].positionByZIndex":"CB_GraphicSprites#spritesGroup.sprites[undefined].positionByZIndex"}},"description":"<p>Updates (sorts again) the &quot;spritesByZIndex&quot; property (which is an array with the sprites ordered by z-index, whose data comes from the array in the &quot;sprites&quot; property of the {@link CB_GraphicSprites#spritesGroup} object) of the {@link CB_GraphicSprites#spritesGroup} object.</p>","kind":"function","returns":[{"type":{"names":["array"]},"description":"<p>Returns the &quot;spritesByZIndex&quot; array of the {@link CB_GraphicSprites#spritesGroup} object after updating it. Returns null if the property could not be obtained or updated.</p>"}],"name":"updateSpritesByZIndex","longname":"CB_GraphicSprites#updateSpritesByZIndex","memberof":"CB_GraphicSprites","scope":"instance"},{"comment":"/**\r\n * Alias for {@link CB_GraphicSprites#removeSprite}.\r\n * @function CB_GraphicSprites#remove\r\n * @see {@link CB_GraphicSprites#removeSprite}\r\n */","meta":{"filename":"CB_GraphicSprites.js","lineno":583,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image","code":{}},"description":"<p>Alias for {@link CB_GraphicSprites#removeSprite}.</p>","kind":"function","name":"remove","see":["{@link CB_GraphicSprites#removeSprite}"],"memberof":"CB_GraphicSprites","longname":"CB_GraphicSprites#remove","scope":"instance"},{"comment":"/**\r\n * Removes a sprite by its index (its position in the {@link CB_GraphicSprites#spritesGroup.sprites} array). Calls the {@link CB_GraphicSprites#updateSpritesByZIndex} method internally.\r\n * @function\r\n * @param {integer} [index=0] - The index where the sprite is located (its position in the {@link CB_GraphicSprites#spritesGroup.sprites} array).\r\n * @returns {boolean} Returns true if the sprite has been deleted or false otherwise.\r\n */","meta":{"range":[55341,55973],"filename":"CB_GraphicSprites.js","lineno":594,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image","code":{"id":"astnode100039355","name":"CB_GraphicSprites.prototype.removeSprite","type":"AssignmentExpression","value":"CB_GraphicSprites.prototype.remove","paramnames":[]}},"description":"<p>Removes a sprite by its index (its position in the {@link CB_GraphicSprites#spritesGroup.sprites} array). Calls the {@link CB_GraphicSprites#updateSpritesByZIndex} method internally.</p>","kind":"function","params":[{"type":{"names":["integer"]},"optional":true,"defaultvalue":0,"description":"<p>The index where the sprite is located (its position in the {@link CB_GraphicSprites#spritesGroup.sprites} array).</p>","name":"index"}],"returns":[{"type":{"names":["boolean"]},"description":"<p>Returns true if the sprite has been deleted or false otherwise.</p>"}],"name":"removeSprite","longname":"CB_GraphicSprites#removeSprite","memberof":"CB_GraphicSprites","scope":"instance"},{"comment":"/**\r\n * Alias for {@link CB_GraphicSprites#removeSpriteById}.\r\n * @function CB_GraphicSprites#removeById\r\n * @see {@link CB_GraphicSprites#removeSpriteById}\r\n */","meta":{"filename":"CB_GraphicSprites.js","lineno":611,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image","code":{}},"description":"<p>Alias for {@link CB_GraphicSprites#removeSpriteById}.</p>","kind":"function","name":"removeById","see":["{@link CB_GraphicSprites#removeSpriteById}"],"memberof":"CB_GraphicSprites","longname":"CB_GraphicSprites#removeById","scope":"instance"},{"comment":"/**\r\n * Removes a sprite by its identifier. Calls the {@link CB_GraphicSprites#updateSpritesByZIndex} method internally.\r\n * @function\r\n * @param {string|*} [id=undefined] - The identifier of the sprite.\r\n * @returns {boolean} Returns true if the sprite has been deleted or false otherwise.\r\n * @todo Optimize it (perhaps using a cache matching the IDs with their position, maybe using the \"position\" or \"positionByZIndex\" properties).\r\n */","meta":{"range":[56590,57303],"filename":"CB_GraphicSprites.js","lineno":623,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image","code":{"id":"astnode100039421","name":"CB_GraphicSprites.prototype.removeSpriteById","type":"AssignmentExpression","value":"CB_GraphicSprites.prototype.removeById","paramnames":[]}},"description":"<p>Removes a sprite by its identifier. Calls the {@link CB_GraphicSprites#updateSpritesByZIndex} method internally.</p>","kind":"function","params":[{"type":{"names":["string","*"]},"optional":true,"description":"<p>The identifier of the sprite.</p>","name":"id"}],"returns":[{"type":{"names":["boolean"]},"description":"<p>Returns true if the sprite has been deleted or false otherwise.</p>"}],"todo":["Optimize it (perhaps using a cache matching the IDs with their position, maybe using the \"position\" or \"positionByZIndex\" properties)."],"name":"removeSpriteById","longname":"CB_GraphicSprites#removeSpriteById","memberof":"CB_GraphicSprites","scope":"instance"},{"comment":"/**\r\n * Alias for {@link CB_GraphicSprites#insertSprite}.\r\n * @function CB_GraphicSprites#insert\r\n * @see {@link CB_GraphicSprites#insertSprite}\r\n */","meta":{"filename":"CB_GraphicSprites.js","lineno":640,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image","code":{}},"description":"<p>Alias for {@link CB_GraphicSprites#insertSprite}.</p>","kind":"function","name":"insert","see":["{@link CB_GraphicSprites#insertSprite}"],"memberof":"CB_GraphicSprites","longname":"CB_GraphicSprites#insert","scope":"instance"},{"comment":"/**\r\n * Adds the desired graphic sprite. Calls {@link CB_GraphicSprites#insertSubSprites} internally. If a sprite with the same identifier already exists, it will be replaced by the new one in its same position.\r\n * @function\r\n * @param {CB_GraphicSprites.SPRITE_OBJECT} [sprite] - Object with the desired sprite. It will be stored inside the {@link CB_GraphicSprites#spritesGroup} property.\r\n * @param {boolean} [avoidUpdatingSpritesByZIndex=false] - If set to true, it will not call the {CB_GraphicSprites#updateSpritesByZIndex} method internally. Internal usage recommended only.\r\n * @returns {CB_GraphicSprites.SPRITE_OBJECT} Returns the {@link CB_GraphicSprites.SPRITE_OBJECT} object which has been inserted (it could have been modified/sanitized from the given one and some missing properties or those which were wrong could have been inherited).\r\n */","meta":{"range":[58325,67400],"filename":"CB_GraphicSprites.js","lineno":652,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image","code":{"id":"astnode100039504","name":"CB_GraphicSprites.prototype.insertSprite","type":"AssignmentExpression","value":"CB_GraphicSprites.prototype.insert","paramnames":[]}},"description":"<p>Adds the desired graphic sprite. Calls {@link CB_GraphicSprites#insertSubSprites} internally. If a sprite with the same identifier already exists, it will be replaced by the new one in its same position.</p>","kind":"function","params":[{"type":{"names":["CB_GraphicSprites.SPRITE_OBJECT"]},"optional":true,"description":"<p>Object with the desired sprite. It will be stored inside the {@link CB_GraphicSprites#spritesGroup} property.</p>","name":"sprite"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If set to true, it will not call the {CB_GraphicSprites#updateSpritesByZIndex} method internally. Internal usage recommended only.</p>","name":"avoidUpdatingSpritesByZIndex"}],"returns":[{"type":{"names":["CB_GraphicSprites.SPRITE_OBJECT"]},"description":"<p>Returns the {@link CB_GraphicSprites.SPRITE_OBJECT} object which has been inserted (it could have been modified/sanitized from the given one and some missing properties or those which were wrong could have been inherited).</p>"}],"name":"insertSprite","longname":"CB_GraphicSprites#insertSprite","memberof":"CB_GraphicSprites","scope":"instance"},{"comment":"/**\r\n * Alias for {@link CB_GraphicSprites#removeSubSprites}.\r\n * @function CB_GraphicSprites#removeSubSpritesAll\r\n * @see {@link CB_GraphicSprites#removeSubSprites}\r\n */","meta":{"filename":"CB_GraphicSprites.js","lineno":753,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image","code":{}},"description":"<p>Alias for {@link CB_GraphicSprites#removeSubSprites}.</p>","kind":"function","name":"removeSubSpritesAll","see":["{@link CB_GraphicSprites#removeSubSprites}"],"memberof":"CB_GraphicSprites","longname":"CB_GraphicSprites#removeSubSpritesAll","scope":"instance"},{"comment":"/**\r\n * Removes all the sub-sprites from a given sprite ({@link CB_GraphicSprites.SPRITE_OBJECT} object) by clearing its \"subSprites\" property (leaving an empty array).\r\n * @function\r\n * @param {CB_GraphicSprites.SPRITE_OBJECT} [sprite=CB_GraphicSprites#getCurrent()] - Object with the sprite whose sub-sprites we want to remove. If not provided, it will use the {@link CB_GraphicSprites.SPRITE_OBJECT} object which the pointer (set in the {@link CB_GraphicSprites#pointer} property) is currently pointing to (using the returning value of the {@link CB_GraphicSprites#getCurrent} method internally).\r\n * @returns {boolean} Returns true if the sub-sprites have been deleted or false otherwise.\r\n */","meta":{"range":[68283,68881],"filename":"CB_GraphicSprites.js","lineno":764,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image","code":{"id":"astnode100041006","name":"CB_GraphicSprites.prototype.removeSubSprites","type":"AssignmentExpression","value":"CB_GraphicSprites.prototype.removeSubSpritesAll","paramnames":[]}},"description":"<p>Removes all the sub-sprites from a given sprite ({@link CB_GraphicSprites.SPRITE_OBJECT} object) by clearing its &quot;subSprites&quot; property (leaving an empty array).</p>","kind":"function","params":[{"type":{"names":["CB_GraphicSprites.SPRITE_OBJECT"]},"optional":true,"defaultvalue":"CB_GraphicSprites#getCurrent()","description":"<p>Object with the sprite whose sub-sprites we want to remove. If not provided, it will use the {@link CB_GraphicSprites.SPRITE_OBJECT} object which the pointer (set in the {@link CB_GraphicSprites#pointer} property) is currently pointing to (using the returning value of the {@link CB_GraphicSprites#getCurrent} method internally).</p>","name":"sprite"}],"returns":[{"type":{"names":["boolean"]},"description":"<p>Returns true if the sub-sprites have been deleted or false otherwise.</p>"}],"name":"removeSubSprites","longname":"CB_GraphicSprites#removeSubSprites","memberof":"CB_GraphicSprites","scope":"instance"},{"comment":"/**\r\n * Adds the given sub-sprites to the desired sprite. Calls the {@link CB_GraphicSprites#insertSubSprite} and {@link CB_GraphicSprites#updateSubSpritesByZIndex} methods internally.\r\n * @function\r\n * @param {array} subSprites - Numeric array with the desired sub-sprites ({@link CB_GraphicSprites.SUBSPRITE_OBJECT} objects). They will be stored inside the given sprite.\r\n * @param {CB_GraphicSprites.SPRITE_OBJECT} [sprite=CB_GraphicSprites#getCurrent()] - Object with the desired sprite. If not provided, it will use the {@link CB_GraphicSprites.SPRITE_OBJECT} object which the pointer (set in the {@link CB_GraphicSprites#pointer} property) is currently pointing to (using the returning value of the {@link CB_GraphicSprites#getCurrent} method internally).\r\n * @returns {array} Returns an array with the {@link CB_GraphicSprites.SUBSPRITE_OBJECT} objects which have been inserted (they could have been modified/sanitized from the given one and some missing properties or those which were wrong could have been inherited).\r\n */","meta":{"range":[69924,70564],"filename":"CB_GraphicSprites.js","lineno":790,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image","code":{"id":"astnode100041112","name":"CB_GraphicSprites.prototype.insertSubSprites","type":"FunctionExpression","paramnames":["subSprites","sprite"]},"vars":{"sprite":"CB_GraphicSprites#insertSubSprites~sprite","subSprites":"CB_GraphicSprites#insertSubSprites~subSprites","subSpritesInserted":"CB_GraphicSprites#insertSubSprites~subSpritesInserted","subSpritesLength":"CB_GraphicSprites#insertSubSprites~subSpritesLength","x":"CB_GraphicSprites#insertSubSprites~x","subSpritesInserted[undefined]":"CB_GraphicSprites#insertSubSprites~subSpritesInserted.undefined]"}},"description":"<p>Adds the given sub-sprites to the desired sprite. Calls the {@link CB_GraphicSprites#insertSubSprite} and {@link CB_GraphicSprites#updateSubSpritesByZIndex} methods internally.</p>","kind":"function","params":[{"type":{"names":["array"]},"description":"<p>Numeric array with the desired sub-sprites ({@link CB_GraphicSprites.SUBSPRITE_OBJECT} objects). They will be stored inside the given sprite.</p>","name":"subSprites"},{"type":{"names":["CB_GraphicSprites.SPRITE_OBJECT"]},"optional":true,"defaultvalue":"CB_GraphicSprites#getCurrent()","description":"<p>Object with the desired sprite. If not provided, it will use the {@link CB_GraphicSprites.SPRITE_OBJECT} object which the pointer (set in the {@link CB_GraphicSprites#pointer} property) is currently pointing to (using the returning value of the {@link CB_GraphicSprites#getCurrent} method internally).</p>","name":"sprite"}],"returns":[{"type":{"names":["array"]},"description":"<p>Returns an array with the {@link CB_GraphicSprites.SUBSPRITE_OBJECT} objects which have been inserted (they could have been modified/sanitized from the given one and some missing properties or those which were wrong could have been inherited).</p>"}],"name":"insertSubSprites","longname":"CB_GraphicSprites#insertSubSprites","memberof":"CB_GraphicSprites","scope":"instance"},{"comment":"/**\r\n * Updates (sorts again) the \"subSpritesByZIndex\" property (which is an array with the sub-sprites ordered by z-index, whose data comes from the array in the \"subSprites\" property of the given {@link CB_GraphicSprites.SPRITE_OBJECT} object)) of the desired sprite.\r\n * @function\r\n * @param {CB_GraphicSprites.SPRITE_OBJECT} [sprite=CB_GraphicSprites#getCurrent()] - Object with the sprite whose sub-sprites we want to remove. If not provided, it will use the {@link CB_GraphicSprites.SPRITE_OBJECT} object which the pointer (set in the {@link CB_GraphicSprites#pointer} property) is currently pointing to (using the returning value of the {@link CB_GraphicSprites#getCurrent} method internally).\r\n * @returns {array} Returns the \"subSpritesByZIndex\" array after updating it. Returns null if the property could not be obtained or updated.\r\n */","meta":{"range":[71422,72143],"filename":"CB_GraphicSprites.js","lineno":817,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image","code":{"id":"astnode100041186","name":"CB_GraphicSprites.prototype.updateSubSpritesByZIndex","type":"FunctionExpression","paramnames":["sprite"]},"vars":{"sprite":"CB_GraphicSprites#updateSubSpritesByZIndex~sprite","subSpritesLength":"CB_GraphicSprites#updateSubSpritesByZIndex~subSpritesLength","elementIndex":"CB_GraphicSprites#updateSubSpritesByZIndex~elementIndex","sprite.subSpritesByZIndex":"CB_GraphicSprites#updateSubSpritesByZIndex~sprite.subSpritesByZIndex","x":"CB_GraphicSprites#updateSubSpritesByZIndex~x","indexElement":"CB_GraphicSprites#updateSubSpritesByZIndex~indexElement","sprite.subSprites[undefined].positionByZIndex":"CB_GraphicSprites#updateSubSpritesByZIndex~sprite.subSprites[undefined].positionByZIndex"}},"description":"<p>Updates (sorts again) the &quot;subSpritesByZIndex&quot; property (which is an array with the sub-sprites ordered by z-index, whose data comes from the array in the &quot;subSprites&quot; property of the given {@link CB_GraphicSprites.SPRITE_OBJECT} object)) of the desired sprite.</p>","kind":"function","params":[{"type":{"names":["CB_GraphicSprites.SPRITE_OBJECT"]},"optional":true,"defaultvalue":"CB_GraphicSprites#getCurrent()","description":"<p>Object with the sprite whose sub-sprites we want to remove. If not provided, it will use the {@link CB_GraphicSprites.SPRITE_OBJECT} object which the pointer (set in the {@link CB_GraphicSprites#pointer} property) is currently pointing to (using the returning value of the {@link CB_GraphicSprites#getCurrent} method internally).</p>","name":"sprite"}],"returns":[{"type":{"names":["array"]},"description":"<p>Returns the &quot;subSpritesByZIndex&quot; array after updating it. Returns null if the property could not be obtained or updated.</p>"}],"name":"updateSubSpritesByZIndex","longname":"CB_GraphicSprites#updateSubSpritesByZIndex","memberof":"CB_GraphicSprites","scope":"instance"},{"comment":"/**\r\n * Removes a sub-sprite from a given sprite ({@link CB_GraphicSprites.SPRITE_OBJECT} object) by its index (its position in the array which is in the \"subSprites\" property of the given {@link CB_GraphicSprites.SPRITE_OBJECT} object). Calls the {@link CB_GraphicSprites#updateSubSpritesByZIndex} method internally.\r\n * @function\r\n * @param {integer} [index=0] - The index where the sub-sprite is located (its position in the array which is in the \"subSprites\" property of the given {@link CB_GraphicSprites.SPRITE_OBJECT} object).\r\n * @param {CB_GraphicSprites.SPRITE_OBJECT} [sprite=CB_GraphicSprites#getCurrent()] - Object with the sprite whose sub-sprites we want to remove. If not provided, it will use the {@link CB_GraphicSprites.SPRITE_OBJECT} object which the pointer (set in the {@link CB_GraphicSprites#pointer} property) is currently pointing to (using the returning value of the {@link CB_GraphicSprites#getCurrent} method internally).\r\n * @returns {boolean} Returns true if the sub-sprite has been deleted or false otherwise.\r\n */","meta":{"range":[73201,74218],"filename":"CB_GraphicSprites.js","lineno":847,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image","code":{"id":"astnode100041293","name":"CB_GraphicSprites.prototype.removeSubSprite","type":"FunctionExpression","paramnames":["index","sprite"]},"vars":{"removed":"CB_GraphicSprites#removeSubSprite~removed","sprite":"CB_GraphicSprites#removeSubSprite~sprite","index":"CB_GraphicSprites#removeSubSprite~index","subSpritesLeft":"CB_GraphicSprites#removeSubSprite~subSpritesLeft","spritesLength":"CB_GraphicSprites#removeSubSprite~spritesLength","x":"CB_GraphicSprites#removeSubSprite~x","":null,"this.spritesGroup.sprites[undefined].subSprites":"CB_GraphicSprites#spritesGroup.sprites[undefined].subSprites"}},"description":"<p>Removes a sub-sprite from a given sprite ({@link CB_GraphicSprites.SPRITE_OBJECT} object) by its index (its position in the array which is in the &quot;subSprites&quot; property of the given {@link CB_GraphicSprites.SPRITE_OBJECT} object). Calls the {@link CB_GraphicSprites#updateSubSpritesByZIndex} method internally.</p>","kind":"function","params":[{"type":{"names":["integer"]},"optional":true,"defaultvalue":0,"description":"<p>The index where the sub-sprite is located (its position in the array which is in the &quot;subSprites&quot; property of the given {@link CB_GraphicSprites.SPRITE_OBJECT} object).</p>","name":"index"},{"type":{"names":["CB_GraphicSprites.SPRITE_OBJECT"]},"optional":true,"defaultvalue":"CB_GraphicSprites#getCurrent()","description":"<p>Object with the sprite whose sub-sprites we want to remove. If not provided, it will use the {@link CB_GraphicSprites.SPRITE_OBJECT} object which the pointer (set in the {@link CB_GraphicSprites#pointer} property) is currently pointing to (using the returning value of the {@link CB_GraphicSprites#getCurrent} method internally).</p>","name":"sprite"}],"returns":[{"type":{"names":["boolean"]},"description":"<p>Returns true if the sub-sprite has been deleted or false otherwise.</p>"}],"name":"removeSubSprite","longname":"CB_GraphicSprites#removeSubSprite","memberof":"CB_GraphicSprites","scope":"instance"},{"comment":"/**\r\n * Removes a sub-sprite from a given sprite ({@link CB_GraphicSprites.SPRITE_OBJECT} object) by its identifier. Calls the {@link CB_GraphicSprites#updateSubSpritesByZIndex} method internally.\r\n * @function\r\n * @param {string|*} [id=undefined] - The identifier of the sprite.\r\n * @param {CB_GraphicSprites.SPRITE_OBJECT} [sprite=CB_GraphicSprites#getCurrent] - Object with the sprite whose sub-sprites we want to remove.\r\n * @returns {boolean} Returns true if the sub-sprite has been deleted or false otherwise.\r\n * @todo Optimize it (perhaps using a cache matching the IDs with their position, maybe using the \"position\" or \"positionByZIndex\" properties).\r\n */","meta":{"range":[74896,75857],"filename":"CB_GraphicSprites.js","lineno":891,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image","code":{"id":"astnode100041443","name":"CB_GraphicSprites.prototype.removeSubSpriteById","type":"FunctionExpression","paramnames":["id","sprite"]},"vars":{"removed":"CB_GraphicSprites#removeSubSpriteById~removed","sprite":"CB_GraphicSprites#removeSubSpriteById~sprite","subSpritesLeft":"CB_GraphicSprites#removeSubSpriteById~subSpritesLeft","spritesLength":"CB_GraphicSprites#removeSubSpriteById~spritesLength","x":"CB_GraphicSprites#removeSubSpriteById~x","":null,"this.spritesGroup.sprites[undefined].subSprites":"CB_GraphicSprites#spritesGroup.sprites[undefined].subSprites"}},"description":"<p>Removes a sub-sprite from a given sprite ({@link CB_GraphicSprites.SPRITE_OBJECT} object) by its identifier. Calls the {@link CB_GraphicSprites#updateSubSpritesByZIndex} method internally.</p>","kind":"function","params":[{"type":{"names":["string","*"]},"optional":true,"description":"<p>The identifier of the sprite.</p>","name":"id"},{"type":{"names":["CB_GraphicSprites.SPRITE_OBJECT"]},"optional":true,"defaultvalue":"CB_GraphicSprites#getCurrent","description":"<p>Object with the sprite whose sub-sprites we want to remove.</p>","name":"sprite"}],"returns":[{"type":{"names":["boolean"]},"description":"<p>Returns true if the sub-sprite has been deleted or false otherwise.</p>"}],"todo":["Optimize it (perhaps using a cache matching the IDs with their position, maybe using the \"position\" or \"positionByZIndex\" properties)."],"name":"removeSubSpriteById","longname":"CB_GraphicSprites#removeSubSpriteById","memberof":"CB_GraphicSprites","scope":"instance"},{"comment":"/**\r\n * Adds the given sub-sprite to the desired sprite. If a sub-sprite with the same identifier already exists, it will be replaced by the new one in its same position.\r\n * @function\r\n * @param {CB_GraphicSprites.SUBSPRITE_OBJECT} subSprite - Object with the desired sub-sprite. It will be stored inside the given sprite.\r\n * @param {CB_GraphicSprites.SPRITE_OBJECT} sprite - Object with the desired sprite.\r\n * @param {boolean} [avoidUpdatingSubSpritesByZIndex=false] - If set to true, it will not call the {CB_GraphicSprites#updateSubSpritesByZIndex} method internally. Internal usage recommended only.\r\n * @returns {CB_GraphicSprites.SUBSPRITE_OBJECT} Returns the {@link CB_GraphicSprites.SUBSPRITE_OBJECT} object which has been inserted (it could have been modified/sanitized from the given one and some missing properties or those which were wrong could have been inherited).\r\n */","meta":{"range":[76757,84162],"filename":"CB_GraphicSprites.js","lineno":932,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image","code":{"id":"astnode100041585","name":"CB_GraphicSprites.prototype.insertSubSprite","type":"FunctionExpression","paramnames":["subSprite","sprite","avoidUpdatingSubSpritesByZIndex"]},"vars":{"this.spritesGroup":"CB_GraphicSprites#spritesGroup","sprite":"CB_GraphicSprites#insertSubSprite~sprite","subSprite":"CB_GraphicSprites#insertSubSprite~subSprite","sprite.byReference":"CB_GraphicSprites#insertSubSprite~sprite.byReference","sprite.isSubSprite":"CB_GraphicSprites#insertSubSprite~sprite.isSubSprite","subSprite.type":"CB_GraphicSprites#insertSubSprite~subSprite.type","subSprite.container":"CB_GraphicSprites#insertSubSprite~subSprite.container","subSprite.parent":"CB_GraphicSprites#insertSubSprite~subSprite.parent","subSprite.time":"CB_GraphicSprites#insertSubSprite~subSprite.time","subSprite.id":"CB_GraphicSprites#insertSubSprite~subSprite.id","subSprite.src":"CB_GraphicSprites#insertSubSprite~subSprite.src","subSprite.srcType":"CB_GraphicSprites#insertSubSprite~subSprite.srcType","subSprite.srcLeft":"CB_GraphicSprites#insertSubSprite~subSprite.srcLeft","subSprite.left":"CB_GraphicSprites#insertSubSprite~subSprite.left","subSprite.srcTop":"CB_GraphicSprites#insertSubSprite~subSprite.srcTop","subSprite.top":"CB_GraphicSprites#insertSubSprite~subSprite.top","subSprite.srcWidth":"CB_GraphicSprites#insertSubSprite~subSprite.srcWidth","subSprite.width":"CB_GraphicSprites#insertSubSprite~subSprite.width","subSprite.srcHeight":"CB_GraphicSprites#insertSubSprite~subSprite.srcHeight","subSprite.height":"CB_GraphicSprites#insertSubSprite~subSprite.height","subSprite.zIndex":"CB_GraphicSprites#insertSubSprite~subSprite.zIndex","subSprite.disabled":"CB_GraphicSprites#insertSubSprite~subSprite.disabled","subSprite.data":"CB_GraphicSprites#insertSubSprite~subSprite.data","subSprite.data.that":"CB_GraphicSprites#insertSubSprite~subSprite.data.that","subSprite.data.getThis":"CB_GraphicSprites#insertSubSprite~subSprite.data.getThis","":null,"subSprite.getZIndex":"CB_GraphicSprites#insertSubSprite~subSprite.getZIndex","subSprite.setZIndex":"CB_GraphicSprites#insertSubSprite~subSprite.setZIndex","subSprite.isDisabled":"CB_GraphicSprites#insertSubSprite~subSprite.isDisabled","subSprite.setDisabled":"CB_GraphicSprites#insertSubSprite~subSprite.setDisabled","subSprite.setTime":"CB_GraphicSprites#insertSubSprite~subSprite.setTime","subSprite.getTime":"CB_GraphicSprites#insertSubSprite~subSprite.getTime","subSprite.getTimeElapsed":"CB_GraphicSprites#insertSubSprite~subSprite.getTimeElapsed","sprite.subSprites":"CB_GraphicSprites#insertSubSprite~sprite.subSprites","position":"CB_GraphicSprites#insertSubSprite~position","subSprite.position":"CB_GraphicSprites#insertSubSprite~subSprite.position","sprite.subSprites[undefined]":"CB_GraphicSprites#insertSubSprite~sprite.subSprites[undefined]"}},"description":"<p>Adds the given sub-sprite to the desired sprite. If a sub-sprite with the same identifier already exists, it will be replaced by the new one in its same position.</p>","kind":"function","params":[{"type":{"names":["CB_GraphicSprites.SUBSPRITE_OBJECT"]},"description":"<p>Object with the desired sub-sprite. It will be stored inside the given sprite.</p>","name":"subSprite"},{"type":{"names":["CB_GraphicSprites.SPRITE_OBJECT"]},"description":"<p>Object with the desired sprite.</p>","name":"sprite"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If set to true, it will not call the {CB_GraphicSprites#updateSubSpritesByZIndex} method internally. Internal usage recommended only.</p>","name":"avoidUpdatingSubSpritesByZIndex"}],"returns":[{"type":{"names":["CB_GraphicSprites.SUBSPRITE_OBJECT"]},"description":"<p>Returns the {@link CB_GraphicSprites.SUBSPRITE_OBJECT} object which has been inserted (it could have been modified/sanitized from the given one and some missing properties or those which were wrong could have been inherited).</p>"}],"name":"insertSubSprite","longname":"CB_GraphicSprites#insertSubSprite","memberof":"CB_GraphicSprites","scope":"instance"},{"comment":"/**\r\n * Gets the sprites group object (the internal {@link CB_GraphicSprites.SPRITES_OBJECT} object, if any).\r\n * @function\r\n * @param {*} [returnValueOnFail=undefined] - The value we want it to return in the case that no value is found. If not provided, undefined will be returned.\r\n * @returns {CB_GraphicSprites.SPRITES_OBJECT|*} Returns a {@link CB_GraphicSprites.SPRITES_OBJECT} object with all the sprites or the value of \"returnValueOnFail\" otherwise.\r\n */","meta":{"range":[84636,84764],"filename":"CB_GraphicSprites.js","lineno":1024,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image","code":{"id":"astnode100042830","name":"CB_GraphicSprites.prototype.getSpritesGroup","type":"FunctionExpression","paramnames":["returnValueOnFail"]}},"description":"<p>Gets the sprites group object (the internal {@link CB_GraphicSprites.SPRITES_OBJECT} object, if any).</p>","kind":"function","params":[{"type":{"names":["*"]},"optional":true,"description":"<p>The value we want it to return in the case that no value is found. If not provided, undefined will be returned.</p>","name":"returnValueOnFail"}],"returns":[{"type":{"names":["CB_GraphicSprites.SPRITES_OBJECT","*"]},"description":"<p>Returns a {@link CB_GraphicSprites.SPRITES_OBJECT} object with all the sprites or the value of &quot;returnValueOnFail&quot; otherwise.</p>"}],"name":"getSpritesGroup","longname":"CB_GraphicSprites#getSpritesGroup","memberof":"CB_GraphicSprites","scope":"instance"},{"comment":"/**\r\n * Alias for {@link CB_GraphicSprites#getSprites}.\r\n * @function CB_GraphicSprites#getAll\r\n * @see {@link CB_GraphicSprites#getSprites}\r\n */","meta":{"filename":"CB_GraphicSprites.js","lineno":1030,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image","code":{}},"description":"<p>Alias for {@link CB_GraphicSprites#getSprites}.</p>","kind":"function","name":"getAll","see":["{@link CB_GraphicSprites#getSprites}"],"memberof":"CB_GraphicSprites","longname":"CB_GraphicSprites#getAll","scope":"instance"},{"comment":"/**\r\n * Alias for {@link CB_GraphicSprites#getSprites}.\r\n * @function CB_GraphicSprites#getSpritesAll\r\n * @see {@link CB_GraphicSprites#getSprites}\r\n */","meta":{"filename":"CB_GraphicSprites.js","lineno":1035,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image","code":{}},"description":"<p>Alias for {@link CB_GraphicSprites#getSprites}.</p>","kind":"function","name":"getSpritesAll","see":["{@link CB_GraphicSprites#getSprites}"],"memberof":"CB_GraphicSprites","longname":"CB_GraphicSprites#getSpritesAll","scope":"instance"},{"comment":"/**\r\n * Gets all the sprites (the \"sprites\" property of the internal {@link CB_GraphicSprites.SPRITES_OBJECT} object, if any).\r\n * @function\r\n * @param {boolean} [orderedByZIndex=false] - If set to true, it will return the sprites sorted by their z-index (ascending order).\r\n * @param {*} [returnValueOnFail=undefined] - The value we want it to return in the case that no value is found. If not provided, undefined will be returned.\r\n * @returns {array|*} Returns an array with all the {@link CB_GraphicSprites.SPRITE_OBJECT} objects or the value of \"returnValueOnFail\" otherwise.\r\n */","meta":{"range":[85666,86144],"filename":"CB_GraphicSprites.js","lineno":1047,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image","code":{"id":"astnode100042846","name":"CB_GraphicSprites.prototype.getSprites","type":"AssignmentExpression","value":"CB_GraphicSprites.prototype.getSpritesAll","paramnames":[]}},"description":"<p>Gets all the sprites (the &quot;sprites&quot; property of the internal {@link CB_GraphicSprites.SPRITES_OBJECT} object, if any).</p>","kind":"function","params":[{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If set to true, it will return the sprites sorted by their z-index (ascending order).</p>","name":"orderedByZIndex"},{"type":{"names":["*"]},"optional":true,"description":"<p>The value we want it to return in the case that no value is found. If not provided, undefined will be returned.</p>","name":"returnValueOnFail"}],"returns":[{"type":{"names":["array","*"]},"description":"<p>Returns an array with all the {@link CB_GraphicSprites.SPRITE_OBJECT} objects or the value of &quot;returnValueOnFail&quot; otherwise.</p>"}],"name":"getSprites","longname":"CB_GraphicSprites#getSprites","memberof":"CB_GraphicSprites","scope":"instance"},{"comment":"/**\r\n * Alias for {@link CB_GraphicSprites#getSprite}.\r\n * @function CB_GraphicSprites#get\r\n * @see {@link CB_GraphicSprites#getSprite}\r\n */","meta":{"filename":"CB_GraphicSprites.js","lineno":1064,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image","code":{}},"description":"<p>Alias for {@link CB_GraphicSprites#getSprite}.</p>","kind":"function","name":"get","see":["{@link CB_GraphicSprites#getSprite}"],"memberof":"CB_GraphicSprites","longname":"CB_GraphicSprites#get","scope":"instance"},{"comment":"/**\r\n * Gets a desired sprite object through its index (its position in the {@link CB_GraphicSprites#spritesGroup.sprites} array). Faster than getting it through its identifier with the {@link CB_GraphicSprites#getSpriteById} method.\r\n * @function\r\n * @param {integer} [index=0] - The index where the desired sprite must be located (its position in the {@link CB_GraphicSprites#spritesGroup.sprites} array).\r\n * @param {*} [returnValueOnFail=undefined] - The value we want it to return in the case that no value is found. If not provided, undefined will be returned.\r\n * @returns {CB_GraphicSprites.SPRITE_OBJECT|*} Returns a {@link CB_GraphicSprites.SPRITE_OBJECT} object if found or the value of \"returnValueOnFail\" otherwise.\r\n */","meta":{"range":[87034,87426],"filename":"CB_GraphicSprites.js","lineno":1076,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image","code":{"id":"astnode100042907","name":"CB_GraphicSprites.prototype.getSprite","type":"AssignmentExpression","value":"CB_GraphicSprites.prototype.get","paramnames":[]}},"description":"<p>Gets a desired sprite object through its index (its position in the {@link CB_GraphicSprites#spritesGroup.sprites} array). Faster than getting it through its identifier with the {@link CB_GraphicSprites#getSpriteById} method.</p>","kind":"function","params":[{"type":{"names":["integer"]},"optional":true,"defaultvalue":0,"description":"<p>The index where the desired sprite must be located (its position in the {@link CB_GraphicSprites#spritesGroup.sprites} array).</p>","name":"index"},{"type":{"names":["*"]},"optional":true,"description":"<p>The value we want it to return in the case that no value is found. If not provided, undefined will be returned.</p>","name":"returnValueOnFail"}],"returns":[{"type":{"names":["CB_GraphicSprites.SPRITE_OBJECT","*"]},"description":"<p>Returns a {@link CB_GraphicSprites.SPRITE_OBJECT} object if found or the value of &quot;returnValueOnFail&quot; otherwise.</p>"}],"name":"getSprite","longname":"CB_GraphicSprites#getSprite","memberof":"CB_GraphicSprites","scope":"instance"},{"comment":"/**\r\n * Alias for {@link CB_GraphicSprites#getSpriteById}.\r\n * @function CB_GraphicSprites#getById\r\n * @see {@link CB_GraphicSprites#getSpriteById}\r\n */","meta":{"filename":"CB_GraphicSprites.js","lineno":1085,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image","code":{}},"description":"<p>Alias for {@link CB_GraphicSprites#getSpriteById}.</p>","kind":"function","name":"getById","see":["{@link CB_GraphicSprites#getSpriteById}"],"memberof":"CB_GraphicSprites","longname":"CB_GraphicSprites#getById","scope":"instance"},{"comment":"/**\r\n * Gets a desired sprite object through its identifier. Slower than getting it through its index with the {@link CB_GraphicSprites#getSprite} method.\r\n * @function\r\n * @param {string|*} [id=undefined] - The identifier of the sprite that we want to get.\r\n * @param {*} [returnValueOnFail=undefined] - The value we want it to return in the case that no value is found. If not provided, undefined will be returned.\r\n * @returns {CB_GraphicSprites.SPRITE_OBJECT|*} Returns a {@link CB_GraphicSprites.SPRITE_OBJECT} object if found or the value of \"returnValueOnFail\" otherwise.\r\n */","meta":{"range":[88178,88418],"filename":"CB_GraphicSprites.js","lineno":1097,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image","code":{"id":"astnode100042976","name":"CB_GraphicSprites.prototype.getSpriteById","type":"AssignmentExpression","value":"CB_GraphicSprites.prototype.getById","paramnames":[]}},"description":"<p>Gets a desired sprite object through its identifier. Slower than getting it through its index with the {@link CB_GraphicSprites#getSprite} method.</p>","kind":"function","params":[{"type":{"names":["string","*"]},"optional":true,"description":"<p>The identifier of the sprite that we want to get.</p>","name":"id"},{"type":{"names":["*"]},"optional":true,"description":"<p>The value we want it to return in the case that no value is found. If not provided, undefined will be returned.</p>","name":"returnValueOnFail"}],"returns":[{"type":{"names":["CB_GraphicSprites.SPRITE_OBJECT","*"]},"description":"<p>Returns a {@link CB_GraphicSprites.SPRITE_OBJECT} object if found or the value of &quot;returnValueOnFail&quot; otherwise.</p>"}],"name":"getSpriteById","longname":"CB_GraphicSprites#getSpriteById","memberof":"CB_GraphicSprites","scope":"instance"},{"comment":"/**\r\n * Alias for {@link CB_GraphicSprites#getSpriteIndexById}.\r\n * @function CB_GraphicSprites#getIndexById\r\n * @see {@link CB_GraphicSprites#getSpriteIndexById}\r\n */","meta":{"filename":"CB_GraphicSprites.js","lineno":1104,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image","code":{}},"description":"<p>Alias for {@link CB_GraphicSprites#getSpriteIndexById}.</p>","kind":"function","name":"getIndexById","see":["{@link CB_GraphicSprites#getSpriteIndexById}"],"memberof":"CB_GraphicSprites","longname":"CB_GraphicSprites#getIndexById","scope":"instance"},{"comment":"/**\r\n * Gets the index (the position in the {@link CB_GraphicSprites#spritesGroup.sprites} array) of a desired sprite by its identifier.\r\n * @function\r\n * @param {string|*} [id=undefined] - The identifier of the sprite whose index we want to get.\r\n * @returns {integer} Returns the index (the position in the {@link CB_GraphicSprites#spritesGroup.sprites} array) of the desired sprite or -1 if not found.\r\n * @todo Optimize it (perhaps using a cache matching the IDs with their position, maybe using the \"position\" or \"positionByZIndex\" properties).\r\n */","meta":{"range":[89156,89513],"filename":"CB_GraphicSprites.js","lineno":1116,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image","code":{"id":"astnode100043015","name":"CB_GraphicSprites.prototype.getSpriteIndexById","type":"AssignmentExpression","value":"CB_GraphicSprites.prototype.getIndexById","paramnames":[]}},"description":"<p>Gets the index (the position in the {@link CB_GraphicSprites#spritesGroup.sprites} array) of a desired sprite by its identifier.</p>","kind":"function","params":[{"type":{"names":["string","*"]},"optional":true,"description":"<p>The identifier of the sprite whose index we want to get.</p>","name":"id"}],"returns":[{"type":{"names":["integer"]},"description":"<p>Returns the index (the position in the {@link CB_GraphicSprites#spritesGroup.sprites} array) of the desired sprite or -1 if not found.</p>"}],"todo":["Optimize it (perhaps using a cache matching the IDs with their position, maybe using the \"position\" or \"positionByZIndex\" properties)."],"name":"getSpriteIndexById","longname":"CB_GraphicSprites#getSpriteIndexById","memberof":"CB_GraphicSprites","scope":"instance"},{"comment":"/**\r\n * Gets an array with all the {@link CB_GraphicSprites.SUBSPRITE_OBJECT} objects of a given {@link CB_GraphicSprites.SPRITE_OBJECT} object.\r\n * @function\r\n * @param {CB_GraphicSprites.SPRITE_OBJECT} [sprite=CB_GraphicSprites#getCurrent()] - The {@link CB_GraphicSprites.SPRITE_OBJECT} object which contains the sprite and its sub-sprites. If not provided, it will use the {@link CB_GraphicSprites.SPRITE_OBJECT} object which the pointer (set in the {@link CB_GraphicSprites#pointer} property) is currently pointing to (using the returning value of the {@link CB_GraphicSprites#getCurrent} method internally).\r\n * @param {boolean} [orderedByZIndex=false] - If set to true, it will return the sub-sprites sorted by their z-index (ascending order).\r\n * @param {*} [returnValueOnFail=undefined] - The value we want it to return in the case that no value is found. If not provided, undefined will be returned.\r\n * @returns {array|*} Returns an array with all the {@link CB_GraphicSprites.SUBSPRITE_OBJECT} objects of the given {@link CB_GraphicSprites.SPRITE_OBJECT} object or the value of \"returnValueOnFail\" otherwise.\r\n */","meta":{"range":[90651,91055],"filename":"CB_GraphicSprites.js","lineno":1138,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image","code":{"id":"astnode100043081","name":"CB_GraphicSprites.prototype.getSubSprites","type":"FunctionExpression","paramnames":["sprite","orderedByZIndex","returnValueOnFail"]},"vars":{"sprite":"CB_GraphicSprites#getSubSprites~sprite"}},"description":"<p>Gets an array with all the {@link CB_GraphicSprites.SUBSPRITE_OBJECT} objects of a given {@link CB_GraphicSprites.SPRITE_OBJECT} object.</p>","kind":"function","params":[{"type":{"names":["CB_GraphicSprites.SPRITE_OBJECT"]},"optional":true,"defaultvalue":"CB_GraphicSprites#getCurrent()","description":"<p>The {@link CB_GraphicSprites.SPRITE_OBJECT} object which contains the sprite and its sub-sprites. If not provided, it will use the {@link CB_GraphicSprites.SPRITE_OBJECT} object which the pointer (set in the {@link CB_GraphicSprites#pointer} property) is currently pointing to (using the returning value of the {@link CB_GraphicSprites#getCurrent} method internally).</p>","name":"sprite"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If set to true, it will return the sub-sprites sorted by their z-index (ascending order).</p>","name":"orderedByZIndex"},{"type":{"names":["*"]},"optional":true,"description":"<p>The value we want it to return in the case that no value is found. If not provided, undefined will be returned.</p>","name":"returnValueOnFail"}],"returns":[{"type":{"names":["array","*"]},"description":"<p>Returns an array with all the {@link CB_GraphicSprites.SUBSPRITE_OBJECT} objects of the given {@link CB_GraphicSprites.SPRITE_OBJECT} object or the value of &quot;returnValueOnFail&quot; otherwise.</p>"}],"name":"getSubSprites","longname":"CB_GraphicSprites#getSubSprites","memberof":"CB_GraphicSprites","scope":"instance"},{"comment":"/**\r\n * Gets a desired sub-sprite object through its index (its position in the array which is in the \"subSprites\" property of the given {@link CB_GraphicSprites.SPRITE_OBJECT} object). Faster than getting it through its identifier with the {@link CB_GraphicSprites#getSubSpriteById} method.\r\n * @function\r\n * @param {integer} [index=0] - The index where the desired sub-sprite must be located (its position in the array which is in the \"subSprites\" property of the given {@link CB_GraphicSprites.SPRITE_OBJECT} object).\r\n * @param {CB_GraphicSprites.SPRITE_OBJECT} [sprite=CB_GraphicSprites#getCurrent()] - The {@link CB_GraphicSprites.SPRITE_OBJECT} object which contains the sprite and its sub-sprites. If not provided, it will use the {@link CB_GraphicSprites.SPRITE_OBJECT} object which the pointer (set in the {@link CB_GraphicSprites#pointer} property) is currently pointing to (using the returning value of the {@link CB_GraphicSprites#getCurrent} method internally).\r\n * @param {*} [returnValueOnFail=undefined] - The value we want it to return in the case that no value is found. If not provided, undefined will be returned.\r\n * @returns {CB_GraphicSprites.SUBSPRITE_OBJECT|*} Returns a {@link CB_GraphicSprites.SUBSPRITE_OBJECT} object if found or the value of \"returnValueOnFail\" otherwise.\r\n */","meta":{"range":[92375,92749],"filename":"CB_GraphicSprites.js","lineno":1165,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image","code":{"id":"astnode100043130","name":"CB_GraphicSprites.prototype.getSubSprite","type":"FunctionExpression","paramnames":["index","sprite","returnValueOnFail"]},"vars":{"index":"CB_GraphicSprites#getSubSprite~index","sprite":"CB_GraphicSprites#getSubSprite~sprite"}},"description":"<p>Gets a desired sub-sprite object through its index (its position in the array which is in the &quot;subSprites&quot; property of the given {@link CB_GraphicSprites.SPRITE_OBJECT} object). Faster than getting it through its identifier with the {@link CB_GraphicSprites#getSubSpriteById} method.</p>","kind":"function","params":[{"type":{"names":["integer"]},"optional":true,"defaultvalue":0,"description":"<p>The index where the desired sub-sprite must be located (its position in the array which is in the &quot;subSprites&quot; property of the given {@link CB_GraphicSprites.SPRITE_OBJECT} object).</p>","name":"index"},{"type":{"names":["CB_GraphicSprites.SPRITE_OBJECT"]},"optional":true,"defaultvalue":"CB_GraphicSprites#getCurrent()","description":"<p>The {@link CB_GraphicSprites.SPRITE_OBJECT} object which contains the sprite and its sub-sprites. If not provided, it will use the {@link CB_GraphicSprites.SPRITE_OBJECT} object which the pointer (set in the {@link CB_GraphicSprites#pointer} property) is currently pointing to (using the returning value of the {@link CB_GraphicSprites#getCurrent} method internally).</p>","name":"sprite"},{"type":{"names":["*"]},"optional":true,"description":"<p>The value we want it to return in the case that no value is found. If not provided, undefined will be returned.</p>","name":"returnValueOnFail"}],"returns":[{"type":{"names":["CB_GraphicSprites.SUBSPRITE_OBJECT","*"]},"description":"<p>Returns a {@link CB_GraphicSprites.SUBSPRITE_OBJECT} object if found or the value of &quot;returnValueOnFail&quot; otherwise.</p>"}],"name":"getSubSprite","longname":"CB_GraphicSprites#getSubSprite","memberof":"CB_GraphicSprites","scope":"instance"},{"comment":"/**\r\n * Gets a desired sub-sprite object through its identifier from the given {@link CB_GraphicSprites.SPRITE_OBJECT} object. Slower than getting it through its index with the {@link CB_GraphicSprites#getSubSprite} method.\r\n * @function\r\n * @param {string|*} [id=undefined] - The identifier of the sub-sprite that we want to get.\r\n * @param {CB_GraphicSprites.SPRITE_OBJECT} [sprite=CB_GraphicSprites#getCurrent()] - The {@link CB_GraphicSprites.SPRITE_OBJECT} object which contains the sprite and its sub-sprites. If not provided, it will use the {@link CB_GraphicSprites.SPRITE_OBJECT} object which the pointer (set in the {@link CB_GraphicSprites#pointer} property) is currently pointing to (using the returning value of the {@link CB_GraphicSprites#getCurrent} method internally).\r\n * @param {*} [returnValueOnFail=undefined] - The value we want it to return in the case that no value is found. If not provided, undefined will be returned.\r\n * @returns {CB_GraphicSprites.SUBSPRITE_OBJECT|*} Returns a {@link CB_GraphicSprites.SUBSPRITE_OBJECT} object if found or the value of \"returnValueOnFail\" otherwise.\r\n */","meta":{"range":[93879,94135],"filename":"CB_GraphicSprites.js","lineno":1183,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image","code":{"id":"astnode100043195","name":"CB_GraphicSprites.prototype.getSubSpriteById","type":"FunctionExpression","paramnames":["id","sprite","returnValueOnFail"]},"vars":{"sprite":"CB_GraphicSprites#getSubSpriteById~sprite","index":"CB_GraphicSprites#getSubSpriteById~index"}},"description":"<p>Gets a desired sub-sprite object through its identifier from the given {@link CB_GraphicSprites.SPRITE_OBJECT} object. Slower than getting it through its index with the {@link CB_GraphicSprites#getSubSprite} method.</p>","kind":"function","params":[{"type":{"names":["string","*"]},"optional":true,"description":"<p>The identifier of the sub-sprite that we want to get.</p>","name":"id"},{"type":{"names":["CB_GraphicSprites.SPRITE_OBJECT"]},"optional":true,"defaultvalue":"CB_GraphicSprites#getCurrent()","description":"<p>The {@link CB_GraphicSprites.SPRITE_OBJECT} object which contains the sprite and its sub-sprites. If not provided, it will use the {@link CB_GraphicSprites.SPRITE_OBJECT} object which the pointer (set in the {@link CB_GraphicSprites#pointer} property) is currently pointing to (using the returning value of the {@link CB_GraphicSprites#getCurrent} method internally).</p>","name":"sprite"},{"type":{"names":["*"]},"optional":true,"description":"<p>The value we want it to return in the case that no value is found. If not provided, undefined will be returned.</p>","name":"returnValueOnFail"}],"returns":[{"type":{"names":["CB_GraphicSprites.SUBSPRITE_OBJECT","*"]},"description":"<p>Returns a {@link CB_GraphicSprites.SUBSPRITE_OBJECT} object if found or the value of &quot;returnValueOnFail&quot; otherwise.</p>"}],"name":"getSubSpriteById","longname":"CB_GraphicSprites#getSubSpriteById","memberof":"CB_GraphicSprites","scope":"instance"},{"comment":"/**\r\n * Gets the index (its position in the array which is in the \"subSprites\" property of the given {@link CB_GraphicSprites.SPRITE_OBJECT} object) of a desired sub-sprite by its identifier.\r\n * @function\r\n * @param {string|*} [id=undefined] - The identifier of the sub-sprite whose index we want to get.\r\n * @param {CB_GraphicSprites.SPRITE_OBJECT} [sprite=CB_GraphicSprites#getCurrent()] - The {@link CB_GraphicSprites.SPRITE_OBJECT} object which contains the sprite and its sub-sprites. If not provided, it will use the {@link CB_GraphicSprites.SPRITE_OBJECT} object which the pointer (set in the {@link CB_GraphicSprites#pointer} property) is currently pointing to (using the returning value of the {@link CB_GraphicSprites#getCurrent} method internally).\r\n * @returns {integer} Returns the index (its position in the array which is in the \"subSprites\" property of the given {@link CB_GraphicSprites.SPRITE_OBJECT} object) of the desired sub-sprite or -1 if not found.\r\n * @todo Optimize it (perhaps using a cache matching the IDs with their position, maybe using the \"position\" or \"positionByZIndex\" properties).\r\n */","meta":{"range":[95271,95607],"filename":"CB_GraphicSprites.js","lineno":1199,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image","code":{"id":"astnode100043237","name":"CB_GraphicSprites.prototype.getSubSpriteIndexById","type":"FunctionExpression","paramnames":["id","sprite"]},"vars":{"sprite":"CB_GraphicSprites#getSubSpriteIndexById~sprite","subSpritesLength":"CB_GraphicSprites#getSubSpriteIndexById~subSpritesLength","x":"CB_GraphicSprites#getSubSpriteIndexById~x"}},"description":"<p>Gets the index (its position in the array which is in the &quot;subSprites&quot; property of the given {@link CB_GraphicSprites.SPRITE_OBJECT} object) of a desired sub-sprite by its identifier.</p>","kind":"function","params":[{"type":{"names":["string","*"]},"optional":true,"description":"<p>The identifier of the sub-sprite whose index we want to get.</p>","name":"id"},{"type":{"names":["CB_GraphicSprites.SPRITE_OBJECT"]},"optional":true,"defaultvalue":"CB_GraphicSprites#getCurrent()","description":"<p>The {@link CB_GraphicSprites.SPRITE_OBJECT} object which contains the sprite and its sub-sprites. If not provided, it will use the {@link CB_GraphicSprites.SPRITE_OBJECT} object which the pointer (set in the {@link CB_GraphicSprites#pointer} property) is currently pointing to (using the returning value of the {@link CB_GraphicSprites#getCurrent} method internally).</p>","name":"sprite"}],"returns":[{"type":{"names":["integer"]},"description":"<p>Returns the index (its position in the array which is in the &quot;subSprites&quot; property of the given {@link CB_GraphicSprites.SPRITE_OBJECT} object) of the desired sub-sprite or -1 if not found.</p>"}],"todo":["Optimize it (perhaps using a cache matching the IDs with their position, maybe using the \"position\" or \"positionByZIndex\" properties)."],"name":"getSubSpriteIndexById","longname":"CB_GraphicSprites#getSubSpriteIndexById","memberof":"CB_GraphicSprites","scope":"instance"},{"comment":"/**\r\n * Alias for {@link CB_GraphicSprites#executeFunctionAll}.\r\n * @function CB_GraphicSprites#executeAll\r\n * @see {@link CB_GraphicSprites#executeFunctionAll}\r\n */","meta":{"filename":"CB_GraphicSprites.js","lineno":1214,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image","code":{}},"description":"<p>Alias for {@link CB_GraphicSprites#executeFunctionAll}.</p>","kind":"function","name":"executeAll","see":["{@link CB_GraphicSprites#executeFunctionAll}"],"memberof":"CB_GraphicSprites","longname":"CB_GraphicSprites#executeAll","scope":"instance"},{"comment":"/**\r\n * Alias for {@link CB_GraphicSprites#executeFunctionAll}.\r\n * @function CB_GraphicSprites#forEach\r\n * @see {@link CB_GraphicSprites#executeFunctionAll}\r\n */","meta":{"filename":"CB_GraphicSprites.js","lineno":1219,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image","code":{}},"description":"<p>Alias for {@link CB_GraphicSprites#executeFunctionAll}.</p>","kind":"function","name":"forEach","see":["{@link CB_GraphicSprites#executeFunctionAll}"],"memberof":"CB_GraphicSprites","longname":"CB_GraphicSprites#forEach","scope":"instance"},{"comment":"/**\r\n * Alias for {@link CB_GraphicSprites#executeFunctionAll}.\r\n * @function CB_GraphicSprites#forEachSprite\r\n * @see {@link CB_GraphicSprites#executeFunctionAll}\r\n */","meta":{"filename":"CB_GraphicSprites.js","lineno":1224,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image","code":{}},"description":"<p>Alias for {@link CB_GraphicSprites#executeFunctionAll}.</p>","kind":"function","name":"forEachSprite","see":["{@link CB_GraphicSprites#executeFunctionAll}"],"memberof":"CB_GraphicSprites","longname":"CB_GraphicSprites#forEachSprite","scope":"instance"},{"comment":"/**\r\n * Performs a desired action, using the provided function, on all the existing sprites ({@link CB_GraphicSprites.SPRITE_OBJECT} objects) or on the desired ones (if provided). Calls the {@link CB_Arrays.executeFunctionAll} function internally and returns its returning value.\r\n * @function\r\n * @param {CB_Arrays.executeFunctionAll_ON_LOOP_CALLBACK} functionEach - Function that will be called for each sprite ({@link CB_GraphicSprites.SPRITE_OBJECT} object). As the first parameter it receives the {@link CB_GraphicSprites.SPRITE_OBJECT} object of the \"sprites\" being looped, as the second parameter the position of this {@link CB_GraphicSprites.SPRITE_OBJECT} object in the \"sprites\" array provided (or, if not provided, in the array returned by the {@link CB_GraphicSprites#getSprites} method), the third parameter is the array being looped and the fourth parameter will be the \"delayBetweenEach\" being used, being \"this\" the {@link CB_GraphicSprites.SPRITE_OBJECT} object itself.\r\n * @param {boolean} [orderedByZIndex=false] - If set to true, it will loop the sprites sorted by their z-index (ascending order).\r\n * @param {number|CB_Arrays.executeFunctionAll_ON_LOOP_CALLBACK} [delayBetweenEach=0] - If a value greater than zero is used, it will be used as the delay desired between each call to the \"functionEach\" function (calling them using the [setTimeout]{@link https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/setTimeout} function internally). If not provided or the value is 0 (zero) or lower, each call to the \"functionEach\" function will be performed immediately one after the other. If a function is provided, it will be called with the same parameters as the \"functionEach\" function and its returning value will be used as the delay (executed every loop for each {@link CB_GraphicSprites.SPRITE_OBJECT} object).\r\n * @param {array} [sprites={@link CB_GraphicSprites#getSprites}()] - A numeric array containing the sprites ({@link CB_GraphicSprites.SPRITE_OBJECT} objects) that we want to loop. It should contain only {@link CB_GraphicSprites.SPRITE_OBJECT} objects which are already in the current {@link CB_GraphicSprites} object. If not provided, it will use all the {@link CB_GraphicSprites.SPRITE_OBJECT} objects contained in the {@link CB_GraphicSprites} object.\r\n * @param {boolean} [returnSetTimeoutsArray=false] - Defines whether we want the method to return an integer or a numeric array with information of each [setTimeout]{@link https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/setTimeout} call. Returning an array with information of each [setTimeout]{@link https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/setTimeout} call is only useful when the [setTimeout]{@link https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/setTimeout} function is called internally, which happens when the \"delayBetweenEach\" parameter is greater than 0 (zero).\r\n * @param {boolean} [delayBetweenEachAffectsFirst=false] - If set to true, the desired delay (if any) will also affect the first call to the \"functionEach\" function.\r\n * @param {CB_Arrays.executeFunctionAll_ON_FINISH_CALLBACK} [functionFinish] - Function that will be called for when it has finished looping all the items. The first parameter will be the array which was looped, the second parameter will be the number of times that the \"functionEach\" callback was called (the most likely, matches the number of elements unless they are undefined or null), and the third parameter will be the maximum \"delay\" used, being \"this\" the array itself.\r\n * @returns {integer|array} If the \"returnSetTimeoutsArray\" parameter is set to false, it will return the number of calls to the \"functionEach\" function that were performed (which should be the same number as the {@link CB_GraphicSprites.SPRITE_OBJECT} objects given in the \"sprites\" parameter). Otherwise, if the \"returnSetTimeoutsArray\" is set to true, it will return a numeric array with a {@link CB_Arrays.executeFunctionAll_OBJECT} object for each {@link CB_GraphicSprites.SPRITE_OBJECT} given. The length of this array will also be the number of calls to the \"functionEach\" function that were performed. Note that if a value greater than 0 (zero) for the \"delayBetweenEach\" parameter has been provided, perhaps not all calls of the \"functionEach\" function will have been performed yet when exiting this method because of the asynchronous nature of the [setTimeout]{@link https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/setTimeout} function.\r\n * @todo Think about only allowing {@link CB_GraphicSprites.SPRITE_OBJECT} objects (in the \"sprites\" parameter) which are already in the {@link CB_GraphicSprites} (identify them by their ID), to avoid problems.\r\n */","meta":{"range":[100947,101472],"filename":"CB_GraphicSprites.js","lineno":1242,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image","code":{"id":"astnode100043299","name":"CB_GraphicSprites.prototype.executeFunctionAll","type":"AssignmentExpression","value":"CB_GraphicSprites.prototype.executeAll","paramnames":[]}},"description":"<p>Performs a desired action, using the provided function, on all the existing sprites ({@link CB_GraphicSprites.SPRITE_OBJECT} objects) or on the desired ones (if provided). Calls the {@link CB_Arrays.executeFunctionAll} function internally and returns its returning value.</p>","kind":"function","params":[{"type":{"names":["CB_Arrays.executeFunctionAll_ON_LOOP_CALLBACK"]},"description":"<p>Function that will be called for each sprite ({@link CB_GraphicSprites.SPRITE_OBJECT} object). As the first parameter it receives the {@link CB_GraphicSprites.SPRITE_OBJECT} object of the &quot;sprites&quot; being looped, as the second parameter the position of this {@link CB_GraphicSprites.SPRITE_OBJECT} object in the &quot;sprites&quot; array provided (or, if not provided, in the array returned by the {@link CB_GraphicSprites#getSprites} method), the third parameter is the array being looped and the fourth parameter will be the &quot;delayBetweenEach&quot; being used, being &quot;this&quot; the {@link CB_GraphicSprites.SPRITE_OBJECT} object itself.</p>","name":"functionEach"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If set to true, it will loop the sprites sorted by their z-index (ascending order).</p>","name":"orderedByZIndex"},{"type":{"names":["number","CB_Arrays.executeFunctionAll_ON_LOOP_CALLBACK"]},"optional":true,"defaultvalue":0,"description":"<p>If a value greater than zero is used, it will be used as the delay desired between each call to the &quot;functionEach&quot; function (calling them using the [setTimeout]{@link https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/setTimeout} function internally). If not provided or the value is 0 (zero) or lower, each call to the &quot;functionEach&quot; function will be performed immediately one after the other. If a function is provided, it will be called with the same parameters as the &quot;functionEach&quot; function and its returning value will be used as the delay (executed every loop for each {@link CB_GraphicSprites.SPRITE_OBJECT} object).</p>","name":"delayBetweenEach"},{"type":{"names":["array"]},"optional":true,"defaultvalue":"{@link CB_GraphicSprites#getSprites}()","description":"<p>A numeric array containing the sprites ({@link CB_GraphicSprites.SPRITE_OBJECT} objects) that we want to loop. It should contain only {@link CB_GraphicSprites.SPRITE_OBJECT} objects which are already in the current {@link CB_GraphicSprites} object. If not provided, it will use all the {@link CB_GraphicSprites.SPRITE_OBJECT} objects contained in the {@link CB_GraphicSprites} object.</p>","name":"sprites"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>Defines whether we want the method to return an integer or a numeric array with information of each [setTimeout]{@link https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/setTimeout} call. Returning an array with information of each [setTimeout]{@link https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/setTimeout} call is only useful when the [setTimeout]{@link https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/setTimeout} function is called internally, which happens when the &quot;delayBetweenEach&quot; parameter is greater than 0 (zero).</p>","name":"returnSetTimeoutsArray"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If set to true, the desired delay (if any) will also affect the first call to the &quot;functionEach&quot; function.</p>","name":"delayBetweenEachAffectsFirst"},{"type":{"names":["CB_Arrays.executeFunctionAll_ON_FINISH_CALLBACK"]},"optional":true,"description":"<p>Function that will be called for when it has finished looping all the items. The first parameter will be the array which was looped, the second parameter will be the number of times that the &quot;functionEach&quot; callback was called (the most likely, matches the number of elements unless they are undefined or null), and the third parameter will be the maximum &quot;delay&quot; used, being &quot;this&quot; the array itself.</p>","name":"functionFinish"}],"returns":[{"type":{"names":["integer","array"]},"description":"<p>If the &quot;returnSetTimeoutsArray&quot; parameter is set to false, it will return the number of calls to the &quot;functionEach&quot; function that were performed (which should be the same number as the {@link CB_GraphicSprites.SPRITE_OBJECT} objects given in the &quot;sprites&quot; parameter). Otherwise, if the &quot;returnSetTimeoutsArray&quot; is set to true, it will return a numeric array with a {@link CB_Arrays.executeFunctionAll_OBJECT} object for each {@link CB_GraphicSprites.SPRITE_OBJECT} given. The length of this array will also be the number of calls to the &quot;functionEach&quot; function that were performed. Note that if a value greater than 0 (zero) for the &quot;delayBetweenEach&quot; parameter has been provided, perhaps not all calls of the &quot;functionEach&quot; function will have been performed yet when exiting this method because of the asynchronous nature of the [setTimeout]{@link https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/setTimeout} function.</p>"}],"todo":["Think about only allowing {@link CB_GraphicSprites.SPRITE_OBJECT} objects (in the \"sprites\" parameter) which are already in the {@link CB_GraphicSprites} (identify them by their ID), to avoid problems."],"name":"executeFunctionAll","longname":"CB_GraphicSprites#executeFunctionAll","memberof":"CB_GraphicSprites","scope":"instance"},{"comment":"/**\r\n * Alias for {@link CB_AudioFileSpritesPool#executeFunctionAllSubSprites}.\r\n * @function CB_AudioFileSpritesPool#executeAllSubSprites\r\n * @see {@link CB_AudioFileSpritesPool#executeFunctionAllSubSprites}\r\n */","meta":{"filename":"CB_GraphicSprites.js","lineno":1248,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image","code":{}},"description":"<p>Alias for {@link CB_AudioFileSpritesPool#executeFunctionAllSubSprites}.</p>","kind":"function","name":"executeAllSubSprites","see":["{@link CB_AudioFileSpritesPool#executeFunctionAllSubSprites}"],"memberof":"CB_AudioFileSpritesPool","longname":"CB_AudioFileSpritesPool#executeAllSubSprites","scope":"instance"},{"comment":"/**\r\n * Alias for {@link CB_AudioFileSpritesPool#executeFunctionAllSubSprites}.\r\n * @function CB_AudioFileSpritesPool#forEachSubSprite\r\n * @see {@link CB_AudioFileSpritesPool#executeFunctionAllSubSprites}\r\n */","meta":{"filename":"CB_GraphicSprites.js","lineno":1253,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image","code":{}},"description":"<p>Alias for {@link CB_AudioFileSpritesPool#executeFunctionAllSubSprites}.</p>","kind":"function","name":"forEachSubSprite","see":["{@link CB_AudioFileSpritesPool#executeFunctionAllSubSprites}"],"memberof":"CB_AudioFileSpritesPool","longname":"CB_AudioFileSpritesPool#forEachSubSprite","scope":"instance"},{"comment":"/**\r\n * Performs a desired action, using the provided function, on all the existing sub-sprites ({@link CB_GraphicSprites.SUBSPRITE_OBJECT} objects) from a given sprite ({@link CB_GraphicSprites.SPRITE_OBJECT} object). Calls the {@link CB_Arrays.executeFunctionAll} function internally and returns its returning value.\r\n * @function\r\n * @param {CB_Arrays.executeFunctionAll_ON_LOOP_CALLBACK} functionEach - Function that will be called for each sub-sprite ({@link CB_GraphicSprites.SUBSPRITE_OBJECT} object) from the given sprite ({@link CB_GraphicSprites.SPRITE_OBJECT} object). As the first parameter it receives the {@link CB_GraphicSprites.SUBSPRITE_OBJECT} object of the sub-sprites being looped, as the second parameter the position of this {@link CB_GraphicSprites.SUBSPRITE_OBJECT} object in the \"subSprites\" property of the sprite ({@link CB_GraphicSprites.SPRITE_OBJECT} object) provided (which is an array), the third parameter is the array being looped and the fourth parameter will be the \"delayBetweenEach\" being used, being \"this\" the {@link CB_GraphicSprites.SUBSPRITE_OBJECT} object itself.\r\n * @param {boolean} [orderedByZIndex=false] - If set to true, it will loop the sub-sprites sorted by their z-index (ascending order).\r\n * @param {number|CB_Arrays.executeFunctionAll_ON_LOOP_CALLBACK} [delayBetweenEach=0] - If a value greater than zero is used, it will be used as the delay desired between each call to the \"functionEach\" function (calling them using the [setTimeout]{@link https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/setTimeout} function internally). If not provided or the value is 0 (zero) or lower, each call to the \"functionEach\" function will be performed immediately one after the other. If a function is provided, it will be called with the same parameters as the \"functionEach\" function and its returning value will be used as the delay (executed every loop for each {@link CB_GraphicSprites.SUBSPRITE_OBJECT} object).\r\n * @param {CB_GraphicSprites.SPRITE_OBJECT} [sprite=CB_GraphicSprites#getCurrent()] - The {@link CB_GraphicSprites.SPRITE_OBJECT} object which contains the sprite and its sub-sprites. If not provided, it will use the {@link CB_GraphicSprites.SPRITE_OBJECT} object which the pointer (set in the {@link CB_GraphicSprites#pointer} property) is currently pointing to (using the returning value of the {@link CB_GraphicSprites#getCurrent} method internally).\r\n * @param {boolean} [returnSetTimeoutsArray=false] - Defines whether we want the method to return an integer or a numeric array with information of each [setTimeout]{@link https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/setTimeout} call. Returning an array with information of each [setTimeout]{@link https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/setTimeout} call is only useful when the [setTimeout]{@link https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/setTimeout} function is called internally, which happens when the \"delayBetweenEach\" parameter is greater than 0 (zero).\r\n * @param {boolean} [delayBetweenEachAffectsFirst=false] - If set to true, the desired delay (if any) will also affect the first call to the \"functionEach\" function.\r\n * @param {CB_Arrays.executeFunctionAll_ON_FINISH_CALLBACK} [functionFinish] - Function that will be called for when it has finished looping all the items. The first parameter will be the array which was looped, the second parameter will be the number of times that the \"functionEach\" callback was called (the most likely, matches the number of elements unless they are undefined or null), and the third parameter will be the maximum \"delay\" used, being \"this\" the array itself.\r\n * @returns {integer|array} If the \"returnSetTimeoutsArray\" parameter is set to false, it will return the number of calls to the \"functionEach\" function that were performed (which should be the same number as the existing {@link CB_GraphicSprites.SUBSPRITE_OBJECT} objects in the given {@link CB_GraphicSprites.SPRITE_OBJECT} object). Otherwise, if the \"returnSetTimeoutsArray\" is set to true, it will return a numeric array with a {@link CB_Arrays.executeFunctionAll_OBJECT} object for each {@link CB_GraphicSprites.SUBSPRITE_OBJECT}. The length of this array will also be the number of calls to the \"functionEach\" function that were performed. Note that if a value greater than 0 (zero) for the \"delayBetweenEach\" parameter has been provided, perhaps not all calls of the \"functionEach\" function will have been performed yet when exiting this method because of the asynchronous nature of the [setTimeout]{@link https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/setTimeout} function.\r\n * @todo Think about only allowing {@link CB_GraphicSprites.SPRITE_OBJECT} objects (in the \"sprite\" parameter) which are already in the {@link CB_GraphicSprites.SPRITE_OBJECT} (identify them by their ID), to avoid problems.\r\n */","meta":{"range":[106909,107397],"filename":"CB_GraphicSprites.js","lineno":1271,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image","code":{"id":"astnode100043354","name":"CB_GraphicSprites.prototype.executeFunctionAllSubSprites","type":"AssignmentExpression","value":"CB_GraphicSprites.prototype.executeAllSubSprites","paramnames":[]}},"description":"<p>Performs a desired action, using the provided function, on all the existing sub-sprites ({@link CB_GraphicSprites.SUBSPRITE_OBJECT} objects) from a given sprite ({@link CB_GraphicSprites.SPRITE_OBJECT} object). Calls the {@link CB_Arrays.executeFunctionAll} function internally and returns its returning value.</p>","kind":"function","params":[{"type":{"names":["CB_Arrays.executeFunctionAll_ON_LOOP_CALLBACK"]},"description":"<p>Function that will be called for each sub-sprite ({@link CB_GraphicSprites.SUBSPRITE_OBJECT} object) from the given sprite ({@link CB_GraphicSprites.SPRITE_OBJECT} object). As the first parameter it receives the {@link CB_GraphicSprites.SUBSPRITE_OBJECT} object of the sub-sprites being looped, as the second parameter the position of this {@link CB_GraphicSprites.SUBSPRITE_OBJECT} object in the &quot;subSprites&quot; property of the sprite ({@link CB_GraphicSprites.SPRITE_OBJECT} object) provided (which is an array), the third parameter is the array being looped and the fourth parameter will be the &quot;delayBetweenEach&quot; being used, being &quot;this&quot; the {@link CB_GraphicSprites.SUBSPRITE_OBJECT} object itself.</p>","name":"functionEach"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If set to true, it will loop the sub-sprites sorted by their z-index (ascending order).</p>","name":"orderedByZIndex"},{"type":{"names":["number","CB_Arrays.executeFunctionAll_ON_LOOP_CALLBACK"]},"optional":true,"defaultvalue":0,"description":"<p>If a value greater than zero is used, it will be used as the delay desired between each call to the &quot;functionEach&quot; function (calling them using the [setTimeout]{@link https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/setTimeout} function internally). If not provided or the value is 0 (zero) or lower, each call to the &quot;functionEach&quot; function will be performed immediately one after the other. If a function is provided, it will be called with the same parameters as the &quot;functionEach&quot; function and its returning value will be used as the delay (executed every loop for each {@link CB_GraphicSprites.SUBSPRITE_OBJECT} object).</p>","name":"delayBetweenEach"},{"type":{"names":["CB_GraphicSprites.SPRITE_OBJECT"]},"optional":true,"defaultvalue":"CB_GraphicSprites#getCurrent()","description":"<p>The {@link CB_GraphicSprites.SPRITE_OBJECT} object which contains the sprite and its sub-sprites. If not provided, it will use the {@link CB_GraphicSprites.SPRITE_OBJECT} object which the pointer (set in the {@link CB_GraphicSprites#pointer} property) is currently pointing to (using the returning value of the {@link CB_GraphicSprites#getCurrent} method internally).</p>","name":"sprite"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>Defines whether we want the method to return an integer or a numeric array with information of each [setTimeout]{@link https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/setTimeout} call. Returning an array with information of each [setTimeout]{@link https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/setTimeout} call is only useful when the [setTimeout]{@link https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/setTimeout} function is called internally, which happens when the &quot;delayBetweenEach&quot; parameter is greater than 0 (zero).</p>","name":"returnSetTimeoutsArray"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If set to true, the desired delay (if any) will also affect the first call to the &quot;functionEach&quot; function.</p>","name":"delayBetweenEachAffectsFirst"},{"type":{"names":["CB_Arrays.executeFunctionAll_ON_FINISH_CALLBACK"]},"optional":true,"description":"<p>Function that will be called for when it has finished looping all the items. The first parameter will be the array which was looped, the second parameter will be the number of times that the &quot;functionEach&quot; callback was called (the most likely, matches the number of elements unless they are undefined or null), and the third parameter will be the maximum &quot;delay&quot; used, being &quot;this&quot; the array itself.</p>","name":"functionFinish"}],"returns":[{"type":{"names":["integer","array"]},"description":"<p>If the &quot;returnSetTimeoutsArray&quot; parameter is set to false, it will return the number of calls to the &quot;functionEach&quot; function that were performed (which should be the same number as the existing {@link CB_GraphicSprites.SUBSPRITE_OBJECT} objects in the given {@link CB_GraphicSprites.SPRITE_OBJECT} object). Otherwise, if the &quot;returnSetTimeoutsArray&quot; is set to true, it will return a numeric array with a {@link CB_Arrays.executeFunctionAll_OBJECT} object for each {@link CB_GraphicSprites.SUBSPRITE_OBJECT}. The length of this array will also be the number of calls to the &quot;functionEach&quot; function that were performed. Note that if a value greater than 0 (zero) for the &quot;delayBetweenEach&quot; parameter has been provided, perhaps not all calls of the &quot;functionEach&quot; function will have been performed yet when exiting this method because of the asynchronous nature of the [setTimeout]{@link https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/setTimeout} function.</p>"}],"todo":["Think about only allowing {@link CB_GraphicSprites.SPRITE_OBJECT} objects (in the \"sprite\" parameter) which are already in the {@link CB_GraphicSprites.SPRITE_OBJECT} (identify them by their ID), to avoid problems."],"name":"executeFunctionAllSubSprites","longname":"CB_GraphicSprites#executeFunctionAllSubSprites","memberof":"CB_GraphicSprites","scope":"instance"},{"comment":"/**\r\n * Alias for {@link CB_GraphicSprites#getPointerPrevious}.\r\n * @function CB_GraphicSprites#getPreviousPosition\r\n * @see {@link CB_GraphicSprites#getPointerPrevious}\r\n */","meta":{"filename":"CB_GraphicSprites.js","lineno":1277,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image","code":{}},"description":"<p>Alias for {@link CB_GraphicSprites#getPointerPrevious}.</p>","kind":"function","name":"getPreviousPosition","see":["{@link CB_GraphicSprites#getPointerPrevious}"],"memberof":"CB_GraphicSprites","longname":"CB_GraphicSprites#getPreviousPosition","scope":"instance"},{"comment":"/**\r\n * Gets the previous position of the pointer. It belongs to an index of the {@link CB_GraphicSprites#spritesGroup.sprites} array where a {@link CB_GraphicSprites.SPRITE_OBJECT} object is placed (containing a sprite). Internally, it uses the {@link CB_GraphicSprites#pointerPrevious} property.\r\n * @function\r\n * @returns {integer} Returns the position where the pointer was previously pointing to. It belongs to an index of the {@link CB_GraphicSprites#spritesGroup.sprites} array where a {@link CB_GraphicSprites.SPRITE_OBJECT} object is placed (containing a sprite). If not found, returns -1 by default.\r\n */","meta":{"range":[108199,108441],"filename":"CB_GraphicSprites.js","lineno":1287,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image","code":{"id":"astnode100043399","name":"CB_GraphicSprites.prototype.getPointerPrevious","type":"AssignmentExpression","value":"CB_GraphicSprites.prototype.getPreviousPosition","paramnames":[]}},"description":"<p>Gets the previous position of the pointer. It belongs to an index of the {@link CB_GraphicSprites#spritesGroup.sprites} array where a {@link CB_GraphicSprites.SPRITE_OBJECT} object is placed (containing a sprite). Internally, it uses the {@link CB_GraphicSprites#pointerPrevious} property.</p>","kind":"function","returns":[{"type":{"names":["integer"]},"description":"<p>Returns the position where the pointer was previously pointing to. It belongs to an index of the {@link CB_GraphicSprites#spritesGroup.sprites} array where a {@link CB_GraphicSprites.SPRITE_OBJECT} object is placed (containing a sprite). If not found, returns -1 by default.</p>"}],"name":"getPointerPrevious","longname":"CB_GraphicSprites#getPointerPrevious","memberof":"CB_GraphicSprites","scope":"instance"},{"comment":"/**\r\n * Alias for {@link CB_GraphicSprites#getPointer}.\r\n * @function CB_GraphicSprites#getCurrentPosition\r\n * @see {@link CB_GraphicSprites#getPointer}\r\n */","meta":{"filename":"CB_GraphicSprites.js","lineno":1293,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image","code":{}},"description":"<p>Alias for {@link CB_GraphicSprites#getPointer}.</p>","kind":"function","name":"getCurrentPosition","see":["{@link CB_GraphicSprites#getPointer}"],"memberof":"CB_GraphicSprites","longname":"CB_GraphicSprites#getCurrentPosition","scope":"instance"},{"comment":"/**\r\n * Gets the current position of the pointer. It belongs to an index of the {@link CB_GraphicSprites#spritesGroup.sprites} array where a {@link CB_GraphicSprites.SPRITE_OBJECT} object is placed (containing a sprite). Internally, it uses the {@link CB_GraphicSprites#pointer} property.\r\n * @function\r\n * @returns {integer} Returns the position where the pointer is currently pointing to. It belongs to an index of the {@link CB_GraphicSprites#spritesGroup.sprites} array where a {@link CB_GraphicSprites.SPRITE_OBJECT} object is placed (containing a sprite). If not found, returns zero (0) by default.\r\n */","meta":{"range":[109221,109399],"filename":"CB_GraphicSprites.js","lineno":1303,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image","code":{"id":"astnode100043438","name":"CB_GraphicSprites.prototype.getPointer","type":"AssignmentExpression","value":"CB_GraphicSprites.prototype.getCurrentPosition","paramnames":[]}},"description":"<p>Gets the current position of the pointer. It belongs to an index of the {@link CB_GraphicSprites#spritesGroup.sprites} array where a {@link CB_GraphicSprites.SPRITE_OBJECT} object is placed (containing a sprite). Internally, it uses the {@link CB_GraphicSprites#pointer} property.</p>","kind":"function","returns":[{"type":{"names":["integer"]},"description":"<p>Returns the position where the pointer is currently pointing to. It belongs to an index of the {@link CB_GraphicSprites#spritesGroup.sprites} array where a {@link CB_GraphicSprites.SPRITE_OBJECT} object is placed (containing a sprite). If not found, returns zero (0) by default.</p>"}],"name":"getPointer","longname":"CB_GraphicSprites#getPointer","memberof":"CB_GraphicSprites","scope":"instance"},{"comment":"/**\r\n * Alias for {@link CB_GraphicSprites#setPointer}.\r\n * @function CB_GraphicSprites#setCurrentPosition\r\n * @see {@link CB_GraphicSprites#setPointer}\r\n */","meta":{"filename":"CB_GraphicSprites.js","lineno":1309,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image","code":{}},"description":"<p>Alias for {@link CB_GraphicSprites#setPointer}.</p>","kind":"function","name":"setCurrentPosition","see":["{@link CB_GraphicSprites#setPointer}"],"memberof":"CB_GraphicSprites","longname":"CB_GraphicSprites#setCurrentPosition","scope":"instance"},{"comment":"/**\r\n * Sets the pointer to the desired position (if possible). The position should belong to an index of the {@link CB_GraphicSprites#spritesGroup.sprites} array where a {@link CB_GraphicSprites.SPRITE_OBJECT} object is placed (containing a sprite). Internally, it modifies the {@link CB_GraphicSprites#pointer} property (if possible). If the position was updated, it will also reset the {@link CB_GraphicSprites#time} property (setting the current time in milliseconds).\r\n * @function\r\n * @param {integer} [position=0|CB_GraphicSprites#spritesGroup.sprites.length-1|position%CB_GraphicSprites#spritesGroup.sprites.length] - The position that we want the pointer to use. The position should belong to an index of the {@link CB_GraphicSprites#spritesGroup.sprites} array where a {@link CB_GraphicSprites.SPRITE_OBJECT} object is placed (containing a sprite).\r\n * @param {boolean} [loop=false] - If set to false and the \"position\" given is greater than the current number of sprites, the \"position\" used will be the one which belongs to the last sprite. If set to false and the \"position\" given is lower than zero, the \"position\" used will be zero (the first position). Otherwise, if set to true and the \"position\" given is greater than the current number of sprites or lower than zero, it will modify the given \"position\" making it cycle (from the end to the beginning) treating always the \"position\" as a positive number. This parameter is ignored when the given \"position\" has not reached the limit.\r\n * @returns {integer} Returns the position where the pointer is currently pointing to. It belongs to an index of the {@link CB_GraphicSprites#spritesGroup.sprites} array where a {@link CB_GraphicSprites.SPRITE_OBJECT} object is placed (containing a sprite).\r\n */","meta":{"range":[111337,112110],"filename":"CB_GraphicSprites.js","lineno":1321,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image","code":{"id":"astnode100043470","name":"CB_GraphicSprites.prototype.setPointer","type":"AssignmentExpression","value":"CB_GraphicSprites.prototype.setCurrentPosition","paramnames":[]}},"description":"<p>Sets the pointer to the desired position (if possible). The position should belong to an index of the {@link CB_GraphicSprites#spritesGroup.sprites} array where a {@link CB_GraphicSprites.SPRITE_OBJECT} object is placed (containing a sprite). Internally, it modifies the {@link CB_GraphicSprites#pointer} property (if possible). If the position was updated, it will also reset the {@link CB_GraphicSprites#time} property (setting the current time in milliseconds).</p>","kind":"function","params":[{"type":{"names":["integer"]},"optional":true,"defaultvalue":"0|CB_GraphicSprites#spritesGroup.sprites.length-1|position%CB_GraphicSprites#spritesGroup.sprites.length","description":"<p>The position that we want the pointer to use. The position should belong to an index of the {@link CB_GraphicSprites#spritesGroup.sprites} array where a {@link CB_GraphicSprites.SPRITE_OBJECT} object is placed (containing a sprite).</p>","name":"position"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If set to false and the &quot;position&quot; given is greater than the current number of sprites, the &quot;position&quot; used will be the one which belongs to the last sprite. If set to false and the &quot;position&quot; given is lower than zero, the &quot;position&quot; used will be zero (the first position). Otherwise, if set to true and the &quot;position&quot; given is greater than the current number of sprites or lower than zero, it will modify the given &quot;position&quot; making it cycle (from the end to the beginning) treating always the &quot;position&quot; as a positive number. This parameter is ignored when the given &quot;position&quot; has not reached the limit.</p>","name":"loop"}],"returns":[{"type":{"names":["integer"]},"description":"<p>Returns the position where the pointer is currently pointing to. It belongs to an index of the {@link CB_GraphicSprites#spritesGroup.sprites} array where a {@link CB_GraphicSprites.SPRITE_OBJECT} object is placed (containing a sprite).</p>"}],"name":"setPointer","longname":"CB_GraphicSprites#setPointer","memberof":"CB_GraphicSprites","scope":"instance"},{"comment":"/**\r\n * Gets the sprite (a {@link CB_GraphicSprites.SPRITE_OBJECT} object) which was previously pointed (by the previous value of the pointer set in the {@link CB_GraphicSprites#pointer} property, whose value is now in the {@link CB_GraphicSprites#pointerPrevious} property).\r\n * @function\r\n * @returns {CB_GraphicSprites.SPRITE_OBJECT|null} Returns the {@link CB_GraphicSprites.SPRITE_OBJECT} object which was previously pointed by the pointer (by the previous value of the pointer set in the {@link CB_GraphicSprites#pointer} property, whose value is now in the {@link CB_GraphicSprites#pointerPrevious} property). Returns null if not found.\r\n */","meta":{"range":[112768,113001],"filename":"CB_GraphicSprites.js","lineno":1344,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image","code":{"id":"astnode100043604","name":"CB_GraphicSprites.prototype.getPrevious","type":"FunctionExpression","paramnames":[]}},"description":"<p>Gets the sprite (a {@link CB_GraphicSprites.SPRITE_OBJECT} object) which was previously pointed (by the previous value of the pointer set in the {@link CB_GraphicSprites#pointer} property, whose value is now in the {@link CB_GraphicSprites#pointerPrevious} property).</p>","kind":"function","returns":[{"type":{"names":["CB_GraphicSprites.SPRITE_OBJECT","null"]},"description":"<p>Returns the {@link CB_GraphicSprites.SPRITE_OBJECT} object which was previously pointed by the pointer (by the previous value of the pointer set in the {@link CB_GraphicSprites#pointer} property, whose value is now in the {@link CB_GraphicSprites#pointerPrevious} property). Returns null if not found.</p>"}],"name":"getPrevious","longname":"CB_GraphicSprites#getPrevious","memberof":"CB_GraphicSprites","scope":"instance"},{"comment":"/**\r\n * Alias for {@link CB_GraphicSprites#getCurrent}.\r\n * @function CB_GraphicSprites#now\r\n * @see {@link CB_GraphicSprites#getCurrent}\r\n */","meta":{"filename":"CB_GraphicSprites.js","lineno":1351,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image","code":{}},"description":"<p>Alias for {@link CB_GraphicSprites#getCurrent}.</p>","kind":"function","name":"now","see":["{@link CB_GraphicSprites#getCurrent}"],"memberof":"CB_GraphicSprites","longname":"CB_GraphicSprites#now","scope":"instance"},{"comment":"/**\r\n * Alias for {@link CB_GraphicSprites#getCurrent}.\r\n * @function CB_GraphicSprites#current\r\n * @see {@link CB_GraphicSprites#getCurrent}\r\n */","meta":{"filename":"CB_GraphicSprites.js","lineno":1356,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image","code":{}},"description":"<p>Alias for {@link CB_GraphicSprites#getCurrent}.</p>","kind":"function","name":"current","see":["{@link CB_GraphicSprites#getCurrent}"],"memberof":"CB_GraphicSprites","longname":"CB_GraphicSprites#current","scope":"instance"},{"comment":"/**\r\n * Gets the sprite (a {@link CB_GraphicSprites.SPRITE_OBJECT} object) which is being currently pointed (by the pointer set in the {@link CB_GraphicSprites#pointer} property).\r\n * @function\r\n * @returns {CB_GraphicSprites.SPRITE_OBJECT|null} Returns the {@link CB_GraphicSprites.SPRITE_OBJECT} object which is currently pointed by the pointer (set in the {@link CB_GraphicSprites#pointer} property). Returns null if not found.\r\n */","meta":{"range":[113744,113923],"filename":"CB_GraphicSprites.js","lineno":1366,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image","code":{"id":"astnode100043644","name":"CB_GraphicSprites.prototype.getCurrent","type":"AssignmentExpression","value":"CB_GraphicSprites.prototype.current","paramnames":[]}},"description":"<p>Gets the sprite (a {@link CB_GraphicSprites.SPRITE_OBJECT} object) which is being currently pointed (by the pointer set in the {@link CB_GraphicSprites#pointer} property).</p>","kind":"function","returns":[{"type":{"names":["CB_GraphicSprites.SPRITE_OBJECT","null"]},"description":"<p>Returns the {@link CB_GraphicSprites.SPRITE_OBJECT} object which is currently pointed by the pointer (set in the {@link CB_GraphicSprites#pointer} property). Returns null if not found.</p>"}],"name":"getCurrent","longname":"CB_GraphicSprites#getCurrent","memberof":"CB_GraphicSprites","scope":"instance"},{"comment":"/**\r\n * Alias for {@link CB_GraphicSprites#setPrevious}.\r\n * @function CB_GraphicSprites#previous\r\n * @see {@link CB_GraphicSprites#setPrevious}\r\n */","meta":{"filename":"CB_GraphicSprites.js","lineno":1372,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image","code":{}},"description":"<p>Alias for {@link CB_GraphicSprites#setPrevious}.</p>","kind":"function","name":"previous","see":["{@link CB_GraphicSprites#setPrevious}"],"memberof":"CB_GraphicSprites","longname":"CB_GraphicSprites#previous","scope":"instance"},{"comment":"/**\r\n * Makes the pointer to go back to the previous position (if possible) and returns the sprite located there (if any). The position should belong to an index of the {@link CB_GraphicSprites#spritesGroup.sprites} array where a {@link CB_GraphicSprites.SPRITE_OBJECT} object is placed (containing a sprite) and it will be returned if found. Internally, it modifies the {@link CB_GraphicSprites#pointer} property (if possible). If the position was updated, it will update also the {@link CB_GraphicSprites#time} property (setting the current time in milliseconds).\r\n * @function\r\n * @param {boolean} [loop=false] - If set to false and the previous position is lower than zero, it will return null. Otherwise, if set to true and the position is lower than zero, it will modify the position making it cycle (from the beginning to the end). This parameter is ignored when the position has not reached the limit.\r\n * @returns {CB_GraphicSprites.SPRITE_OBJECT|null} Makes it to point to the previous {@link CB_GraphicSprites.SPRITE_OBJECT} object (making it the current one) and returns it. Returns null if it cannot be found.\r\n */","meta":{"range":[115214,115824],"filename":"CB_GraphicSprites.js","lineno":1383,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image","code":{"id":"astnode100043675","name":"CB_GraphicSprites.prototype.setPrevious","type":"AssignmentExpression","value":"CB_GraphicSprites.prototype.previous","paramnames":[]}},"description":"<p>Makes the pointer to go back to the previous position (if possible) and returns the sprite located there (if any). The position should belong to an index of the {@link CB_GraphicSprites#spritesGroup.sprites} array where a {@link CB_GraphicSprites.SPRITE_OBJECT} object is placed (containing a sprite) and it will be returned if found. Internally, it modifies the {@link CB_GraphicSprites#pointer} property (if possible). If the position was updated, it will update also the {@link CB_GraphicSprites#time} property (setting the current time in milliseconds).</p>","kind":"function","params":[{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If set to false and the previous position is lower than zero, it will return null. Otherwise, if set to true and the position is lower than zero, it will modify the position making it cycle (from the beginning to the end). This parameter is ignored when the position has not reached the limit.</p>","name":"loop"}],"returns":[{"type":{"names":["CB_GraphicSprites.SPRITE_OBJECT","null"]},"description":"<p>Makes it to point to the previous {@link CB_GraphicSprites.SPRITE_OBJECT} object (making it the current one) and returns it. Returns null if it cannot be found.</p>"}],"name":"setPrevious","longname":"CB_GraphicSprites#setPrevious","memberof":"CB_GraphicSprites","scope":"instance"},{"comment":"/**\r\n * Alias for {@link CB_GraphicSprites#setNext}.\r\n * @function CB_GraphicSprites#next\r\n * @see {@link CB_GraphicSprites#setNext}\r\n */","meta":{"filename":"CB_GraphicSprites.js","lineno":1397,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image","code":{}},"description":"<p>Alias for {@link CB_GraphicSprites#setNext}.</p>","kind":"function","name":"next","see":["{@link CB_GraphicSprites#setNext}"],"memberof":"CB_GraphicSprites","longname":"CB_GraphicSprites#next","scope":"instance"},{"comment":"/**\r\n * Makes the pointer to advance to the next position (if possible) and returns the sprite located there (if any). The position should belong to an index of the {@link CB_GraphicSprites#spritesGroup.sprites} array where a {@link CB_GraphicSprites.SPRITE_OBJECT} object is placed (containing a sprite) and it will be returned if found. Internally, it modifies the {@link CB_GraphicSprites#pointer} property (if possible). If the position was updated, it will also update the {@link CB_GraphicSprites#time} property (setting the current time in milliseconds).\r\n * @function\r\n * @param {boolean} [loop=false] - If set to false and the next position is greater than the current number of sprites, it will return null. Otherwise, if set to true and the position is greater than the current number of sprites, it will modify the position making it cycle (from the end to the beginning). This parameter is ignored when the position has not reached the limit.\r\n * @returns {CB_GraphicSprites.SPRITE_OBJECT|null} Makes it to point to the next {@link CB_GraphicSprites.SPRITE_OBJECT} object (making it the current one) and returns it. Returns null if it cannot be found.\r\n */","meta":{"range":[117145,117685],"filename":"CB_GraphicSprites.js","lineno":1408,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image","code":{"id":"astnode100043785","name":"CB_GraphicSprites.prototype.setNext","type":"AssignmentExpression","value":"CB_GraphicSprites.prototype.next","paramnames":[]}},"description":"<p>Makes the pointer to advance to the next position (if possible) and returns the sprite located there (if any). The position should belong to an index of the {@link CB_GraphicSprites#spritesGroup.sprites} array where a {@link CB_GraphicSprites.SPRITE_OBJECT} object is placed (containing a sprite) and it will be returned if found. Internally, it modifies the {@link CB_GraphicSprites#pointer} property (if possible). If the position was updated, it will also update the {@link CB_GraphicSprites#time} property (setting the current time in milliseconds).</p>","kind":"function","params":[{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If set to false and the next position is greater than the current number of sprites, it will return null. Otherwise, if set to true and the position is greater than the current number of sprites, it will modify the position making it cycle (from the end to the beginning). This parameter is ignored when the position has not reached the limit.</p>","name":"loop"}],"returns":[{"type":{"names":["CB_GraphicSprites.SPRITE_OBJECT","null"]},"description":"<p>Makes it to point to the next {@link CB_GraphicSprites.SPRITE_OBJECT} object (making it the current one) and returns it. Returns null if it cannot be found.</p>"}],"name":"setNext","longname":"CB_GraphicSprites#setNext","memberof":"CB_GraphicSprites","scope":"instance"},{"comment":"/**\r\n * Gets the z-index (\"zIndex\" property) of the sprites group object (and the {@CB_GraphicSprites} object itself).\r\n * @function\r\n * @param {*} [returnValueOnFail=undefined] - The value we want it to return in the case that no value is found. If not provided, undefined will be returned.\r\n * @returns {number} Returns the z-index (\"zIndex\") of the sprites group object (and the {@CB_GraphicSprites} object itself). If not found, returns the value of the {@link CB_GraphicSprites.ZINDEX_DEFAULT} property of evaluates to true or \"returnValueOnFail\" otherwise.\r\n */","meta":{"range":[118263,118427],"filename":"CB_GraphicSprites.js","lineno":1424,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image","code":{"id":"astnode100043885","name":"CB_GraphicSprites.prototype.getZIndex","type":"FunctionExpression","paramnames":["returnValueOnFail"]}},"description":"<p>Gets the z-index (&quot;zIndex&quot; property) of the sprites group object (and the {@CB_GraphicSprites} object itself).</p>","kind":"function","params":[{"type":{"names":["*"]},"optional":true,"description":"<p>The value we want it to return in the case that no value is found. If not provided, undefined will be returned.</p>","name":"returnValueOnFail"}],"returns":[{"type":{"names":["number"]},"description":"<p>Returns the z-index (&quot;zIndex&quot;) of the sprites group object (and the {@CB_GraphicSprites} object itself). If not found, returns the value of the {@link CB_GraphicSprites.ZINDEX_DEFAULT} property of evaluates to true or &quot;returnValueOnFail&quot; otherwise.</p>"}],"name":"getZIndex","longname":"CB_GraphicSprites#getZIndex","memberof":"CB_GraphicSprites","scope":"instance"},{"comment":"/**\r\n * Sets the desired z-index (\"zIndex\" property) of the sprites group object (and the {@CB_GraphicSprites} object itself). If there is a {@link CB_GraphicSpritesScene} parent object (set in the {@link CB_GraphicSprites.parent} property), it will also call its {@link CB_GraphicSpritesScene#updateGraphicSpritesByZIndex} method internally.\r\n * @function\r\n * @param {number} [zIndex=parseFloat(zIndex)||CB_GraphicSprites.ZINDEX_DEFAULT||1] - The z-index value we want. It must be a number but never zero (0). If no valid number is given, it will use the value of the {@link CB_GraphicSprites.ZINDEX_DEFAULT} property of evaluates to true or 1 otherwise.\r\n * @returns {number} Returns the z-index (\"zIndex\") of the sprites group object (and the {@CB_GraphicSprites} object itself) after setting it (it could have been sanitized).\r\n */","meta":{"range":[119274,119783],"filename":"CB_GraphicSprites.js","lineno":1436,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image","code":{"id":"astnode100043907","name":"CB_GraphicSprites.prototype.setZIndex","type":"FunctionExpression","paramnames":["zIndex"]},"vars":{"this.zIndex":"CB_GraphicSprites#zIndex","this.spritesGroup.zIndex":"CB_GraphicSprites#spritesGroup.zIndex"}},"description":"<p>Sets the desired z-index (&quot;zIndex&quot; property) of the sprites group object (and the {@CB_GraphicSprites} object itself). If there is a {@link CB_GraphicSpritesScene} parent object (set in the {@link CB_GraphicSprites.parent} property), it will also call its {@link CB_GraphicSpritesScene#updateGraphicSpritesByZIndex} method internally.</p>","kind":"function","params":[{"type":{"names":["number"]},"optional":true,"defaultvalue":"parseFloat(zIndex)||CB_GraphicSprites.ZINDEX_DEFAULT||1","description":"<p>The z-index value we want. It must be a number but never zero (0). If no valid number is given, it will use the value of the {@link CB_GraphicSprites.ZINDEX_DEFAULT} property of evaluates to true or 1 otherwise.</p>","name":"zIndex"}],"returns":[{"type":{"names":["number"]},"description":"<p>Returns the z-index (&quot;zIndex&quot;) of the sprites group object (and the {@CB_GraphicSprites} object itself) after setting it (it could have been sanitized).</p>"}],"name":"setZIndex","longname":"CB_GraphicSprites#setZIndex","memberof":"CB_GraphicSprites","scope":"instance"},{"comment":"/**\r\n * Gets the z-index (\"zIndex\" property) of a given sprite object.\r\n * @function\r\n * @param {CB_GraphicSprites.SPRITE_OBJECT} [sprite=CB_GraphicSprites#getCurrent()] - The {@link CB_GraphicSprites.SPRITE_OBJECT} object which contains the sprite. If not provided, it will use the {@link CB_GraphicSprites.SPRITE_OBJECT} object which the pointer (set in the {@link CB_GraphicSprites#pointer} property) is currently pointing to (using the returning value of the {@link CB_GraphicSprites#getCurrent} method internally).\r\n * @param {*} [returnValueOnFail=undefined] - The value we want it to return in the case that no value is found. If not provided, undefined will be returned.\r\n * @returns {number} Returns the z-index (\"zIndex\") of the given sprite. If not found, returns the value of the {@link CB_GraphicSprites.ZINDEX_DEFAULT} property of evaluates to true or \"returnValueOnFail\" otherwise.\r\n */","meta":{"range":[120696,120941],"filename":"CB_GraphicSprites.js","lineno":1455,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image","code":{"id":"astnode100043976","name":"CB_GraphicSprites.prototype.getZIndexSprite","type":"FunctionExpression","paramnames":["sprite","returnValueOnFail"]},"vars":{"sprite":"CB_GraphicSprites#getZIndexSprite~sprite"}},"description":"<p>Gets the z-index (&quot;zIndex&quot; property) of a given sprite object.</p>","kind":"function","params":[{"type":{"names":["CB_GraphicSprites.SPRITE_OBJECT"]},"optional":true,"defaultvalue":"CB_GraphicSprites#getCurrent()","description":"<p>The {@link CB_GraphicSprites.SPRITE_OBJECT} object which contains the sprite. If not provided, it will use the {@link CB_GraphicSprites.SPRITE_OBJECT} object which the pointer (set in the {@link CB_GraphicSprites#pointer} property) is currently pointing to (using the returning value of the {@link CB_GraphicSprites#getCurrent} method internally).</p>","name":"sprite"},{"type":{"names":["*"]},"optional":true,"description":"<p>The value we want it to return in the case that no value is found. If not provided, undefined will be returned.</p>","name":"returnValueOnFail"}],"returns":[{"type":{"names":["number"]},"description":"<p>Returns the z-index (&quot;zIndex&quot;) of the given sprite. If not found, returns the value of the {@link CB_GraphicSprites.ZINDEX_DEFAULT} property of evaluates to true or &quot;returnValueOnFail&quot; otherwise.</p>"}],"name":"getZIndexSprite","longname":"CB_GraphicSprites#getZIndexSprite","memberof":"CB_GraphicSprites","scope":"instance"},{"comment":"/**\r\n * Sets the desired z-index (\"zIndex\") of the given sprite object. Calls the {@link CB_GraphicSprites#updateSpritesByZIndex} method internally.\r\n * @function\r\n * @param {CB_GraphicSprites.SPRITE_OBJECT} [sprite=CB_GraphicSprites#getCurrent()] - The {@link CB_GraphicSprites.SPRITE_OBJECT} object which contains the sprite. If not provided, it will use the {@link CB_GraphicSprites.SPRITE_OBJECT} object which the pointer (set in the {@link CB_GraphicSprites#pointer} property) is currently pointing to (using the returning value of the {@link CB_GraphicSprites#getCurrent} method internally).\r\n * @param {number} [zIndex=parseFloat(zIndex)||CB_GraphicSprites.ZINDEX_DEFAULT||1] - The z-index value we want. It must be a number but never zero (0). If no valid number is given, it will use the value of the {@link CB_GraphicSprites.ZINDEX_DEFAULT} property of evaluates to true or 1 otherwise.\r\n * @returns {number} Returns the z-index (\"zIndex\") of the given sprite after setting it (it could have been sanitized).\r\n */","meta":{"range":[121976,122330],"filename":"CB_GraphicSprites.js","lineno":1469,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image","code":{"id":"astnode100044013","name":"CB_GraphicSprites.prototype.setZIndexSprite","type":"FunctionExpression","paramnames":["sprite","zIndex"]},"vars":{"sprite":"CB_GraphicSprites#setZIndexSprite~sprite","sprite.zIndex":"CB_GraphicSprites#setZIndexSprite~sprite.zIndex"}},"description":"<p>Sets the desired z-index (&quot;zIndex&quot;) of the given sprite object. Calls the {@link CB_GraphicSprites#updateSpritesByZIndex} method internally.</p>","kind":"function","params":[{"type":{"names":["CB_GraphicSprites.SPRITE_OBJECT"]},"optional":true,"defaultvalue":"CB_GraphicSprites#getCurrent()","description":"<p>The {@link CB_GraphicSprites.SPRITE_OBJECT} object which contains the sprite. If not provided, it will use the {@link CB_GraphicSprites.SPRITE_OBJECT} object which the pointer (set in the {@link CB_GraphicSprites#pointer} property) is currently pointing to (using the returning value of the {@link CB_GraphicSprites#getCurrent} method internally).</p>","name":"sprite"},{"type":{"names":["number"]},"optional":true,"defaultvalue":"parseFloat(zIndex)||CB_GraphicSprites.ZINDEX_DEFAULT||1","description":"<p>The z-index value we want. It must be a number but never zero (0). If no valid number is given, it will use the value of the {@link CB_GraphicSprites.ZINDEX_DEFAULT} property of evaluates to true or 1 otherwise.</p>","name":"zIndex"}],"returns":[{"type":{"names":["number"]},"description":"<p>Returns the z-index (&quot;zIndex&quot;) of the given sprite after setting it (it could have been sanitized).</p>"}],"name":"setZIndexSprite","longname":"CB_GraphicSprites#setZIndexSprite","memberof":"CB_GraphicSprites","scope":"instance"},{"comment":"/**\r\n * Gets the z-index (\"zIndex\" property) of a given sub-sprite object.\r\n * @function\r\n * @param {CB_GraphicSprites.SUBSPRITE_OBJECT} subSprite - The {@link CB_GraphicSprites.SUBSPRITE_OBJECT} object which contains the sub-sprite.\r\n * @param {*} [returnValueOnFail=undefined] - The value we want it to return in the case that no value is found. If not provided, undefined will be returned.\r\n * @returns {number} Returns the z-index (\"zIndex\") of the given sub-sprite. If not found, returns the value of the {@link CB_GraphicSprites.ZINDEX_DEFAULT} property of evaluates to true or \"returnValueOnFail\" otherwise.\r\n */","meta":{"range":[122961,123181],"filename":"CB_GraphicSprites.js","lineno":1490,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image","code":{"id":"astnode100044063","name":"CB_GraphicSprites.prototype.getZIndexSubSprite","type":"FunctionExpression","paramnames":["subSprite","returnValueOnFail"]}},"description":"<p>Gets the z-index (&quot;zIndex&quot; property) of a given sub-sprite object.</p>","kind":"function","params":[{"type":{"names":["CB_GraphicSprites.SUBSPRITE_OBJECT"]},"description":"<p>The {@link CB_GraphicSprites.SUBSPRITE_OBJECT} object which contains the sub-sprite.</p>","name":"subSprite"},{"type":{"names":["*"]},"optional":true,"description":"<p>The value we want it to return in the case that no value is found. If not provided, undefined will be returned.</p>","name":"returnValueOnFail"}],"returns":[{"type":{"names":["number"]},"description":"<p>Returns the z-index (&quot;zIndex&quot;) of the given sub-sprite. If not found, returns the value of the {@link CB_GraphicSprites.ZINDEX_DEFAULT} property of evaluates to true or &quot;returnValueOnFail&quot; otherwise.</p>"}],"name":"getZIndexSubSprite","longname":"CB_GraphicSprites#getZIndexSubSprite","memberof":"CB_GraphicSprites","scope":"instance"},{"comment":"/**\r\n * Sets the desired z-index (\"zIndex\") of the given sub-sprite object. Calls the {@link CB_GraphicSprites#updateSubSpritesByZIndex} method internally.\r\n * @function\r\n * @param {CB_GraphicSprites.SUBSPRITE_OBJECT} sprite - The {@link CB_GraphicSprites.SUBSPRITE_OBJECT} object which contains the sub-sprite.\r\n * @param {number} [zIndex=parseFloat(zIndex)||CB_GraphicSprites.ZINDEX_DEFAULT||0] - The z-index value we want. It must be a number but never zero (0). If no valid number is given, it will use the value of the {@link CB_GraphicSprites.ZINDEX_DEFAULT} property of evaluates to true or 1 otherwise.\r\n * @returns {number} Returns the z-index (\"zIndex\") of the given sub-sprite after setting it (it could have been sanitized).\r\n */","meta":{"range":[123934,124290],"filename":"CB_GraphicSprites.js","lineno":1503,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image","code":{"id":"astnode100044091","name":"CB_GraphicSprites.prototype.setZIndexSubSprite","type":"FunctionExpression","paramnames":["subSprite","zIndex"]},"vars":{"subSprite.zIndex":"subSprite.zIndex"}},"description":"<p>Sets the desired z-index (&quot;zIndex&quot;) of the given sub-sprite object. Calls the {@link CB_GraphicSprites#updateSubSpritesByZIndex} method internally.</p>","kind":"function","params":[{"type":{"names":["CB_GraphicSprites.SUBSPRITE_OBJECT"]},"description":"<p>The {@link CB_GraphicSprites.SUBSPRITE_OBJECT} object which contains the sub-sprite.</p>","name":"sprite"},{"type":{"names":["number"]},"optional":true,"defaultvalue":"parseFloat(zIndex)||CB_GraphicSprites.ZINDEX_DEFAULT||0","description":"<p>The z-index value we want. It must be a number but never zero (0). If no valid number is given, it will use the value of the {@link CB_GraphicSprites.ZINDEX_DEFAULT} property of evaluates to true or 1 otherwise.</p>","name":"zIndex"}],"returns":[{"type":{"names":["number"]},"description":"<p>Returns the z-index (&quot;zIndex&quot;) of the given sub-sprite after setting it (it could have been sanitized).</p>"}],"name":"setZIndexSubSprite","longname":"CB_GraphicSprites#setZIndexSubSprite","memberof":"CB_GraphicSprites","scope":"instance"},{"comment":"/**\r\n * Tells whether the sprites group object (and the {@CB_GraphicSprites} object itself) is disabled or not. Internally, it checks the \"{@link CB_GraphicSprites.spritesGroup}.disabled\" property.\r\n * @function\r\n * @returns {boolean} Returns whether the sprites group object (and the {@link CB_GraphicSprites} object itself) is disabled or not.\r\n */","meta":{"range":[124650,124753],"filename":"CB_GraphicSprites.js","lineno":1521,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image","code":{"id":"astnode100044135","name":"CB_GraphicSprites.prototype.isDisabled","type":"FunctionExpression","paramnames":[]}},"description":"<p>Tells whether the sprites group object (and the {@CB_GraphicSprites} object itself) is disabled or not. Internally, it checks the &quot;{@link CB_GraphicSprites.spritesGroup}.disabled&quot; property.</p>","kind":"function","returns":[{"type":{"names":["boolean"]},"description":"<p>Returns whether the sprites group object (and the {@link CB_GraphicSprites} object itself) is disabled or not.</p>"}],"name":"isDisabled","longname":"CB_GraphicSprites#isDisabled","memberof":"CB_GraphicSprites","scope":"instance"},{"comment":"/**\r\n * Sets whether the sprites group object (and the {@CB_GraphicSprites} object itself) is disabled or enabled. Internally, it edits the \"{@link CB_GraphicSprites.spritesGroup}.disabled\" property.\r\n * @function\r\n * @param {boolean} [disabled=false] - Set to true to disable it or false to enable it.\r\n * @param {boolean} [affectChildren=disabled] - If this parameter is set to true, it will also modify the \"disabled\" property of all the sprites and their sub-sprites. By default, it is false if the \"disabled\" parameter is set to false or it is true otherwise.\r\n */","meta":{"range":[125333,125823],"filename":"CB_GraphicSprites.js","lineno":1533,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image","code":{"id":"astnode100044154","name":"CB_GraphicSprites.prototype.setDisabled","type":"FunctionExpression","paramnames":["disabled","affectChildren"]},"vars":{"disabled":"CB_GraphicSprites#setDisabled~disabled","affectChildren":"CB_GraphicSprites#setDisabled~affectChildren","this.spritesGroup":"CB_GraphicSprites#spritesGroup","this.spritesGroup.disabled":"CB_GraphicSprites#spritesGroup.disabled","":null}},"description":"<p>Sets whether the sprites group object (and the {@CB_GraphicSprites} object itself) is disabled or enabled. Internally, it edits the &quot;{@link CB_GraphicSprites.spritesGroup}.disabled&quot; property.</p>","kind":"function","params":[{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>Set to true to disable it or false to enable it.</p>","name":"disabled"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":"disabled","description":"<p>If this parameter is set to true, it will also modify the &quot;disabled&quot; property of all the sprites and their sub-sprites. By default, it is false if the &quot;disabled&quot; parameter is set to false or it is true otherwise.</p>","name":"affectChildren"}],"name":"setDisabled","longname":"CB_GraphicSprites#setDisabled","memberof":"CB_GraphicSprites","scope":"instance"},{"comment":"/**\r\n * Tells whether the given sprite is disabled or not. Internally, it checks its \"disabled\" property and also the \"{@link CB_GraphicSprites.spritesGroup}.disabled\" property (calling the {@link CB_GraphicSprites#isDisabled} method internally). A sprite is considered disabled if its sprites group parent is also disabled.\r\n * @function\r\n * @param {CB_GraphicSprites.SPRITE_OBJECT} [sprite=CB_GraphicSprites#getCurrent()] - The {@link CB_GraphicSprites.SPRITE_OBJECT} object which contains the sprite. If not provided, it will use the {@link CB_GraphicSprites.SPRITE_OBJECT} object which the pointer (set in the {@link CB_GraphicSprites#pointer} property) is currently pointing to (using the returning value of the {@link CB_GraphicSprites#getCurrent} method internally).\r\n * @returns {boolean} Returns whether the sprite is disabled or not. A sprite is considered disabled if its sprites group parent is also disabled.\r\n */","meta":{"range":[126762,126926],"filename":"CB_GraphicSprites.js","lineno":1553,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image","code":{"id":"astnode100044234","name":"CB_GraphicSprites.prototype.isDisabledSprite","type":"FunctionExpression","paramnames":["sprite"]},"vars":{"sprite":"CB_GraphicSprites#isDisabledSprite~sprite"}},"description":"<p>Tells whether the given sprite is disabled or not. Internally, it checks its &quot;disabled&quot; property and also the &quot;{@link CB_GraphicSprites.spritesGroup}.disabled&quot; property (calling the {@link CB_GraphicSprites#isDisabled} method internally). A sprite is considered disabled if its sprites group parent is also disabled.</p>","kind":"function","params":[{"type":{"names":["CB_GraphicSprites.SPRITE_OBJECT"]},"optional":true,"defaultvalue":"CB_GraphicSprites#getCurrent()","description":"<p>The {@link CB_GraphicSprites.SPRITE_OBJECT} object which contains the sprite. If not provided, it will use the {@link CB_GraphicSprites.SPRITE_OBJECT} object which the pointer (set in the {@link CB_GraphicSprites#pointer} property) is currently pointing to (using the returning value of the {@link CB_GraphicSprites#getCurrent} method internally).</p>","name":"sprite"}],"returns":[{"type":{"names":["boolean"]},"description":"<p>Returns whether the sprite is disabled or not. A sprite is considered disabled if its sprites group parent is also disabled.</p>"}],"name":"isDisabledSprite","longname":"CB_GraphicSprites#isDisabledSprite","memberof":"CB_GraphicSprites","scope":"instance"},{"comment":"/**\r\n * Sets a given sprite disabled or enabled. Internally, it edits its \"disabled\" property.\r\n * @function\r\n * @param {CB_GraphicSprites.SPRITE_OBJECT} [sprite=CB_GraphicSprites#getCurrent()] - The {@link CB_GraphicSprites.SPRITE_OBJECT} object which contains the sprite. If not provided, it will use the {@link CB_GraphicSprites.SPRITE_OBJECT} object which the pointer (set in the {@link CB_GraphicSprites#pointer} property) is currently pointing to (using the returning value of the {@link CB_GraphicSprites#getCurrent} method internally).\r\n * @param {boolean} [disabled=false] - Set to true to disable it or false to enable it.\r\n * @param {boolean} [affectSubSprites=disabled] - If this parameter is set to true, it will also modify the \"disabled\" property of all the sub-sprites of the given sprite. This parameter will be ignored if the \"affectParent\" parameter is set to true (as all existing sprites and sub-sprites in the {@link CB_GraphicSprites} object will be affected anyway). By default, it is false if the \"disabled\" parameter is set to false or it is true otherwise.\r\n * @param {boolean} [affectParent=affectParentChildren|!disabled] - If this parameter is set to true, it will also modify the \"disabled\" property of the sprites group object (which is considered the status of the whole {@CB_GraphicSprites} object). By default, it is true if either the \"affectParentChildren\" parameter is set to true or the \"disabled\" parameter is set to false and it is false otherwise.\r\n * @param {boolean} [affectParentChildren=!disabled] - Defines whether to also affect the sprites and sub-sprites of the sprites group object (which is considered the status of the whole {@CB_GraphicSprites} object) or not. If it is set to true and the \"affectParent\" is also set to true, it will also modify the \"disabled\" property of all the existing sprites and sub-sprites in the {@link CB_GraphicSprites} object. This parameter is ignored if the \"affectParent\" parameter is set to false. By default, it is false if the \"disabled\" parameter is set to true or it is false otherwise.\r\n */","meta":{"range":[129021,130087],"filename":"CB_GraphicSprites.js","lineno":1569,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image","code":{"id":"astnode100044266","name":"CB_GraphicSprites.prototype.setDisabledSprite","type":"FunctionExpression","paramnames":["sprite","disabled","affectSubSprites","affectParent","affectParentChildren"]},"vars":{"disabled":"CB_GraphicSprites#setDisabledSprite~disabled","affectParentChildren":"CB_GraphicSprites#setDisabledSprite~affectParentChildren","affectParent":"CB_GraphicSprites#setDisabledSprite~affectParent","sprite":"CB_GraphicSprites#setDisabledSprite~sprite","sprite.disabled":"CB_GraphicSprites#setDisabledSprite~sprite.disabled","affectSubSprites":"CB_GraphicSprites#setDisabledSprite~affectSubSprites","":null}},"description":"<p>Sets a given sprite disabled or enabled. Internally, it edits its &quot;disabled&quot; property.</p>","kind":"function","params":[{"type":{"names":["CB_GraphicSprites.SPRITE_OBJECT"]},"optional":true,"defaultvalue":"CB_GraphicSprites#getCurrent()","description":"<p>The {@link CB_GraphicSprites.SPRITE_OBJECT} object which contains the sprite. If not provided, it will use the {@link CB_GraphicSprites.SPRITE_OBJECT} object which the pointer (set in the {@link CB_GraphicSprites#pointer} property) is currently pointing to (using the returning value of the {@link CB_GraphicSprites#getCurrent} method internally).</p>","name":"sprite"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>Set to true to disable it or false to enable it.</p>","name":"disabled"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":"disabled","description":"<p>If this parameter is set to true, it will also modify the &quot;disabled&quot; property of all the sub-sprites of the given sprite. This parameter will be ignored if the &quot;affectParent&quot; parameter is set to true (as all existing sprites and sub-sprites in the {@link CB_GraphicSprites} object will be affected anyway). By default, it is false if the &quot;disabled&quot; parameter is set to false or it is true otherwise.</p>","name":"affectSubSprites"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":"affectParentChildren|!disabled","description":"<p>If this parameter is set to true, it will also modify the &quot;disabled&quot; property of the sprites group object (which is considered the status of the whole {@CB_GraphicSprites} object). By default, it is true if either the &quot;affectParentChildren&quot; parameter is set to true or the &quot;disabled&quot; parameter is set to false and it is false otherwise.</p>","name":"affectParent"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":"!disabled","description":"<p>Defines whether to also affect the sprites and sub-sprites of the sprites group object (which is considered the status of the whole {@CB_GraphicSprites} object) or not. If it is set to true and the &quot;affectParent&quot; is also set to true, it will also modify the &quot;disabled&quot; property of all the existing sprites and sub-sprites in the {@link CB_GraphicSprites} object. This parameter is ignored if the &quot;affectParent&quot; parameter is set to false. By default, it is false if the &quot;disabled&quot; parameter is set to true or it is false otherwise.</p>","name":"affectParentChildren"}],"name":"setDisabledSprite","longname":"CB_GraphicSprites#setDisabledSprite","memberof":"CB_GraphicSprites","scope":"instance"},{"comment":"/**\r\n * Tells whether the given sub-sprite is disabled or not. Internally, it checks its \"disabled\" property and also whether its sprite parent is disabled (calling the {@link CB_GraphicSprites#isDisabledSprite} method internally, for its sprite parent). A sub-sprite is considered disabled if its sprite parent is disabled (a sprite is considered disabled if its sprites group parent is also disabled).\r\n * @function\r\n * @param {CB_GraphicSprites.SUBSPRITE_OBJECT} subSprite - The {@link CB_GraphicSprites.SUBSPRITE_OBJECT} object which contains the sub-sprite.\r\n * @returns {boolean} Returns whether the sub-sprite is disabled or not. A sub-sprite is considered disabled if its sprite parent is disabled (a sprite is considered disabled if its sprites group parent is also disabled).\r\n */","meta":{"range":[130888,131074],"filename":"CB_GraphicSprites.js","lineno":1602,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image","code":{"id":"astnode100044404","name":"CB_GraphicSprites.prototype.isDisabledSubSprite","type":"FunctionExpression","paramnames":["subSprite"]},"vars":{"subSprite":"CB_GraphicSprites#isDisabledSubSprite~subSprite"}},"description":"<p>Tells whether the given sub-sprite is disabled or not. Internally, it checks its &quot;disabled&quot; property and also whether its sprite parent is disabled (calling the {@link CB_GraphicSprites#isDisabledSprite} method internally, for its sprite parent). A sub-sprite is considered disabled if its sprite parent is disabled (a sprite is considered disabled if its sprites group parent is also disabled).</p>","kind":"function","params":[{"type":{"names":["CB_GraphicSprites.SUBSPRITE_OBJECT"]},"description":"<p>The {@link CB_GraphicSprites.SUBSPRITE_OBJECT} object which contains the sub-sprite.</p>","name":"subSprite"}],"returns":[{"type":{"names":["boolean"]},"description":"<p>Returns whether the sub-sprite is disabled or not. A sub-sprite is considered disabled if its sprite parent is disabled (a sprite is considered disabled if its sprites group parent is also disabled).</p>"}],"name":"isDisabledSubSprite","longname":"CB_GraphicSprites#isDisabledSubSprite","memberof":"CB_GraphicSprites","scope":"instance"},{"comment":"/**\r\n * Sets a given sub-sprite disabled or enabled. Internally, it edits its \"disabled\" property.\r\n * @function\r\n * @param {CB_GraphicSprites.SUBSPRITE_OBJECT} subSprite - The {@link CB_GraphicSprites.SUBSPRITE_OBJECT} object which contains the sub-sprite.\r\n * @param {boolean} [disabled=false] - Set to true to disable it or false to enable it.\r\n * @param {boolean} [affectParents=affectParentsChildren|!disabled] - If this parameter is set to true, it will also modify the \"disabled\" property of the sprite parent and of the sprites group object (which is considered the status of the whole {@CB_GraphicSprites} object). By default, it is true if either the \"affectParentChildren\" parameter is set to true or the \"disabled\" parameter is set to false and it is false otherwise.\r\n * @param {boolean} [affectParentsChildren=!disabled] - Defines whether to also affect the sprites and sub-sprites of the sprite parent and its sprites group object (which is considered the status of the whole {@CB_GraphicSprites} object) or not. If it is set to true and the \"affectParents\" is also set to true, it will also modify the \"disabled\" property of all the existing sprites and sub-sprites in the {@link CB_GraphicSprites} object. This parameter is ignored if the \"affectParents\" parameter is set to false. By default, it is false if the \"disabled\" parameter is set to true or it is false otherwise.\r\n */","meta":{"range":[132483,133111],"filename":"CB_GraphicSprites.js","lineno":1617,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image","code":{"id":"astnode100044436","name":"CB_GraphicSprites.prototype.setDisabledSubSprite","type":"FunctionExpression","paramnames":["subSprite","disabled","affectParents","affectParentsChildren"]},"vars":{"disabled":"CB_GraphicSprites#setDisabledSubSprite~disabled","affectParentsChildren":"CB_GraphicSprites#setDisabledSubSprite~affectParentsChildren","affectParents":"CB_GraphicSprites#setDisabledSubSprite~affectParents","subSprite.disabled":"subSprite.disabled"}},"description":"<p>Sets a given sub-sprite disabled or enabled. Internally, it edits its &quot;disabled&quot; property.</p>","kind":"function","params":[{"type":{"names":["CB_GraphicSprites.SUBSPRITE_OBJECT"]},"description":"<p>The {@link CB_GraphicSprites.SUBSPRITE_OBJECT} object which contains the sub-sprite.</p>","name":"subSprite"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>Set to true to disable it or false to enable it.</p>","name":"disabled"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":"affectParentsChildren|!disabled","description":"<p>If this parameter is set to true, it will also modify the &quot;disabled&quot; property of the sprite parent and of the sprites group object (which is considered the status of the whole {@CB_GraphicSprites} object). By default, it is true if either the &quot;affectParentChildren&quot; parameter is set to true or the &quot;disabled&quot; parameter is set to false and it is false otherwise.</p>","name":"affectParents"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":"!disabled","description":"<p>Defines whether to also affect the sprites and sub-sprites of the sprite parent and its sprites group object (which is considered the status of the whole {@CB_GraphicSprites} object) or not. If it is set to true and the &quot;affectParents&quot; is also set to true, it will also modify the &quot;disabled&quot; property of all the existing sprites and sub-sprites in the {@link CB_GraphicSprites} object. This parameter is ignored if the &quot;affectParents&quot; parameter is set to false. By default, it is false if the &quot;disabled&quot; parameter is set to true or it is false otherwise.</p>","name":"affectParentsChildren"}],"name":"setDisabledSubSprite","longname":"CB_GraphicSprites#setDisabledSubSprite","memberof":"CB_GraphicSprites","scope":"instance"},{"comment":"/**\r\n * Sets (updates) the time in milliseconds when the current sprite or a sub-sprite started being pointed.\r\n * @function\r\n * @param {number} [time=CB_Device.getTiming()] - The time that we want to set, in milliseconds (time elapsed since the [time origin]{@link https://developer.mozilla.org/en-US/docs/Web/API/DOMHighResTimeStamp#The_time_origin} which can be obtained calling the {@link CB_Device.getTiming} function). It must be a positive number (or zero). If not provided, it will use the current time (by calling the {@link CB_Device.getTiming} function internally).\r\n * @param {boolean} [updateTimeCurrentSprite=false] - If set to true, it will also update the \"time\" property of the {@link CB_GraphicSprites.SPRITE_OBJECT} object which is currently pointed by the pointer (set in the {@link CB_GraphicSprites#pointer} property).\r\n * @param {boolean} [updateTimeCurrentSpriteSubSprites=false] - If set to true and the \"updateTimeCurrentSprite\" is set to true, it will also update the \"time\" property of the {@link CB_GraphicSprites.SUBSPRITE_OBJECT} objects that belong to the sprite which is currently pointed by the pointer (set in the {@link CB_GraphicSprites#pointer} property). This parameter is ignored if the \"updateTimeCurrentSprite\" parameter is set to false.\r\n * @returns {number} Returns the time in milliseconds when the current sprite or a sub-sprite started being pointed (time elapsed since the [time origin]{@link https://developer.mozilla.org/en-US/docs/Web/API/DOMHighResTimeStamp#The_time_origin} which can be obtained calling the {@link CB_Device.getTiming} function).\r\n */","meta":{"range":[134728,135244],"filename":"CB_GraphicSprites.js","lineno":1641,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image","code":{"id":"astnode100044515","name":"CB_GraphicSprites.prototype.setTime","type":"FunctionExpression","paramnames":["time","updateTimeCurrentSprite","updateTimeCurrentSpriteSubSprites"]},"vars":{"time":"CB_GraphicSprites#setTime~time","this.time":"CB_GraphicSprites#time","sprite":"CB_GraphicSprites#setTime~sprite","sprite.time":"CB_GraphicSprites#setTime~sprite.time","":null}},"description":"<p>Sets (updates) the time in milliseconds when the current sprite or a sub-sprite started being pointed.</p>","kind":"function","params":[{"type":{"names":["number"]},"optional":true,"defaultvalue":"CB_Device.getTiming()","description":"<p>The time that we want to set, in milliseconds (time elapsed since the [time origin]{@link https://developer.mozilla.org/en-US/docs/Web/API/DOMHighResTimeStamp#The_time_origin} which can be obtained calling the {@link CB_Device.getTiming} function). It must be a positive number (or zero). If not provided, it will use the current time (by calling the {@link CB_Device.getTiming} function internally).</p>","name":"time"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If set to true, it will also update the &quot;time&quot; property of the {@link CB_GraphicSprites.SPRITE_OBJECT} object which is currently pointed by the pointer (set in the {@link CB_GraphicSprites#pointer} property).</p>","name":"updateTimeCurrentSprite"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If set to true and the &quot;updateTimeCurrentSprite&quot; is set to true, it will also update the &quot;time&quot; property of the {@link CB_GraphicSprites.SUBSPRITE_OBJECT} objects that belong to the sprite which is currently pointed by the pointer (set in the {@link CB_GraphicSprites#pointer} property). This parameter is ignored if the &quot;updateTimeCurrentSprite&quot; parameter is set to false.</p>","name":"updateTimeCurrentSpriteSubSprites"}],"returns":[{"type":{"names":["number"]},"description":"<p>Returns the time in milliseconds when the current sprite or a sub-sprite started being pointed (time elapsed since the [time origin]{@link https://developer.mozilla.org/en-US/docs/Web/API/DOMHighResTimeStamp#The_time_origin} which can be obtained calling the {@link CB_Device.getTiming} function).</p>"}],"name":"setTime","longname":"CB_GraphicSprites#setTime","memberof":"CB_GraphicSprites","scope":"instance"},{"comment":"/**\r\n * Gets the time in milliseconds when the current sprite or a sub-sprite started being pointed (time elapsed since the [time origin]{@link https://developer.mozilla.org/en-US/docs/Web/API/DOMHighResTimeStamp#The_time_origin} which was obtained calling the {@link CB_Device.getTiming} function internally).\r\n * @function\r\n * @param {*} [returnValueOnFail=undefined] - The value we want it to return in the case that no value is found. If not provided, undefined will be returned.\r\n * @param {boolean} [parentTimeFallback=false] - If the \"time\" property of \"this\" is not found, it will try to get the \"time\" property of \"this.time\" before returning \"returnValueOnFail\".\r\n * @returns {number} Returns the time in milliseconds when the current sprite or a sub-sprite started being pointed (time elapsed since the [time origin]{@link https://developer.mozilla.org/en-US/docs/Web/API/DOMHighResTimeStamp#The_time_origin} which was obtained calling the {@link CB_Device.getTiming} function internally). If it could not be found, it will return \"returnValueOnFail\".\r\n */","meta":{"range":[136323,136544],"filename":"CB_GraphicSprites.js","lineno":1669,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image","code":{"id":"astnode100044602","name":"CB_GraphicSprites.prototype.getTime","type":"FunctionExpression","paramnames":["returnValueOnFail","parentTimeFallback"]},"vars":{"returnValueOnFail":"CB_GraphicSprites#getTime~returnValueOnFail"}},"description":"<p>Gets the time in milliseconds when the current sprite or a sub-sprite started being pointed (time elapsed since the [time origin]{@link https://developer.mozilla.org/en-US/docs/Web/API/DOMHighResTimeStamp#The_time_origin} which was obtained calling the {@link CB_Device.getTiming} function internally).</p>","kind":"function","params":[{"type":{"names":["*"]},"optional":true,"description":"<p>The value we want it to return in the case that no value is found. If not provided, undefined will be returned.</p>","name":"returnValueOnFail"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If the &quot;time&quot; property of &quot;this&quot; is not found, it will try to get the &quot;time&quot; property of &quot;this.time&quot; before returning &quot;returnValueOnFail&quot;.</p>","name":"parentTimeFallback"}],"returns":[{"type":{"names":["number"]},"description":"<p>Returns the time in milliseconds when the current sprite or a sub-sprite started being pointed (time elapsed since the [time origin]{@link https://developer.mozilla.org/en-US/docs/Web/API/DOMHighResTimeStamp#The_time_origin} which was obtained calling the {@link CB_Device.getTiming} function internally). If it could not be found, it will return &quot;returnValueOnFail&quot;.</p>"}],"name":"getTime","longname":"CB_GraphicSprites#getTime","memberof":"CB_GraphicSprites","scope":"instance"},{"comment":"/**\r\n * Tells how many milliseconds elapsed since the current sprite or a sub-sprite was or will be pointed (checking the {@link CB_GraphicSprites#time} property), comparing with the time given in milliseconds (time elapsed since the [time origin]{@link https://developer.mozilla.org/en-US/docs/Web/API/DOMHighResTimeStamp#The_time_origin} which can be obtained calling the {@link CB_Device.getTiming} function) or with the current one if none is given.\r\n * @function\r\n * @param {number} [timeToCompare=CB_Device.getTiming()] - The time (time elapsed since the [time origin]{@link https://developer.mozilla.org/en-US/docs/Web/API/DOMHighResTimeStamp#The_time_origin} which can obtained calling the {@link CB_Device.getTiming} function) that we want to compare to (normally, it will be a newer time than the one stored in the {@link CB_GraphicSprites#time} property). It must be a positive number (or zero). If not provided, it will use the current time (by calling the {@link CB_Device.getTiming} function internally).\r\n * @param {boolean} [parentTimeFallback=false] - If the \"time\" property of \"this\" is not found, it will try to get the \"time\" property of \"this.time\" before using \"returnValueOnFail\".\r\n * @returns {number} Returns how many milliseconds elapsed since the current sprite or a sub-sprite was or will be pointed, comparing with the time given (in milliseconds) or with the current one if none was given. This is just the given \"timeToCompare\" minus the returning value of calling the {@link CB_GraphicSprites#getTime} method.\r\n */","meta":{"range":[138102,138418],"filename":"CB_GraphicSprites.js","lineno":1683,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image","code":{"id":"astnode100044632","name":"CB_GraphicSprites.prototype.getTimeElapsed","type":"FunctionExpression","paramnames":["timeToCompare","parentTimeFallback"]},"vars":{"timeToCompare":"CB_GraphicSprites#getTimeElapsed~timeToCompare"}},"description":"<p>Tells how many milliseconds elapsed since the current sprite or a sub-sprite was or will be pointed (checking the {@link CB_GraphicSprites#time} property), comparing with the time given in milliseconds (time elapsed since the [time origin]{@link https://developer.mozilla.org/en-US/docs/Web/API/DOMHighResTimeStamp#The_time_origin} which can be obtained calling the {@link CB_Device.getTiming} function) or with the current one if none is given.</p>","kind":"function","params":[{"type":{"names":["number"]},"optional":true,"defaultvalue":"CB_Device.getTiming()","description":"<p>The time (time elapsed since the [time origin]{@link https://developer.mozilla.org/en-US/docs/Web/API/DOMHighResTimeStamp#The_time_origin} which can obtained calling the {@link CB_Device.getTiming} function) that we want to compare to (normally, it will be a newer time than the one stored in the {@link CB_GraphicSprites#time} property). It must be a positive number (or zero). If not provided, it will use the current time (by calling the {@link CB_Device.getTiming} function internally).</p>","name":"timeToCompare"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If the &quot;time&quot; property of &quot;this&quot; is not found, it will try to get the &quot;time&quot; property of &quot;this.time&quot; before using &quot;returnValueOnFail&quot;.</p>","name":"parentTimeFallback"}],"returns":[{"type":{"names":["number"]},"description":"<p>Returns how many milliseconds elapsed since the current sprite or a sub-sprite was or will be pointed, comparing with the time given (in milliseconds) or with the current one if none was given. This is just the given &quot;timeToCompare&quot; minus the returning value of calling the {@link CB_GraphicSprites#getTime} method.</p>"}],"name":"getTimeElapsed","longname":"CB_GraphicSprites#getTimeElapsed","memberof":"CB_GraphicSprites","scope":"instance"},{"comment":"/**\r\n * Sets the desired value of a given property name to the {@link CB_GraphicSprites.SPRITES_OBJECT} object as well to its children elements ({@link CB_GraphicSprites.SPRITE_OBJECT} and {@link CB_GraphicSprites.SUBSPRITE_OBJECT} objects).\r\n * @function\r\n * @param {number} propertyName - The name of the property we want to affect.\r\n * @param {*} [value=undefined] - The value desired for the given property.\r\n * @param {boolean} [onlyCurrent=false] - If set to true, it will only affect the current sprite and its sub-sprites (and also the {@link CB_GraphicSprites.SPRITES_OBJECT} object).\r\n * @returns {integer} Returns the number of elements affected (counting the {@link CB_GraphicSprites.SPRITES_OBJECT} object).\r\n */","meta":{"range":[139156,140015],"filename":"CB_GraphicSprites.js","lineno":1699,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image","code":{"id":"astnode100044675","name":"CB_GraphicSprites.prototype.setPropertyCascade","type":"FunctionExpression","paramnames":["propertyName","value","onlyCurrent"]},"vars":{"this.spritesGroup[undefined]":"CB_GraphicSprites#spritesGroup[undefined]","this[undefined]":"CB_GraphicSprites#[undefined]","affected":"CB_GraphicSprites#setPropertyCascade~affected","currentSprite":"CB_GraphicSprites#setPropertyCascade~currentSprite","currentSprite[undefined]":"CB_GraphicSprites#setPropertyCascade~currentSprite.undefined]","":null}},"description":"<p>Sets the desired value of a given property name to the {@link CB_GraphicSprites.SPRITES_OBJECT} object as well to its children elements ({@link CB_GraphicSprites.SPRITE_OBJECT} and {@link CB_GraphicSprites.SUBSPRITE_OBJECT} objects).</p>","kind":"function","params":[{"type":{"names":["number"]},"description":"<p>The name of the property we want to affect.</p>","name":"propertyName"},{"type":{"names":["*"]},"optional":true,"description":"<p>The value desired for the given property.</p>","name":"value"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If set to true, it will only affect the current sprite and its sub-sprites (and also the {@link CB_GraphicSprites.SPRITES_OBJECT} object).</p>","name":"onlyCurrent"}],"returns":[{"type":{"names":["integer"]},"description":"<p>Returns the number of elements affected (counting the {@link CB_GraphicSprites.SPRITES_OBJECT} object).</p>"}],"name":"setPropertyCascade","longname":"CB_GraphicSprites#setPropertyCascade","memberof":"CB_GraphicSprites","scope":"instance"},{"comment":"/**\r\n * Gets a new copy of this object with the same attributes (all sub-objects will be a copy, they will not the same reference).\r\n * @function\r\n * @param {boolean} [avoidCopyingPointer=false] - If set to true, it will not copy the {@link CB_GraphicSprites#pointer} property of the object.\r\n * @param {boolean} [avoidCopyingTimes=false] - If set to true, it will not copy neither the {@link CB_GraphicSprites#time} property property of the object nor the \"time\" property of each of its sprites ({@link CB_GraphicSprites.SPRITE_OBJECT} objects).\r\n * @param {boolean} [clearReferences=false] - If set to true, it will not copy neither the \"container\" nor the \"parent\" nor the \"data.that\" nor the \"data.getThis\" properties of any element. Useful to be able to stringify the object preventing the \"TypeError: cyclic object value\" error. When set to true, calls the {@link CB_GraphicSprites.clearReferences} function internally. If set to true and the \"filterProperties\" parameter is also set to true, the {@link CB_GraphicSprites.filterProperties} will always be called before calling the {@link CB_GraphicSprites.clearReferences} function.\r\n * @param {boolean} [filterProperties=false] - If set to true, it will call the {@link CB_GraphicSprites.filterProperties} function internally to filter the properties that we do not want to keep (using the given \"propertiesToKeepObject\" as the parameter to call it). When set to true, calls the {@link CB_GraphicSprites.filterProperties} function internally. If set to true and the \"clearReferences\" parameter is also set to true, the {@link CB_GraphicSprites.filterProperties} will always be called before calling the {@link CB_GraphicSprites.clearReferences} function.\r\n * @param {CB_GraphicSprites.filterProperties_propertiesToKeepObject_TYPE} [propertiesToKeepObject=CB_GraphicSprites.filterProperties_DEFAULT_PROPERTIES] - The object with the properties that we want to keep. Only used when the \"filterProperties\" parameter is set to true, as the \"propertiesToKeepObject\" when calling the {@link CB_GraphicSprites.filterProperties} function internally.\r\n * @returns {CB_GraphicSprites} Returns a copy of this object with the same attributes (all sub-objects will be a copy, not the same reference).\r\n */","meta":{"range":[142279,144227],"filename":"CB_GraphicSprites.js","lineno":1755,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image","code":{"id":"astnode100044802","name":"CB_GraphicSprites.prototype.getCopy","type":"FunctionExpression","paramnames":["avoidCopyingPointer","avoidCopyingTimes","clearReferences","filterProperties","propertiesToKeepObject"]},"vars":{"spritesGroupCopy":"CB_GraphicSprites#getCopy~spritesGroupCopy","newCopy":"CB_GraphicSprites#getCopy~newCopy","newCopy.pointer":"CB_GraphicSprites#getCopy~newCopy.pointer","newCopy.pointerPrevious":"CB_GraphicSprites#getCopy~newCopy.pointerPrevious","newCopy.time":"CB_GraphicSprites#getCopy~newCopy.time","":null,"newCopy.parent":"CB_GraphicSprites#getCopy~newCopy.parent","newCopy.position":"CB_GraphicSprites#getCopy~newCopy.position","newCopy.positionByZIndex":"CB_GraphicSprites#getCopy~newCopy.positionByZIndex"}},"description":"<p>Gets a new copy of this object with the same attributes (all sub-objects will be a copy, they will not the same reference).</p>","kind":"function","params":[{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If set to true, it will not copy the {@link CB_GraphicSprites#pointer} property of the object.</p>","name":"avoidCopyingPointer"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If set to true, it will not copy neither the {@link CB_GraphicSprites#time} property property of the object nor the &quot;time&quot; property of each of its sprites ({@link CB_GraphicSprites.SPRITE_OBJECT} objects).</p>","name":"avoidCopyingTimes"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If set to true, it will not copy neither the &quot;container&quot; nor the &quot;parent&quot; nor the &quot;data.that&quot; nor the &quot;data.getThis&quot; properties of any element. Useful to be able to stringify the object preventing the &quot;TypeError: cyclic object value&quot; error. When set to true, calls the {@link CB_GraphicSprites.clearReferences} function internally. If set to true and the &quot;filterProperties&quot; parameter is also set to true, the {@link CB_GraphicSprites.filterProperties} will always be called before calling the {@link CB_GraphicSprites.clearReferences} function.</p>","name":"clearReferences"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If set to true, it will call the {@link CB_GraphicSprites.filterProperties} function internally to filter the properties that we do not want to keep (using the given &quot;propertiesToKeepObject&quot; as the parameter to call it). When set to true, calls the {@link CB_GraphicSprites.filterProperties} function internally. If set to true and the &quot;clearReferences&quot; parameter is also set to true, the {@link CB_GraphicSprites.filterProperties} will always be called before calling the {@link CB_GraphicSprites.clearReferences} function.</p>","name":"filterProperties"},{"type":{"names":["CB_GraphicSprites.filterProperties_propertiesToKeepObject_TYPE"]},"optional":true,"defaultvalue":"CB_GraphicSprites.filterProperties_DEFAULT_PROPERTIES","description":"<p>The object with the properties that we want to keep. Only used when the &quot;filterProperties&quot; parameter is set to true, as the &quot;propertiesToKeepObject&quot; when calling the {@link CB_GraphicSprites.filterProperties} function internally.</p>","name":"propertiesToKeepObject"}],"returns":[{"type":{"names":["CB_GraphicSprites"]},"description":"<p>Returns a copy of this object with the same attributes (all sub-objects will be a copy, not the same reference).</p>"}],"name":"getCopy","longname":"CB_GraphicSprites#getCopy","memberof":"CB_GraphicSprites","scope":"instance"},{"comment":"/**\r\n * Clears the \"container\", the \"parent\" and the \"data.that\" properties (sets to null) of the given object and its sub-objects (works recursively, internally).\r\n * @function\r\n * @param {*} element - The object whose properties we want to clear. It can be different kinds ({@link CB_GraphicSpritesScene}, {@link CB_GraphicSpritesScene.SPRITES_GROUPS_OBJECT}, {@link CB_GraphicSprites}, {@link CB_GraphicSprites.SPRITES_OBJECT}, {@link CB_GraphicSprites.SPRITE_OBJECT}, {@link CB_GraphicSprites.SUBSPRITE_OBJECT}, etc.).\r\n * @returns {*} Returns the same object with the the \"container\", the \"parent\", \"data.that\" and the \"data.getThis\" properties cleared (set to null), if possible.\r\n */","meta":{"range":[146608,147205],"filename":"CB_GraphicSprites.js","lineno":1839,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image","code":{"id":"astnode100045182","name":"CB_GraphicSprites.clearReferences","type":"FunctionExpression","paramnames":["element"]},"vars":{"":null,"element.container":"element.container","element.data.that":"element.data.that","element.data.getThis":"element.data.getThis"}},"description":"<p>Clears the &quot;container&quot;, the &quot;parent&quot; and the &quot;data.that&quot; properties (sets to null) of the given object and its sub-objects (works recursively, internally).</p>","kind":"function","params":[{"type":{"names":["*"]},"description":"<p>The object whose properties we want to clear. It can be different kinds ({@link CB_GraphicSpritesScene}, {@link CB_GraphicSpritesScene.SPRITES_GROUPS_OBJECT}, {@link CB_GraphicSprites}, {@link CB_GraphicSprites.SPRITES_OBJECT}, {@link CB_GraphicSprites.SPRITE_OBJECT}, {@link CB_GraphicSprites.SUBSPRITE_OBJECT}, etc.).</p>","name":"element"}],"returns":[{"type":{"names":["*"]},"description":"<p>Returns the same object with the the &quot;container&quot;, the &quot;parent&quot;, &quot;data.that&quot; and the &quot;data.getThis&quot; properties cleared (set to null), if possible.</p>"}],"name":"clearReferences","longname":"CB_GraphicSprites.clearReferences","memberof":"CB_GraphicSprites","scope":"static"},{"comment":"/**\r\n * Object used to know what properties keep when calling the {@link CB_GraphicSprites.filterProperties} function (type used for its \"propertiesToKeepObject\" parameter). Its properties must have the name that matches the value returned by the \"type\" property of each element, being their value an array of strings with the name of the properties we want to keep. The property names which start with a \"_\" symbol will not considered inherited from the element's parent and will always be copied. The other properties (which do not start with the \"_\" symbol) will only be copied when the element contains a value which is different from the same property of its parent.\r\n * @memberof CB_GraphicSprites\r\n * @typedef {Object} CB_GraphicSprites.filterProperties_propertiesToKeepObject_TYPE\r\n * @property {array} [spritesScene] Array of strings with the name of the properties to keep for the {@link CB_GraphicSpritesScene} objects. If no provided, no properties will be kept for this kind of element.\r\n * @property {array} [spritesGroups] Array of strings with the name of the properties to keep for the {@link CB_GraphicSpritesScene.SPRITES_GROUPS_OBJECT} objects. If no provided, no properties will be kept for this kind of element.\r\n * @property {array} [sprites] Array of strings with the name of the properties to keep for the {@link CB_GraphicSprites} objects. If no provided, no properties will be kept for this kind of element.\r\n * @property {array} [spritesGroup] Array of strings with the name of the properties to keep for the {@link CB_GraphicSprites.SPRITES_OBJECT} objects. If no provided, no properties will be kept for this kind of element.\r\n * @property {array} [sprite] Array of strings with the name of the properties to keep for the {@link CB_GraphicSprites.SPRITE_OBJECT} objects. If no provided, no properties will be kept for this kind of element.\r\n * @property {array} [subSprite] Array of strings with the name of the properties to keep for the {@link CB_GraphicSprites.SUBSPRITE_OBJECT} objects. If no provided, no properties will be kept for this kind of element.\r\n */","meta":{"filename":"CB_GraphicSprites.js","lineno":1864,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image","code":{}},"description":"<p>Object used to know what properties keep when calling the {@link CB_GraphicSprites.filterProperties} function (type used for its &quot;propertiesToKeepObject&quot; parameter). Its properties must have the name that matches the value returned by the &quot;type&quot; property of each element, being their value an array of strings with the name of the properties we want to keep. The property names which start with a &quot;<em>&quot; symbol will not considered inherited from the element's parent and will always be copied. The other properties (which do not start with the &quot;</em>&quot; symbol) will only be copied when the element contains a value which is different from the same property of its parent.</p>","memberof":"CB_GraphicSprites","kind":"typedef","name":"filterProperties_propertiesToKeepObject_TYPE","type":{"names":["Object"]},"properties":[{"type":{"names":["array"]},"optional":true,"description":"<p>Array of strings with the name of the properties to keep for the {@link CB_GraphicSpritesScene} objects. If no provided, no properties will be kept for this kind of element.</p>","name":"spritesScene"},{"type":{"names":["array"]},"optional":true,"description":"<p>Array of strings with the name of the properties to keep for the {@link CB_GraphicSpritesScene.SPRITES_GROUPS_OBJECT} objects. If no provided, no properties will be kept for this kind of element.</p>","name":"spritesGroups"},{"type":{"names":["array"]},"optional":true,"description":"<p>Array of strings with the name of the properties to keep for the {@link CB_GraphicSprites} objects. If no provided, no properties will be kept for this kind of element.</p>","name":"sprites"},{"type":{"names":["array"]},"optional":true,"description":"<p>Array of strings with the name of the properties to keep for the {@link CB_GraphicSprites.SPRITES_OBJECT} objects. If no provided, no properties will be kept for this kind of element.</p>","name":"spritesGroup"},{"type":{"names":["array"]},"optional":true,"description":"<p>Array of strings with the name of the properties to keep for the {@link CB_GraphicSprites.SPRITE_OBJECT} objects. If no provided, no properties will be kept for this kind of element.</p>","name":"sprite"},{"type":{"names":["array"]},"optional":true,"description":"<p>Array of strings with the name of the properties to keep for the {@link CB_GraphicSprites.SUBSPRITE_OBJECT} objects. If no provided, no properties will be kept for this kind of element.</p>","name":"subSprite"}],"longname":"CB_GraphicSprites.filterProperties_propertiesToKeepObject_TYPE","scope":"static"},{"comment":"/**\r\n * Object used as the default value for the \"propertiesToKeepObject\" parameter if not provided when calling the {@link CB_GraphicSprites.filterProperties} function.\r\n *\t@constant\r\n * @type {CB_GraphicSprites.filterProperties_propertiesToKeepObject_TYPE}\r\n * @default\r\n */","meta":{"range":[149599,150902],"filename":"CB_GraphicSprites.js","lineno":1882,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image","code":{"id":"astnode100045286","name":"CB_GraphicSprites.filterProperties_DEFAULT_PROPERTIES","type":"ObjectExpression","value":"{\"spritesScene\":\"\",\"spritesGroups\":\"\",\"sprites\":\"\",\"spritesGroup\":\"\",\"sprite\":\"\",\"subSprite\":\"\"}","paramnames":[]}},"description":"<p>Object used as the default value for the &quot;propertiesToKeepObject&quot; parameter if not provided when calling the {@link CB_GraphicSprites.filterProperties} function.</p>","kind":"constant","type":{"names":["CB_GraphicSprites.filterProperties_propertiesToKeepObject_TYPE"]},"defaultvalue":"{\"spritesScene\":\"\",\"spritesGroups\":\"\",\"sprites\":\"\",\"spritesGroup\":\"\",\"sprite\":\"\",\"subSprite\":\"\"}","defaultvaluetype":"object","name":"filterProperties_DEFAULT_PROPERTIES","longname":"CB_GraphicSprites.filterProperties_DEFAULT_PROPERTIES","memberof":"CB_GraphicSprites","scope":"static"},{"comment":"/**\r\n * Gets a new object with the properties filtered of a given element and its sub-elements, keeping only the ones that are in the given \"propertiesToKeepObject\" (works recursively, internally).\r\n * @function\r\n * @param {*} element - The object whose properties we want to clear. It can be different kinds ({@link CB_GraphicSpritesScene}, {@link CB_GraphicSpritesScene.SPRITES_GROUPS_OBJECT}, {@link CB_GraphicSprites}, {@link CB_GraphicSprites.SPRITES_OBJECT}, {@link CB_GraphicSprites.SPRITE_OBJECT}, {@link CB_GraphicSprites.SUBSPRITE_OBJECT}, etc.).\r\n * @param {CB_GraphicSprites.filterProperties_propertiesToKeepObject_TYPE} [propertiesToKeepObject=CB_GraphicSprites.filterProperties_DEFAULT_PROPERTIES] - The object with the properties that we want to keep.\r\n * @returns {*} Returns a new object with the properties filtered of a given element and its sub-elements, keeping only the ones that are in the given \"propertiesToKeepObject\". If no valid \"element\" is provided, returns null.\r\n * @todo Implement a boolean property and when it is true it will not keep the properties whose values are the default ones (for example, if \"byReference\" property is false it will not be kept as it is its default value). So the output can be reduced this way.\r\n */","meta":{"range":[152458,156342],"filename":"CB_GraphicSprites.js","lineno":1909,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image","code":{"id":"astnode100045412","name":"CB_GraphicSprites.filterProperties","type":"FunctionExpression","paramnames":["element","propertiesToKeepObject"]},"vars":{"propertiesToKeepObject":"CB_GraphicSprites.filterProperties~propertiesToKeepObject","element.isSpritesGroup":"element.isSpritesGroup","element.isSprites":"element.isSprites","element.isSprite":"element.isSprite","element.isSubSprite":"element.isSubSprite","newObject":"CB_GraphicSprites.filterProperties~newObject","propertyName":"CB_GraphicSprites.filterProperties~propertyName","element.spritesGroups.type":"element.spritesGroups.type","element._avoidParent":"element._avoidParent","newObject.spritesGroups":"CB_GraphicSprites.filterProperties~newObject.spritesGroups","type":"CB_GraphicSprites.filterProperties~type","currentElement":"CB_GraphicSprites.filterProperties~currentElement","newObject[undefined]":"CB_GraphicSprites.filterProperties~newObject.undefined]","x":"CB_GraphicSprites.filterProperties~x","element[undefined][undefined].type":"element[undefined][undefined].type","element[undefined][undefined]._avoidParent":"element[undefined][undefined]._avoidParent","newObject[undefined][undefined]":"CB_GraphicSprites.filterProperties~newObject.undefined][undefined]","element.spritesGroup.type":"element.spritesGroup.type","newObject.spritesGroup":"CB_GraphicSprites.filterProperties~newObject.spritesGroup","newObject.data":"CB_GraphicSprites.filterProperties~newObject.data","dataPropertyName":"CB_GraphicSprites.filterProperties~dataPropertyName","newObject.data[undefined]":"CB_GraphicSprites.filterProperties~newObject.data[undefined]","":null}},"description":"<p>Gets a new object with the properties filtered of a given element and its sub-elements, keeping only the ones that are in the given &quot;propertiesToKeepObject&quot; (works recursively, internally).</p>","kind":"function","params":[{"type":{"names":["*"]},"description":"<p>The object whose properties we want to clear. It can be different kinds ({@link CB_GraphicSpritesScene}, {@link CB_GraphicSpritesScene.SPRITES_GROUPS_OBJECT}, {@link CB_GraphicSprites}, {@link CB_GraphicSprites.SPRITES_OBJECT}, {@link CB_GraphicSprites.SPRITE_OBJECT}, {@link CB_GraphicSprites.SUBSPRITE_OBJECT}, etc.).</p>","name":"element"},{"type":{"names":["CB_GraphicSprites.filterProperties_propertiesToKeepObject_TYPE"]},"optional":true,"defaultvalue":"CB_GraphicSprites.filterProperties_DEFAULT_PROPERTIES","description":"<p>The object with the properties that we want to keep.</p>","name":"propertiesToKeepObject"}],"returns":[{"type":{"names":["*"]},"description":"<p>Returns a new object with the properties filtered of a given element and its sub-elements, keeping only the ones that are in the given &quot;propertiesToKeepObject&quot;. If no valid &quot;element&quot; is provided, returns null.</p>"}],"todo":["Implement a boolean property and when it is true it will not keep the properties whose values are the default ones (for example, if \"byReference\" property is false it will not be kept as it is its default value). So the output can be reduced this way."],"name":"filterProperties","longname":"CB_GraphicSprites.filterProperties","memberof":"CB_GraphicSprites","scope":"static"},{"comment":"/**\r\n * @file Groups of graphic sprites management (2D or 3D). Internally, it manages {@link CB_GraphicSprites} objects. Contains the {@link CB_GraphicSpritesScene} class.\r\n * @author Joan Alba Maldonado <workindalian@gmail.com>\r\n */","meta":{"filename":"CB_GraphicSpritesScene.js","lineno":1,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image","code":{}},"name":"CrossBase/audiovisual/image/CB_GraphicSpritesScene.js","kind":"file","description":"<p>Groups of graphic sprites management (2D or 3D). Internally, it manages {@link CB_GraphicSprites} objects. Contains the {@link CB_GraphicSpritesScene} class.</p>","preserveName":true,"author":["Joan Alba Maldonado <workindalian@gmail.com>"],"longname":"CrossBase/audiovisual/image/CB_GraphicSpritesScene.js","scope":"global"},{"comment":"/**\r\n * An object with the information that belongs to a group of graphic sprites.\r\n * @example\r\n {\r\n\t//'my_sprites_scene_1':\r\n\tid: \"my_sprites_scene_1\",\r\n\tsrcType: CB_GraphicSprites.SRC_TYPES.IMAGE,\r\n\tsrcLeft: 10,\r\n\tsrcTop: 20,\r\n\tsrcWidth: 64,\r\n\tsrcHeight: 32,\r\n\tleft: 10,\r\n\ttop: 20,\r\n\twidth: 64,\r\n\theight: 32,\r\n\tdata: { datum_1: \"value_1\", datum_2: 2, datum_3: [ \"a\", \"b\", \"c\" ] },\r\n\t//Sprites groups:\r\n\tspritesGroups:\r\n\t[\r\n\t\t//'my_sprites_1':\r\n\t\t{\r\n\t\t\tid: \"my_sprites_1\",\r\n\t\t\tsrc: \"path/to/image.gif\",\r\n\t\t\tsprites:\r\n\t\t\t[\r\n\t\t\t\t//'my_sprite_1':\r\n\t\t\t\t{\r\n\t\t\t\t\tid: \"my_sprite_1\",\r\n\t\t\t\t\tsubSprites:\r\n\t\t\t\t\t[\r\n\t\t\t\t\t\t//'my_subsprite_1':\r\n\t\t\t\t\t\t{ id: \"my_subsprite_1\", srcLeft: 10, srcTop: 20, zIndex: 1 },\r\n\t\t\t\t\t\t//'my_subsprite_2':\r\n\t\t\t\t\t\t{ id: \"my_subsprite_2\", srcLeft: 20, srcTop: 40, zIndex: 2 }\r\n\t\t\t\t\t]\r\n\t\t\t\t},\r\n\t\t\t\t//'my_sprite_2':\r\n\t\t\t\t{\r\n\t\t\t\t\tid: \"my_sprite_2\",\r\n\t\t\t\t\tsubSprites:\r\n\t\t\t\t\t[\r\n\t\t\t\t\t\t//'my_subsprite_3':\r\n\t\t\t\t\t\t{ id: \"my_subsprite_3\", srcLeft: 30, srcTop: 60, zIndex: 1 },\r\n\t\t\t\t\t\t//'my_subsprite_4':\r\n\t\t\t\t\t\t{ id: \"my_subsprite_4\", srcLeft: 40, srcTop: 80, zIndex: 2 }\r\n\t\t\t\t\t]\r\n\t\t\t\t}\r\n\t\t\t]\r\n\t\t },\r\n\t\t//'my_sprites_2':\r\n\t\t{\r\n\t\t\tid: \"my_sprites_2\",\r\n\t\t\tsrc: \"path/to/image2.gif\",\r\n\t\t\tsprites:\r\n\t\t\t[\r\n\t\t\t\t//'my_sprite_3':\r\n\t\t\t\t{\r\n\t\t\t\t\tid: \"my_sprite_3\",\r\n\t\t\t\t\tsubSprites:\r\n\t\t\t\t\t[\r\n\t\t\t\t\t\t//'my_subsprite_1':\r\n\t\t\t\t\t\t{ id: \"my_subsprite_5\", srcLeft: 10, srcTop: 20, zIndex: 1 },\r\n\t\t\t\t\t\t//'my_subsprite_2':\r\n\t\t\t\t\t\t{ id: \"my_subsprite_6\", srcLeft: 20, srcTop: 40, zIndex: 2 }\r\n\t\t\t\t\t]\r\n\t\t\t\t},\r\n\t\t\t\t//'my_sprite_4':\r\n\t\t\t\t{\r\n\t\t\t\t\tid: \"my_sprite_4\",\r\n\t\t\t\t\tsubSprites:\r\n\t\t\t\t\t[\r\n\t\t\t\t\t\t//'my_subsprite_3':\r\n\t\t\t\t\t\t{ id: \"my_subsprite_7\", srcLeft: 30, srcTop: 60, zIndex: 1 },\r\n\t\t\t\t\t\t//'my_subsprite_4':\r\n\t\t\t\t\t\t{ id: \"my_subsprite_8\", srcLeft: 40, srcTop: 80, zIndex: 2 }\r\n\t\t\t\t\t]\r\n\t\t\t\t}\r\n\t\t\t]\r\n\t\t}\r\n\t]\r\n }\r\n * @memberof CB_GraphicSpritesScene\r\n * @typedef {Object} CB_GraphicSpritesScene.SPRITES_GROUPS_OBJECT\r\n * @property {string|*} [id='CB_GraphicSpritesScene_' + CB_GraphicSpritesScene._idUnique++] - Identifier of the sprites groups object and also for the graphic sprites scene (also used as the {@link CB_GraphicSprites.id} property for the {@link CB_GraphicSpritesScene} object). It should be unique. Recommended. It must be a value which evaluates to true. By default, it is generated automatically (with an internal counter).\r\n * @property {*} [src=\"\"] - The value for the \"src\" property which will be used as default if not provided (or the provided one was wrong) in the given {@link CB_GraphicSprites.SPRITES_OBJECT} objects (in the \"spritesGroups\" property), when creating the internal {@link CB_GraphicSprites} objects.\r\n * @property {string} [srcType={@link CB_GraphicSprites.SRC_TYPES.DEFAULT}] - The value for the \"srcType\" property which will be used as default if not provided (or the provided one was wrong) in the given {@link CB_GraphicSprites.SPRITES_OBJECT} objects (in the \"spritesGroups\" property), when creating the internal {@link CB_GraphicSprites} objects. It should point to a property of the {@link CB_GraphicSprites.SRC_TYPES} object. You can use other values of the {@link CB_GraphicSprites.SRC_TYPES} object or create new ones.\r\n * @property {number} [srcLeft={@link CB_GraphicSprites.LEFT_SOURCE_DEFAULT}] - The value for the \"srcLeft\" property which will be used as default if not provided (or the provided one was wrong) in the given {@link CB_GraphicSprites.SPRITES_OBJECT} objects (in the \"spritesGroups\" property), when creating the internal {@link CB_GraphicSprites} objects.\r\n * @property {number} [srcTop={@link CB_GraphicSprites.TOP_SOURCE_DEFAULT}] - The value for the \"srcTop\" property which will be used as default if not provided (or the provided one was wrong) in the given {@link CB_GraphicSprites.SPRITES_OBJECT} objects (in the \"spritesGroups\" property), when creating the internal {@link CB_GraphicSprites} objects.\r\n * @property {number} [srcWidth={@link CB_GraphicSprites.WIDTH_SOURCE_DEFAULT}] - The value for the \"srcWidth\" property which will be used as default if not provided (or the provided one was wrong) in the given {@link CB_GraphicSprites.SPRITES_OBJECT} objects (in the \"spritesGroups\" property), when creating the internal {@link CB_GraphicSprites} objects.\r\n * @property {number} [srcHeight={@link CB_GraphicSprites.HEIGHT_SOURCE_DEFAULT}] - The value for the \"srcHeight\" property which will be used as default if not provided (or the provided one was wrong) in the given {@link CB_GraphicSprites.SPRITES_OBJECT} objects (in the \"spritesGroups\" property), when creating the internal {@link CB_GraphicSprites} objects.\r\n * @property {number} [left={@link CB_GraphicSprites.LEFT_DEFAULT}] - The value for the \"left\" property which will be used as default if not provided (or the provided one was wrong) in the given {@link CB_GraphicSprites.SPRITES_OBJECT} objects (in the \"spritesGroups\" property), when creating the internal {@link CB_GraphicSprites} objects.\r\n * @property {number} [top={@link CB_GraphicSprites.TOP_DEFAULT}] - The value for the \"top\" property which will be used as default if not provided (or the provided one was wrong) in the given {@link CB_GraphicSprites.SPRITES_OBJECT} objects (in the \"spritesGroups\" property), when creating the internal {@link CB_GraphicSprites} objects.\r\n * @property {number} [width={@link CB_GraphicSprites.WIDTH_DEFAULT}] - The value for the \"width\" property which will be used as default if not provided (or the provided one was wrong) in the given {@link CB_GraphicSprites.SPRITES_OBJECT} objects (in the \"spritesGroups\" property), when creating the internal {@link CB_GraphicSprites} objects.\r\n * @property {number} [height={@link CB_GraphicSprites.HEIGHT_DEFAULT}] - The value for the \"height\" property which will be used as default if not provided (or the provided one was wrong) in the given {@link CB_GraphicSprites.SPRITES_OBJECT} objects (in the \"spritesGroups\" property), when creating the internal {@link CB_GraphicSprites} objects.\r\n * @property {number} [zIndex={@link CB_GraphicSprites.ZINDEX_DEFAULT}] - The value for the \"zIndex\" property which will be used as default if not provided (or the provided one was wrong) in the given {@link CB_GraphicSprites.SPRITES_OBJECT} objects (in the \"spritesGroups\" property), when creating the internal {@link CB_GraphicSprites} objects.\r\n * @property {boolean} [disabled=false] - The value for the \"disabled\" property which will be used as default if not provided (or the provided one was wrong) in the given {@link CB_GraphicSprites.SPRITES_OBJECT} objects (in the \"spritesGroups\" property), when creating the internal {@link CB_GraphicSprites} objects.\r\n * @property {object} [data={ 'that' : CB_GraphicSprites.SPRITES_GROUPS_OBJECT, 'getThis' = function() { return this.that; } }] - Object with any additional data desired which can be any kind. It will always have a \"that\" property pointing to the {@link CB_GraphicSprites.SPRITES_GROUPS_OBJECT} object where it belongs to and a function in its \"getThis\" property returning the same value (added automatically). These properties (\"that\" and \"getThis\") cannot be overridden. The value given will also be used for the \"data\" property which will be used as default if not provided (or the provided one was wrong) in the given {@link CB_GraphicSprites.SPRITES_OBJECT} objects (in the \"spritesGroups\" property), when creating the internal {@link CB_GraphicSprites} objects.\r\n * @property {array} [spritesGroups=[]] - Numeric array containing {@link CB_GraphicSprites.SPRITES_OBJECT} objects with all the sprites groups that are useful for creating the internal {@link CB_GraphicSprites} objects. Recommended at least to provide one {@link CB_GraphicSprites.SPRITES_OBJECT} object in the first index.\r\n * @property {*} [parent=undefined] - Property pointing to or containing its parent (also used as the {@link CB_GraphicSpritesScene.parent} property for the {@link CB_GraphicSpritesScene} object).\r\n * @property {array} items - Read-only numeric array containing {@link CB_GraphicSprites} objects created internally. Their \"parent\" property will be set to point the current {@link CB_GraphicSpritesScene} object which contains them.\r\n * @property {array} itemsByZIndex - Read-only property containing a numeric array of all the {@link CB_GraphicSprites} objects ordered by their z-index (\"zIndex\" property). It is updated automatically when the z-index of a sprite is set with its {@link CB_GraphicSprites#setZIndex} method or when inserting/removing {@link CB_GraphicSprites} objects through the {@link CB_GraphicSpritesScene#insertSpritesGroups}, {@link CB_GraphicSpritesScene#insertSpritesGroup}, {@link CB_GraphicSpritesScene#removeSpritesGroup} or {@link CB_GraphicSpritesScene#removeSpritesGroupById} methods.\r\n * @property {boolean} [byReference_DEFAULT=false] - Default value to use as the \"byReference\" parameter for the constructor and for the {@link CB_GraphicSpritesScene#insertSpritesGroups} method. If a boolean value is not provided, it will be parsed to boolean (resulting undefined to be false).\r\n * @property {CB_GraphicSpritesScene} container - Read-only property pointing to the {@link CB_GraphicSpritesScene} object which contains it.\r\n * @property {boolean} isSpritesGroups - Read-only property which is always set to true to help identify this type of object.\r\n * @property {'spritesGroups'} type - Read-only property indicating the type of object (always \"spritesGroups\"). \r\n */","meta":{"filename":"CB_GraphicSpritesScene.js","lineno":7,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image","code":{}},"description":"<p>An object with the information that belongs to a group of graphic sprites.</p>","examples":["{\r\n\t//'my_sprites_scene_1':\r\n\tid: \"my_sprites_scene_1\",\r\n\tsrcType: CB_GraphicSprites.SRC_TYPES.IMAGE,\r\n\tsrcLeft: 10,\r\n\tsrcTop: 20,\r\n\tsrcWidth: 64,\r\n\tsrcHeight: 32,\r\n\tleft: 10,\r\n\ttop: 20,\r\n\twidth: 64,\r\n\theight: 32,\r\n\tdata: { datum_1: \"value_1\", datum_2: 2, datum_3: [ \"a\", \"b\", \"c\" ] },\r\n\t//Sprites groups:\r\n\tspritesGroups:\r\n\t[\r\n\t\t//'my_sprites_1':\r\n\t\t{\r\n\t\t\tid: \"my_sprites_1\",\r\n\t\t\tsrc: \"path/to/image.gif\",\r\n\t\t\tsprites:\r\n\t\t\t[\r\n\t\t\t\t//'my_sprite_1':\r\n\t\t\t\t{\r\n\t\t\t\t\tid: \"my_sprite_1\",\r\n\t\t\t\t\tsubSprites:\r\n\t\t\t\t\t[\r\n\t\t\t\t\t\t//'my_subsprite_1':\r\n\t\t\t\t\t\t{ id: \"my_subsprite_1\", srcLeft: 10, srcTop: 20, zIndex: 1 },\r\n\t\t\t\t\t\t//'my_subsprite_2':\r\n\t\t\t\t\t\t{ id: \"my_subsprite_2\", srcLeft: 20, srcTop: 40, zIndex: 2 }\r\n\t\t\t\t\t]\r\n\t\t\t\t},\r\n\t\t\t\t//'my_sprite_2':\r\n\t\t\t\t{\r\n\t\t\t\t\tid: \"my_sprite_2\",\r\n\t\t\t\t\tsubSprites:\r\n\t\t\t\t\t[\r\n\t\t\t\t\t\t//'my_subsprite_3':\r\n\t\t\t\t\t\t{ id: \"my_subsprite_3\", srcLeft: 30, srcTop: 60, zIndex: 1 },\r\n\t\t\t\t\t\t//'my_subsprite_4':\r\n\t\t\t\t\t\t{ id: \"my_subsprite_4\", srcLeft: 40, srcTop: 80, zIndex: 2 }\r\n\t\t\t\t\t]\r\n\t\t\t\t}\r\n\t\t\t]\r\n\t\t },\r\n\t\t//'my_sprites_2':\r\n\t\t{\r\n\t\t\tid: \"my_sprites_2\",\r\n\t\t\tsrc: \"path/to/image2.gif\",\r\n\t\t\tsprites:\r\n\t\t\t[\r\n\t\t\t\t//'my_sprite_3':\r\n\t\t\t\t{\r\n\t\t\t\t\tid: \"my_sprite_3\",\r\n\t\t\t\t\tsubSprites:\r\n\t\t\t\t\t[\r\n\t\t\t\t\t\t//'my_subsprite_1':\r\n\t\t\t\t\t\t{ id: \"my_subsprite_5\", srcLeft: 10, srcTop: 20, zIndex: 1 },\r\n\t\t\t\t\t\t//'my_subsprite_2':\r\n\t\t\t\t\t\t{ id: \"my_subsprite_6\", srcLeft: 20, srcTop: 40, zIndex: 2 }\r\n\t\t\t\t\t]\r\n\t\t\t\t},\r\n\t\t\t\t//'my_sprite_4':\r\n\t\t\t\t{\r\n\t\t\t\t\tid: \"my_sprite_4\",\r\n\t\t\t\t\tsubSprites:\r\n\t\t\t\t\t[\r\n\t\t\t\t\t\t//'my_subsprite_3':\r\n\t\t\t\t\t\t{ id: \"my_subsprite_7\", srcLeft: 30, srcTop: 60, zIndex: 1 },\r\n\t\t\t\t\t\t//'my_subsprite_4':\r\n\t\t\t\t\t\t{ id: \"my_subsprite_8\", srcLeft: 40, srcTop: 80, zIndex: 2 }\r\n\t\t\t\t\t]\r\n\t\t\t\t}\r\n\t\t\t]\r\n\t\t}\r\n\t]\r\n }\r "],"memberof":"CB_GraphicSpritesScene","kind":"typedef","name":"SPRITES_GROUPS_OBJECT","type":{"names":["Object"]},"properties":[{"type":{"names":["string","*"]},"optional":true,"defaultvalue":"'CB_GraphicSpritesScene_' + CB_GraphicSpritesScene._idUnique++","description":"<p>Identifier of the sprites groups object and also for the graphic sprites scene (also used as the {@link CB_GraphicSprites.id} property for the {@link CB_GraphicSpritesScene} object). It should be unique. Recommended. It must be a value which evaluates to true. By default, it is generated automatically (with an internal counter).</p>","name":"id"},{"type":{"names":["*"]},"optional":true,"defaultvalue":"\"\"","description":"<p>The value for the &quot;src&quot; property which will be used as default if not provided (or the provided one was wrong) in the given {@link CB_GraphicSprites.SPRITES_OBJECT} objects (in the &quot;spritesGroups&quot; property), when creating the internal {@link CB_GraphicSprites} objects.</p>","name":"src"},{"type":{"names":["string"]},"optional":true,"defaultvalue":"{@link CB_GraphicSprites.SRC_TYPES.DEFAULT}","description":"<p>The value for the &quot;srcType&quot; property which will be used as default if not provided (or the provided one was wrong) in the given {@link CB_GraphicSprites.SPRITES_OBJECT} objects (in the &quot;spritesGroups&quot; property), when creating the internal {@link CB_GraphicSprites} objects. It should point to a property of the {@link CB_GraphicSprites.SRC_TYPES} object. You can use other values of the {@link CB_GraphicSprites.SRC_TYPES} object or create new ones.</p>","name":"srcType"},{"type":{"names":["number"]},"optional":true,"defaultvalue":"{@link CB_GraphicSprites.LEFT_SOURCE_DEFAULT}","description":"<p>The value for the &quot;srcLeft&quot; property which will be used as default if not provided (or the provided one was wrong) in the given {@link CB_GraphicSprites.SPRITES_OBJECT} objects (in the &quot;spritesGroups&quot; property), when creating the internal {@link CB_GraphicSprites} objects.</p>","name":"srcLeft"},{"type":{"names":["number"]},"optional":true,"defaultvalue":"{@link CB_GraphicSprites.TOP_SOURCE_DEFAULT}","description":"<p>The value for the &quot;srcTop&quot; property which will be used as default if not provided (or the provided one was wrong) in the given {@link CB_GraphicSprites.SPRITES_OBJECT} objects (in the &quot;spritesGroups&quot; property), when creating the internal {@link CB_GraphicSprites} objects.</p>","name":"srcTop"},{"type":{"names":["number"]},"optional":true,"defaultvalue":"{@link CB_GraphicSprites.WIDTH_SOURCE_DEFAULT}","description":"<p>The value for the &quot;srcWidth&quot; property which will be used as default if not provided (or the provided one was wrong) in the given {@link CB_GraphicSprites.SPRITES_OBJECT} objects (in the &quot;spritesGroups&quot; property), when creating the internal {@link CB_GraphicSprites} objects.</p>","name":"srcWidth"},{"type":{"names":["number"]},"optional":true,"defaultvalue":"{@link CB_GraphicSprites.HEIGHT_SOURCE_DEFAULT}","description":"<p>The value for the &quot;srcHeight&quot; property which will be used as default if not provided (or the provided one was wrong) in the given {@link CB_GraphicSprites.SPRITES_OBJECT} objects (in the &quot;spritesGroups&quot; property), when creating the internal {@link CB_GraphicSprites} objects.</p>","name":"srcHeight"},{"type":{"names":["number"]},"optional":true,"defaultvalue":"{@link CB_GraphicSprites.LEFT_DEFAULT}","description":"<p>The value for the &quot;left&quot; property which will be used as default if not provided (or the provided one was wrong) in the given {@link CB_GraphicSprites.SPRITES_OBJECT} objects (in the &quot;spritesGroups&quot; property), when creating the internal {@link CB_GraphicSprites} objects.</p>","name":"left"},{"type":{"names":["number"]},"optional":true,"defaultvalue":"{@link CB_GraphicSprites.TOP_DEFAULT}","description":"<p>The value for the &quot;top&quot; property which will be used as default if not provided (or the provided one was wrong) in the given {@link CB_GraphicSprites.SPRITES_OBJECT} objects (in the &quot;spritesGroups&quot; property), when creating the internal {@link CB_GraphicSprites} objects.</p>","name":"top"},{"type":{"names":["number"]},"optional":true,"defaultvalue":"{@link CB_GraphicSprites.WIDTH_DEFAULT}","description":"<p>The value for the &quot;width&quot; property which will be used as default if not provided (or the provided one was wrong) in the given {@link CB_GraphicSprites.SPRITES_OBJECT} objects (in the &quot;spritesGroups&quot; property), when creating the internal {@link CB_GraphicSprites} objects.</p>","name":"width"},{"type":{"names":["number"]},"optional":true,"defaultvalue":"{@link CB_GraphicSprites.HEIGHT_DEFAULT}","description":"<p>The value for the &quot;height&quot; property which will be used as default if not provided (or the provided one was wrong) in the given {@link CB_GraphicSprites.SPRITES_OBJECT} objects (in the &quot;spritesGroups&quot; property), when creating the internal {@link CB_GraphicSprites} objects.</p>","name":"height"},{"type":{"names":["number"]},"optional":true,"defaultvalue":"{@link CB_GraphicSprites.ZINDEX_DEFAULT}","description":"<p>The value for the &quot;zIndex&quot; property which will be used as default if not provided (or the provided one was wrong) in the given {@link CB_GraphicSprites.SPRITES_OBJECT} objects (in the &quot;spritesGroups&quot; property), when creating the internal {@link CB_GraphicSprites} objects.</p>","name":"zIndex"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>The value for the &quot;disabled&quot; property which will be used as default if not provided (or the provided one was wrong) in the given {@link CB_GraphicSprites.SPRITES_OBJECT} objects (in the &quot;spritesGroups&quot; property), when creating the internal {@link CB_GraphicSprites} objects.</p>","name":"disabled"},{"type":{"names":["object"]},"optional":true,"defaultvalue":"{ 'that' : CB_GraphicSprites.SPRITES_GROUPS_OBJECT, 'getThis' = function() { return this.that; } }","description":"<p>Object with any additional data desired which can be any kind. It will always have a &quot;that&quot; property pointing to the {@link CB_GraphicSprites.SPRITES_GROUPS_OBJECT} object where it belongs to and a function in its &quot;getThis&quot; property returning the same value (added automatically). These properties (&quot;that&quot; and &quot;getThis&quot;) cannot be overridden. The value given will also be used for the &quot;data&quot; property which will be used as default if not provided (or the provided one was wrong) in the given {@link CB_GraphicSprites.SPRITES_OBJECT} objects (in the &quot;spritesGroups&quot; property), when creating the internal {@link CB_GraphicSprites} objects.</p>","name":"data"},{"type":{"names":["array"]},"optional":true,"defaultvalue":"[]","description":"<p>Numeric array containing {@link CB_GraphicSprites.SPRITES_OBJECT} objects with all the sprites groups that are useful for creating the internal {@link CB_GraphicSprites} objects. Recommended at least to provide one {@link CB_GraphicSprites.SPRITES_OBJECT} object in the first index.</p>","name":"spritesGroups"},{"type":{"names":["*"]},"optional":true,"description":"<p>Property pointing to or containing its parent (also used as the {@link CB_GraphicSpritesScene.parent} property for the {@link CB_GraphicSpritesScene} object).</p>","name":"parent"},{"type":{"names":["array"]},"description":"<p>Read-only numeric array containing {@link CB_GraphicSprites} objects created internally. Their &quot;parent&quot; property will be set to point the current {@link CB_GraphicSpritesScene} object which contains them.</p>","name":"items"},{"type":{"names":["array"]},"description":"<p>Read-only property containing a numeric array of all the {@link CB_GraphicSprites} objects ordered by their z-index (&quot;zIndex&quot; property). It is updated automatically when the z-index of a sprite is set with its {@link CB_GraphicSprites#setZIndex} method or when inserting/removing {@link CB_GraphicSprites} objects through the {@link CB_GraphicSpritesScene#insertSpritesGroups}, {@link CB_GraphicSpritesScene#insertSpritesGroup}, {@link CB_GraphicSpritesScene#removeSpritesGroup} or {@link CB_GraphicSpritesScene#removeSpritesGroupById} methods.</p>","name":"itemsByZIndex"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>Default value to use as the &quot;byReference&quot; parameter for the constructor and for the {@link CB_GraphicSpritesScene#insertSpritesGroups} method. If a boolean value is not provided, it will be parsed to boolean (resulting undefined to be false).</p>","name":"byReference_DEFAULT"},{"type":{"names":["CB_GraphicSpritesScene"]},"description":"<p>Read-only property pointing to the {@link CB_GraphicSpritesScene} object which contains it.</p>","name":"container"},{"type":{"names":["boolean"]},"description":"<p>Read-only property which is always set to true to help identify this type of object.</p>","name":"isSpritesGroups"},{"type":{"names":["'spritesGroups'"]},"description":"<p>Read-only property indicating the type of object (always &quot;spritesGroups&quot;).</p>","name":"type"}],"longname":"CB_GraphicSpritesScene.SPRITES_GROUPS_OBJECT","scope":"static"},{"comment":"/**\r\n * Class to manage different groups of graphic sprites (2D or 3D). Internally, it manages {@link CB_GraphicSprites} objects.\r\n * @class\r\n * @classdesc Class to manage different groups of graphic sprites (2D or 3D). Internally, it manages {@link CB_GraphicSprites} objects.\r\n * @param {CB_GraphicSpritesScene.SPRITES_GROUPS_OBJECT} [spritesGroups] - Object with the desired groups of sprites. The information will be used for the {@link CB_GraphicSpritesScene#spritesGroups} property. Used as the \"spritesGroups\" parameter when calling the {@link CB_GraphicSpritesScene#insertSpritesGroups} method internally.\r\n * @param {boolean} [byReference=false] - This value will be used as the \"byReference\" parameter of the constructor when creating the new internal {@link CB_GraphicSprites} objects. If a boolean value is not provided, it will use the value of the {@link CB_GraphicSpritesScene.SPRITES_GROUPS_OBJECT.byReference_DEFAULT} property of the given {@link CB_GraphicSpritesScene.SPRITES_GROUPS_OBJECT} object (parsed to boolean).\r\n * @returns {CB_GraphicSpritesScene} Returns a new {@link CB_GraphicSpritesScene} object.\r\n * @todo Think about a \"createCopy\" parameter on different the insert methods (to insert sprites groups/graphic sprites objects, etc.) so it will make a copy of the object to avoid using/modifying the original one. If the \"createCopy\" is set to false, it should always use the object as reference (using/modifying it).\r\n * @todo Think about a method to remove a sprite group object when the same sprite group is received by parameter. The same to remove a {@link CB_GraphicSprites} object, receiving a {@link CB_GraphicSprites} object by parameter. The same to remove the sprites groups object, receiving a sprites groups object by parameter. Only remove them if they match exactly.\r\n * @todo Think about a method to insert {@link CB_GraphicSprites} object directly. The same with a method that inserts many {@link CB_GraphicSprites} objects (receiving an array with them).\r\n */","meta":{"range":[11716,13276],"filename":"CB_GraphicSpritesScene.js","lineno":126,"columnno":4,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image","code":{"id":"astnode100045896","name":"CB_GraphicSpritesScene","type":"FunctionExpression"},"vars":{"this.id":"CB_GraphicSpritesScene#id","this.parent":"CB_GraphicSpritesScene#parent","this.spritesGroups":"CB_GraphicSpritesScene#spritesGroups"}},"description":"<p>Class to manage different groups of graphic sprites (2D or 3D). Internally, it manages {@link CB_GraphicSprites} objects.</p>","kind":"class","classdesc":"<p>Class to manage different groups of graphic sprites (2D or 3D). Internally, it manages {@link CB_GraphicSprites} objects.</p>","params":[{"type":{"names":["CB_GraphicSpritesScene.SPRITES_GROUPS_OBJECT"]},"optional":true,"description":"<p>Object with the desired groups of sprites. The information will be used for the {@link CB_GraphicSpritesScene#spritesGroups} property. Used as the &quot;spritesGroups&quot; parameter when calling the {@link CB_GraphicSpritesScene#insertSpritesGroups} method internally.</p>","name":"spritesGroups"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>This value will be used as the &quot;byReference&quot; parameter of the constructor when creating the new internal {@link CB_GraphicSprites} objects. If a boolean value is not provided, it will use the value of the {@link CB_GraphicSpritesScene.SPRITES_GROUPS_OBJECT.byReference_DEFAULT} property of the given {@link CB_GraphicSpritesScene.SPRITES_GROUPS_OBJECT} object (parsed to boolean).</p>","name":"byReference"}],"returns":[{"type":{"names":["CB_GraphicSpritesScene"]},"description":"<p>Returns a new {@link CB_GraphicSpritesScene} object.</p>"}],"todo":["Think about a \"createCopy\" parameter on different the insert methods (to insert sprites groups/graphic sprites objects, etc.) so it will make a copy of the object to avoid using/modifying the original one. If the \"createCopy\" is set to false, it should always use the object as reference (using/modifying it).","Think about a method to remove a sprite group object when the same sprite group is received by parameter. The same to remove a {@link CB_GraphicSprites} object, receiving a {@link CB_GraphicSprites} object by parameter. The same to remove the sprites groups object, receiving a sprites groups object by parameter. Only remove them if they match exactly.","Think about a method to insert {@link CB_GraphicSprites} object directly. The same with a method that inserts many {@link CB_GraphicSprites} objects (receiving an array with them)."],"name":"CB_GraphicSpritesScene","longname":"CB_GraphicSpritesScene","scope":"global"},{"comment":"/**\r\n * Property which is always set to true to help identify this type of object.\r\n *\t@constant\r\n * @type {boolean}\r\n * @default\r\n */","meta":{"range":[13434,13488],"filename":"CB_GraphicSpritesScene.js","lineno":172,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image","code":{"id":"astnode100045943","name":"CB_GraphicSpritesScene.prototype.isSpritesScene","type":"Literal","value":true,"paramnames":[]}},"description":"<p>Property which is always set to true to help identify this type of object.</p>","kind":"constant","type":{"names":["boolean"]},"defaultvalue":true,"name":"isSpritesScene","longname":"CB_GraphicSpritesScene#isSpritesScene","memberof":"CB_GraphicSpritesScene","scope":"instance"},{"comment":"/**\r\n * Indicates the type of object (always \"spritesScene\").\r\n *\t@constant\r\n * @type {string}\r\n * @default\r\n */","meta":{"range":[13611,13665],"filename":"CB_GraphicSpritesScene.js","lineno":181,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image","code":{"id":"astnode100045951","name":"CB_GraphicSpritesScene.prototype.type","type":"Literal","value":"spritesScene","paramnames":[]}},"description":"<p>Indicates the type of object (always &quot;spritesScene&quot;).</p>","kind":"constant","type":{"names":["string"]},"defaultvalue":"spritesScene","name":"type","longname":"CB_GraphicSpritesScene#type","memberof":"CB_GraphicSpritesScene","scope":"instance"},{"comment":"/**\r\n * Destroys the graphic sprites scene object (removing all the sprites groups and the internal {@link CB_GraphicSprites} objects, etc.) and frees memory.\r\n * @function\r\n */","meta":{"range":[14132,14392],"filename":"CB_GraphicSpritesScene.js","lineno":200,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image","code":{"id":"astnode100045985","name":"CB_GraphicSpritesScene.prototype.destructor","type":"FunctionExpression","paramnames":[]},"vars":{"":null}},"description":"<p>Destroys the graphic sprites scene object (removing all the sprites groups and the internal {@link CB_GraphicSprites} objects, etc.) and frees memory.</p>","kind":"function","name":"destructor","longname":"CB_GraphicSpritesScene#destructor","memberof":"CB_GraphicSpritesScene","scope":"instance"},{"comment":"/**\r\n * Alias for {@link CB_GraphicSpritesScene#removeSpritesGroups}.\r\n * @function CB_GraphicSpritesScene#removeAll\r\n * @see {@link CB_GraphicSpritesScene#removeSpritesGroups}\r\n */","meta":{"filename":"CB_GraphicSpritesScene.js","lineno":210,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image","code":{}},"description":"<p>Alias for {@link CB_GraphicSpritesScene#removeSpritesGroups}.</p>","kind":"function","name":"removeAll","see":["{@link CB_GraphicSpritesScene#removeSpritesGroups}"],"memberof":"CB_GraphicSpritesScene","longname":"CB_GraphicSpritesScene#removeAll","scope":"instance"},{"comment":"/**\r\n * Alias for {@link CB_GraphicSpritesScene#removeSpritesGroups}.\r\n * @function CB_GraphicSpritesScene#removeSpritesGroupsAll\r\n * @see {@link CB_GraphicSpritesScene#removeSpritesGroups}\r\n */","meta":{"filename":"CB_GraphicSpritesScene.js","lineno":215,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image","code":{}},"description":"<p>Alias for {@link CB_GraphicSpritesScene#removeSpritesGroups}.</p>","kind":"function","name":"removeSpritesGroupsAll","see":["{@link CB_GraphicSpritesScene#removeSpritesGroups}"],"memberof":"CB_GraphicSpritesScene","longname":"CB_GraphicSpritesScene#removeSpritesGroupsAll","scope":"instance"},{"comment":"/**\r\n * Removes all the sprites groups (and all the {@link CB_GraphicSprites} objects) by clearing the {@link CB_GraphicSprites#spritesGroups} property.\r\n * @function\r\n */","meta":{"range":[14955,15156],"filename":"CB_GraphicSpritesScene.js","lineno":224,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image","code":{"id":"astnode100046011","name":"CB_GraphicSpritesScene.prototype.removeSpritesGroups","type":"AssignmentExpression","value":"CB_GraphicSpritesScene.prototype.removeSpritesGroupsAll","paramnames":[]}},"description":"<p>Removes all the sprites groups (and all the {@link CB_GraphicSprites} objects) by clearing the {@link CB_GraphicSprites#spritesGroups} property.</p>","kind":"function","name":"removeSpritesGroups","longname":"CB_GraphicSpritesScene#removeSpritesGroups","memberof":"CB_GraphicSpritesScene","scope":"instance"},{"comment":"/**\r\n * Adds the desired groups of graphic sprites. Calls the {@link CB_GraphicSpritesScene#insertSpritesGroup} and {@link CB_GraphicSpritesScene#updateGraphicSpritesByZIndex} methods internally.\r\n * @function\r\n * @param {CB_GraphicSpritesScene.SPRITES_GROUPS_OBJECT} [spritesGroups] - Object with the desired sprites groups. They will be stored in the \"{@link CB_GraphicSpritesScene#spritesGroups}.spritesGroups\" property and the {@link CB_GraphicSprites} objects created internally will be stored in the \"{@link CB_GraphicSpritesScene#spritesGroups}.items\" property.\r\n * @param {boolean} [byReference=!!{@link CB_GraphicSpritesScene.SPRITES_GROUPS_OBJECT.byReference_DEFAULT}] - This value will be used as the \"byReference\" parameter of the constructor when creating the new internal {@link CB_GraphicSprites} objects. If a boolean value is not provided, it will use the value of the {@link CB_GraphicSpritesScene.SPRITES_GROUPS_OBJECT.byReference_DEFAULT} property of the given {@link CB_GraphicSpritesScene.SPRITES_GROUPS_OBJECT} object (parsed to boolean).\r\n * @returns {CB_GraphicSpritesScene.SPRITES_GROUPS_OBJECT} Returns the {@link CB_GraphicSpritesScene#spritesGroups} property after updating it.\r\n */","meta":{"range":[16379,20138],"filename":"CB_GraphicSpritesScene.js","lineno":237,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image","code":{"id":"astnode100046038","name":"CB_GraphicSpritesScene.prototype.insertSpritesGroups","type":"FunctionExpression","paramnames":["spritesGroups","byReference"]},"vars":{"this.spritesGroups":"CB_GraphicSpritesScene#spritesGroups","spritesGroups":"CB_GraphicSpritesScene#insertSpritesGroups~spritesGroups","this.spritesGroups.isSpritesGroups":"CB_GraphicSpritesScene#spritesGroups.isSpritesGroups","this.spritesGroups.type":"CB_GraphicSpritesScene#spritesGroups.type","this.spritesGroups.container":"CB_GraphicSpritesScene#spritesGroups.container","this.parent":"CB_GraphicSpritesScene#parent","this.spritesGroups.parent":"CB_GraphicSpritesScene#spritesGroups.parent","this.id":"CB_GraphicSpritesScene#id","this.spritesGroups.id":"CB_GraphicSpritesScene#spritesGroups.id","spritesGroups.id":"CB_GraphicSpritesScene#id.id","this.spritesGroups.src":"CB_GraphicSpritesScene#spritesGroups.src","spritesGroups.src":"CB_GraphicSpritesScene#insertSpritesGroups~spritesGroups.src","this.spritesGroups.srcType":"CB_GraphicSpritesScene#spritesGroups.srcType","spritesGroups.srcType":"CB_GraphicSpritesScene#insertSpritesGroups~spritesGroups.srcType","spritesGroups.srcLeft":"CB_GraphicSpritesScene#insertSpritesGroups~spritesGroups.srcLeft","this.spritesGroups.srcLeft":"CB_GraphicSpritesScene#spritesGroups.srcLeft","spritesGroups.left":"CB_GraphicSpritesScene#insertSpritesGroups~spritesGroups.left","this.spritesGroups.left":"CB_GraphicSpritesScene#spritesGroups.left","spritesGroups.srcTop":"CB_GraphicSpritesScene#insertSpritesGroups~spritesGroups.srcTop","this.spritesGroups.srcTop":"CB_GraphicSpritesScene#spritesGroups.srcTop","spritesGroups.top":"CB_GraphicSpritesScene#insertSpritesGroups~spritesGroups.top","this.spritesGroups.top":"CB_GraphicSpritesScene#spritesGroups.top","spritesGroups.srcWidth":"CB_GraphicSpritesScene#insertSpritesGroups~spritesGroups.srcWidth","this.spritesGroups.srcWidth":"CB_GraphicSpritesScene#spritesGroups.srcWidth","spritesGroups.width":"CB_GraphicSpritesScene#insertSpritesGroups~spritesGroups.width","this.spritesGroups.width":"CB_GraphicSpritesScene#spritesGroups.width","spritesGroups.srcHeight":"CB_GraphicSpritesScene#insertSpritesGroups~spritesGroups.srcHeight","this.spritesGroups.srcHeight":"CB_GraphicSpritesScene#spritesGroups.srcHeight","spritesGroups.height":"CB_GraphicSpritesScene#insertSpritesGroups~spritesGroups.height","this.spritesGroups.height":"CB_GraphicSpritesScene#spritesGroups.height","spritesGroups.zIndex":"CB_GraphicSpritesScene#insertSpritesGroups~spritesGroups.zIndex","this.spritesGroups.zIndex":"CB_GraphicSpritesScene#spritesGroups.zIndex","this.spritesGroups.data":"CB_GraphicSpritesScene#spritesGroups.data","this.spritesGroups.data.that":"CB_GraphicSpritesScene#spritesGroups.data.that","this.spritesGroups.data.getThis":"CB_GraphicSpritesScene#spritesGroups.data.getThis","":null,"spritesGroups.spritesGroups":"CB_GraphicSpritesScene#insertSpritesGroups~spritesGroups.spritesGroups","byReference":"CB_GraphicSpritesScene#insertSpritesGroups~byReference","spritesGroupsLength":"CB_GraphicSpritesScene#insertSpritesGroups~spritesGroupsLength","x":"CB_GraphicSpritesScene#insertSpritesGroups~x"}},"description":"<p>Adds the desired groups of graphic sprites. Calls the {@link CB_GraphicSpritesScene#insertSpritesGroup} and {@link CB_GraphicSpritesScene#updateGraphicSpritesByZIndex} methods internally.</p>","kind":"function","params":[{"type":{"names":["CB_GraphicSpritesScene.SPRITES_GROUPS_OBJECT"]},"optional":true,"description":"<p>Object with the desired sprites groups. They will be stored in the &quot;{@link CB_GraphicSpritesScene#spritesGroups}.spritesGroups&quot; property and the {@link CB_GraphicSprites} objects created internally will be stored in the &quot;{@link CB_GraphicSpritesScene#spritesGroups}.items&quot; property.</p>","name":"spritesGroups"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":"!!{@link CB_GraphicSpritesScene.SPRITES_GROUPS_OBJECT.byReference_DEFAULT}","description":"<p>This value will be used as the &quot;byReference&quot; parameter of the constructor when creating the new internal {@link CB_GraphicSprites} objects. If a boolean value is not provided, it will use the value of the {@link CB_GraphicSpritesScene.SPRITES_GROUPS_OBJECT.byReference_DEFAULT} property of the given {@link CB_GraphicSpritesScene.SPRITES_GROUPS_OBJECT} object (parsed to boolean).</p>","name":"byReference"}],"returns":[{"type":{"names":["CB_GraphicSpritesScene.SPRITES_GROUPS_OBJECT"]},"description":"<p>Returns the {@link CB_GraphicSpritesScene#spritesGroups} property after updating it.</p>"}],"name":"insertSpritesGroups","longname":"CB_GraphicSpritesScene#insertSpritesGroups","memberof":"CB_GraphicSpritesScene","scope":"instance"},{"comment":"/**\r\n * Alias for {@link CB_GraphicSpritesScene#updateGraphicSpritesByZIndex}.\r\n * @function CB_GraphicSpritesScene#updateItemsByZIndex\r\n * @see {@link CB_GraphicSpritesScene#updateGraphicSpritesByZIndex}\r\n */","meta":{"filename":"CB_GraphicSpritesScene.js","lineno":289,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image","code":{}},"description":"<p>Alias for {@link CB_GraphicSpritesScene#updateGraphicSpritesByZIndex}.</p>","kind":"function","name":"updateItemsByZIndex","see":["{@link CB_GraphicSpritesScene#updateGraphicSpritesByZIndex}"],"memberof":"CB_GraphicSpritesScene","longname":"CB_GraphicSpritesScene#updateItemsByZIndex","scope":"instance"},{"comment":"/**\r\n * Updates (sorts again) the \"itemsByZIndex\" property (which is an array with the {@link CB_GraphicSprites} objects ordered by z-index, whose data comes from the array in the \"items\" property of the {@link CB_GraphicSpritesScene#spritesGroups} object) of the {@link CB_GraphicSpritesScene#spritesGroups} object.\r\n * @function\r\n * @returns {array} Returns the \"itemsByZIndex\" array of the {@link CB_GraphicSpritesScene#spritesGroups} object after updating it. Returns null if the property could not be obtained or updated.\r\n */","meta":{"range":[20892,21760],"filename":"CB_GraphicSpritesScene.js","lineno":299,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image","code":{"id":"astnode100046648","name":"CB_GraphicSpritesScene.prototype.updateGraphicSpritesByZIndex","type":"AssignmentExpression","value":"CB_GraphicSpritesScene.prototype.updateItemsByZIndex","paramnames":[]}},"description":"<p>Updates (sorts again) the &quot;itemsByZIndex&quot; property (which is an array with the {@link CB_GraphicSprites} objects ordered by z-index, whose data comes from the array in the &quot;items&quot; property of the {@link CB_GraphicSpritesScene#spritesGroups} object) of the {@link CB_GraphicSpritesScene#spritesGroups} object.</p>","kind":"function","returns":[{"type":{"names":["array"]},"description":"<p>Returns the &quot;itemsByZIndex&quot; array of the {@link CB_GraphicSpritesScene#spritesGroups} object after updating it. Returns null if the property could not be obtained or updated.</p>"}],"name":"updateGraphicSpritesByZIndex","longname":"CB_GraphicSpritesScene#updateGraphicSpritesByZIndex","memberof":"CB_GraphicSpritesScene","scope":"instance"},{"comment":"/**\r\n * Alias for {@link CB_GraphicSpritesScene#removeSpritesGroup}.\r\n * @function CB_GraphicSpritesScene#remove\r\n * @see {@link CB_GraphicSpritesScene#removeSpritesGroup}\r\n */","meta":{"filename":"CB_GraphicSpritesScene.js","lineno":322,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image","code":{}},"description":"<p>Alias for {@link CB_GraphicSpritesScene#removeSpritesGroup}.</p>","kind":"function","name":"remove","see":["{@link CB_GraphicSpritesScene#removeSpritesGroup}"],"memberof":"CB_GraphicSpritesScene","longname":"CB_GraphicSpritesScene#remove","scope":"instance"},{"comment":"/**\r\n * Alias for {@link CB_GraphicSpritesScene#removeSpritesGroup}.\r\n * @function CB_GraphicSpritesScene#removeGraphicSprites\r\n * @see {@link CB_GraphicSpritesScene#removeSpritesGroup}\r\n */","meta":{"filename":"CB_GraphicSpritesScene.js","lineno":327,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image","code":{}},"description":"<p>Alias for {@link CB_GraphicSpritesScene#removeSpritesGroup}.</p>","kind":"function","name":"removeGraphicSprites","see":["{@link CB_GraphicSpritesScene#removeSpritesGroup}"],"memberof":"CB_GraphicSpritesScene","longname":"CB_GraphicSpritesScene#removeGraphicSprites","scope":"instance"},{"comment":"/**\r\n * Removes a sprites group and its {@link CB_GraphicSprites} object by its index (its position in the {@link CB_GraphicSpritesScene#spritesGroups.items} array). Calls the {@link CB_GraphicSpritesScene#updateGraphicSpritesByZIndex} method internally.\r\n * @function\r\n * @param {integer} [index=0] - The index where the {@link CB_GraphicSprites} object is located (its position in the {@link CB_GraphicSpritesScene#spritesGroups.items} array).\r\n * @returns {boolean} Returns true if the {@link CB_GraphicSprites} object has been deleted from the graphic sprites scene object or false otherwise.\r\n */","meta":{"range":[22746,23386],"filename":"CB_GraphicSpritesScene.js","lineno":338,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image","code":{"id":"astnode100046783","name":"CB_GraphicSpritesScene.prototype.removeSpritesGroup","type":"AssignmentExpression","value":"CB_GraphicSpritesScene.prototype.removeGraphicSprites","paramnames":[]}},"description":"<p>Removes a sprites group and its {@link CB_GraphicSprites} object by its index (its position in the {@link CB_GraphicSpritesScene#spritesGroups.items} array). Calls the {@link CB_GraphicSpritesScene#updateGraphicSpritesByZIndex} method internally.</p>","kind":"function","params":[{"type":{"names":["integer"]},"optional":true,"defaultvalue":0,"description":"<p>The index where the {@link CB_GraphicSprites} object is located (its position in the {@link CB_GraphicSpritesScene#spritesGroups.items} array).</p>","name":"index"}],"returns":[{"type":{"names":["boolean"]},"description":"<p>Returns true if the {@link CB_GraphicSprites} object has been deleted from the graphic sprites scene object or false otherwise.</p>"}],"name":"removeSpritesGroup","longname":"CB_GraphicSpritesScene#removeSpritesGroup","memberof":"CB_GraphicSpritesScene","scope":"instance"},{"comment":"/**\r\n * Alias for {@link CB_GraphicSpritesScene#removeSpritesGroupById}.\r\n * @function CB_GraphicSpritesScene#removeById\r\n * @see {@link CB_GraphicSpritesScene#removeSpritesGroupById}\r\n */","meta":{"filename":"CB_GraphicSpritesScene.js","lineno":354,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image","code":{}},"description":"<p>Alias for {@link CB_GraphicSpritesScene#removeSpritesGroupById}.</p>","kind":"function","name":"removeById","see":["{@link CB_GraphicSpritesScene#removeSpritesGroupById}"],"memberof":"CB_GraphicSpritesScene","longname":"CB_GraphicSpritesScene#removeById","scope":"instance"},{"comment":"/**\r\n * Alias for {@link CB_GraphicSpritesScene#removeSpritesGroupById}.\r\n * @function CB_GraphicSpritesScene#removeGraphicSpritesById\r\n * @see {@link CB_GraphicSpritesScene#removeSpritesGroupById}\r\n */","meta":{"filename":"CB_GraphicSpritesScene.js","lineno":359,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image","code":{}},"description":"<p>Alias for {@link CB_GraphicSpritesScene#removeSpritesGroupById}.</p>","kind":"function","name":"removeGraphicSpritesById","see":["{@link CB_GraphicSpritesScene#removeSpritesGroupById}"],"memberof":"CB_GraphicSpritesScene","longname":"CB_GraphicSpritesScene#removeGraphicSpritesById","scope":"instance"},{"comment":"/**\r\n * Removes a sprites group and its {@link CB_GraphicSprites} object by its identifier. Calls the {@link CB_GraphicSpritesScene#updateGraphicSpritesByZIndex} method internally.\r\n * @function\r\n * @param {string|*} [id=undefined] - The identifier of the {@link CB_GraphicSprites} object.\r\n * @returns {boolean} Returns true if the {@link CB_GraphicSprites} object has been deleted from the graphic sprites scene object or false otherwise.\r\n * @todo Optimize it (perhaps using a cache matching the IDs with their position, maybe using the \"position\" or \"positionByZIndex\" properties).\r\n */","meta":{"range":[24386,25173],"filename":"CB_GraphicSpritesScene.js","lineno":371,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image","code":{"id":"astnode100046863","name":"CB_GraphicSpritesScene.prototype.removeSpritesGroupById","type":"AssignmentExpression","value":"CB_GraphicSpritesScene.prototype.removeGraphicSpritesById","paramnames":[]}},"description":"<p>Removes a sprites group and its {@link CB_GraphicSprites} object by its identifier. Calls the {@link CB_GraphicSpritesScene#updateGraphicSpritesByZIndex} method internally.</p>","kind":"function","params":[{"type":{"names":["string","*"]},"optional":true,"description":"<p>The identifier of the {@link CB_GraphicSprites} object.</p>","name":"id"}],"returns":[{"type":{"names":["boolean"]},"description":"<p>Returns true if the {@link CB_GraphicSprites} object has been deleted from the graphic sprites scene object or false otherwise.</p>"}],"todo":["Optimize it (perhaps using a cache matching the IDs with their position, maybe using the \"position\" or \"positionByZIndex\" properties)."],"name":"removeSpritesGroupById","longname":"CB_GraphicSpritesScene#removeSpritesGroupById","memberof":"CB_GraphicSpritesScene","scope":"instance"},{"comment":"/**\r\n * Object used as the returning value of the {@link CB_GraphicSpritesScene#insertSpritesGroup} method.\r\n * @memberof CB_GraphicSpritesScene\r\n * @typedef {Object} CB_GraphicSpritesScene.insertSpritesGroup_OBJECT\r\n * @property {CB_GraphicSprites.SPRITES_OBJECT} spritesGroup - The {@link CB_GraphicSpritesScene.SPRITES_GROUPS_OBJECT} which has been inserted (it could have been modified/sanitized from the given one and some missing properties or those which were wrong could have been inherited) and was used to create the internal {@link CB_GraphicSprites} object when calling its constructor.\r\n * @property {CB_GraphicSprites} item - The {@link CB_GraphicSprites} object created and inserted from the {@link CB_GraphicSprites.SPRITES_OBJECT}.\r\n */","meta":{"filename":"CB_GraphicSpritesScene.js","lineno":388,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image","code":{}},"description":"<p>Object used as the returning value of the {@link CB_GraphicSpritesScene#insertSpritesGroup} method.</p>","memberof":"CB_GraphicSpritesScene","kind":"typedef","name":"insertSpritesGroup_OBJECT","type":{"names":["Object"]},"properties":[{"type":{"names":["CB_GraphicSprites.SPRITES_OBJECT"]},"description":"<p>The {@link CB_GraphicSpritesScene.SPRITES_GROUPS_OBJECT} which has been inserted (it could have been modified/sanitized from the given one and some missing properties or those which were wrong could have been inherited) and was used to create the internal {@link CB_GraphicSprites} object when calling its constructor.</p>","name":"spritesGroup"},{"type":{"names":["CB_GraphicSprites"]},"description":"<p>The {@link CB_GraphicSprites} object created and inserted from the {@link CB_GraphicSprites.SPRITES_OBJECT}.</p>","name":"item"}],"longname":"CB_GraphicSpritesScene.insertSpritesGroup_OBJECT","scope":"static"},{"comment":"/**\r\n * Alias for {@link CB_GraphicSpritesScene#insertSpritesGroup}.\r\n * @function CB_GraphicSpritesScene#insert\r\n * @see {@link CB_GraphicSpritesScene#insertSpritesGroup}\r\n */","meta":{"filename":"CB_GraphicSpritesScene.js","lineno":396,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image","code":{}},"description":"<p>Alias for {@link CB_GraphicSpritesScene#insertSpritesGroup}.</p>","kind":"function","name":"insert","see":["{@link CB_GraphicSpritesScene#insertSpritesGroup}"],"memberof":"CB_GraphicSpritesScene","longname":"CB_GraphicSpritesScene#insert","scope":"instance"},{"comment":"/**\r\n * Adds the desired group of graphic sprites. Creates internal {@link CB_GraphicSprites} objects.\r\n * @function\r\n * @param {CB_GraphicSprites.SPRITES_OBJECT} [spritesGroup] - Object with the desired sprites group. It will be stored in the \"{@link CB_GraphicSpritesScene#spritesGroups}.spritesGroups\" property and the {@link CB_GraphicSprites} object created internally will be stored in the \"{@link CB_GraphicSpritesScene#spritesGroups}.items\" property.\r\n * @param {boolean} [avoidUpdatingGraphicSpritesByZIndex=false] - If set to true, it will not call the {CB_GraphicSpritesScene#updateGraphicSpritesByZIndex} method internally. Internal usage recommended only.\r\n * @param {boolean} [byReference=false] - This value will be used as the \"byReference\" parameter of the constructor when creating the new internal {@link CB_GraphicSprites} objects.\r\n * @returns {CB_GraphicSpritesScene.insertSpritesGroup_OBJECT} Returns an object whose \"spritesGroup\" property contains the {@link CB_GraphicSpritesScene.SPRITES_GROUPS_OBJECT} which has been inserted (it could have been modified/sanitized from the given one and some missing properties or those which were wrong could have been inherited) and was used to create the internal {@link CB_GraphicSprites} object when calling its constructor and the \"item\" property contains the {@link CB_GraphicSprites} object created and inserted.\r\n */","meta":{"range":[27515,32670],"filename":"CB_GraphicSpritesScene.js","lineno":409,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image","code":{"id":"astnode100046973","name":"CB_GraphicSpritesScene.prototype.insertSpritesGroup","type":"AssignmentExpression","value":"CB_GraphicSpritesScene.prototype.insert","paramnames":[]}},"description":"<p>Adds the desired group of graphic sprites. Creates internal {@link CB_GraphicSprites} objects.</p>","kind":"function","params":[{"type":{"names":["CB_GraphicSprites.SPRITES_OBJECT"]},"optional":true,"description":"<p>Object with the desired sprites group. It will be stored in the &quot;{@link CB_GraphicSpritesScene#spritesGroups}.spritesGroups&quot; property and the {@link CB_GraphicSprites} object created internally will be stored in the &quot;{@link CB_GraphicSpritesScene#spritesGroups}.items&quot; property.</p>","name":"spritesGroup"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If set to true, it will not call the {CB_GraphicSpritesScene#updateGraphicSpritesByZIndex} method internally. Internal usage recommended only.</p>","name":"avoidUpdatingGraphicSpritesByZIndex"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>This value will be used as the &quot;byReference&quot; parameter of the constructor when creating the new internal {@link CB_GraphicSprites} objects.</p>","name":"byReference"}],"returns":[{"type":{"names":["CB_GraphicSpritesScene.insertSpritesGroup_OBJECT"]},"description":"<p>Returns an object whose &quot;spritesGroup&quot; property contains the {@link CB_GraphicSpritesScene.SPRITES_GROUPS_OBJECT} which has been inserted (it could have been modified/sanitized from the given one and some missing properties or those which were wrong could have been inherited) and was used to create the internal {@link CB_GraphicSprites} object when calling its constructor and the &quot;item&quot; property contains the {@link CB_GraphicSprites} object created and inserted.</p>"}],"name":"insertSpritesGroup","longname":"CB_GraphicSpritesScene#insertSpritesGroup","memberof":"CB_GraphicSpritesScene","scope":"instance"},{"comment":"/**\r\n * Alias for {@link CB_GraphicSpritesScene#getSpritesGroups}.\r\n * @function CB_GraphicSpritesScene#getSpritesGroupsAll\r\n * @see {@link CB_GraphicSpritesScene#getSpritesGroups}\r\n */","meta":{"filename":"CB_GraphicSpritesScene.js","lineno":487,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image","code":{}},"description":"<p>Alias for {@link CB_GraphicSpritesScene#getSpritesGroups}.</p>","kind":"function","name":"getSpritesGroupsAll","see":["{@link CB_GraphicSpritesScene#getSpritesGroups}"],"memberof":"CB_GraphicSpritesScene","longname":"CB_GraphicSpritesScene#getSpritesGroupsAll","scope":"instance"},{"comment":"/**\r\n * Gets the sprites groups object (the {@link CB_GraphicSpritesScene.SPRITES_GROUPS_OBJECT} object which is in the {@link CB_GraphicSpritesScene#spritesGroups} property), if any.\r\n * @function\r\n * @param {*} [returnValueOnFail=undefined] - The value we want it to return in the case that no value is found. If not provided, undefined will be returned.\r\n * @returns {CB_GraphicSpritesScene.SPRITES_GROUPS_OBJECT|*} Returns the sprites groups object (the {@link CB_GraphicSpritesScene.SPRITES_GROUPS_OBJECT} object which is in the {@link CB_GraphicSpritesScene#spritesGroups} property), if any, or the value of \"returnValueOnFail\" otherwise.\r\n */","meta":{"range":[34130,34340],"filename":"CB_GraphicSpritesScene.js","lineno":498,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image","code":{"id":"astnode100047834","name":"CB_GraphicSpritesScene.prototype.getSpritesGroups","type":"AssignmentExpression","value":"CB_GraphicSpritesScene.prototype.getSpritesGroupsAll","paramnames":[]}},"description":"<p>Gets the sprites groups object (the {@link CB_GraphicSpritesScene.SPRITES_GROUPS_OBJECT} object which is in the {@link CB_GraphicSpritesScene#spritesGroups} property), if any.</p>","kind":"function","params":[{"type":{"names":["*"]},"optional":true,"description":"<p>The value we want it to return in the case that no value is found. If not provided, undefined will be returned.</p>","name":"returnValueOnFail"}],"returns":[{"type":{"names":["CB_GraphicSpritesScene.SPRITES_GROUPS_OBJECT","*"]},"description":"<p>Returns the sprites groups object (the {@link CB_GraphicSpritesScene.SPRITES_GROUPS_OBJECT} object which is in the {@link CB_GraphicSpritesScene#spritesGroups} property), if any, or the value of &quot;returnValueOnFail&quot; otherwise.</p>"}],"name":"getSpritesGroups","longname":"CB_GraphicSpritesScene#getSpritesGroups","memberof":"CB_GraphicSpritesScene","scope":"instance"},{"comment":"/**\r\n * Alias for {@link CB_GraphicSpritesScene#getGraphicSpritesAll}.\r\n * @function CB_GraphicSpritesScene#getAll\r\n * @see {@link CB_GraphicSpritesScene#getGraphicSpritesAll}\r\n */","meta":{"filename":"CB_GraphicSpritesScene.js","lineno":504,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image","code":{}},"description":"<p>Alias for {@link CB_GraphicSpritesScene#getGraphicSpritesAll}.</p>","kind":"function","name":"getAll","see":["{@link CB_GraphicSpritesScene#getGraphicSpritesAll}"],"memberof":"CB_GraphicSpritesScene","longname":"CB_GraphicSpritesScene#getAll","scope":"instance"},{"comment":"/**\r\n * Gets all the sprites graphic objects (the \"items\" property of the internal {@link CB_GraphicSpritesScene.SPRITES_GROUPS_OBJECT} object, if any).\r\n * @function\r\n * @param {boolean} [orderedByZIndex=false] - If set to true, it will return the {@link CB_GraphicSprites} objects sorted by their z-index (ascending order).\r\n * @param {*} [returnValueOnFail=undefined] - The value we want it to return in the case that no value is found. If not provided, undefined will be returned.\r\n * @returns {array|*} Returns an array with all the {@link CB_GraphicSprites} objects or the value of \"returnValueOnFail\" otherwise.\r\n */","meta":{"range":[35159,35610],"filename":"CB_GraphicSpritesScene.js","lineno":516,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image","code":{"id":"astnode100047859","name":"CB_GraphicSpritesScene.prototype.getGraphicSpritesAll","type":"AssignmentExpression","value":"CB_GraphicSpritesScene.prototype.getAll","paramnames":[]}},"description":"<p>Gets all the sprites graphic objects (the &quot;items&quot; property of the internal {@link CB_GraphicSpritesScene.SPRITES_GROUPS_OBJECT} object, if any).</p>","kind":"function","params":[{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If set to true, it will return the {@link CB_GraphicSprites} objects sorted by their z-index (ascending order).</p>","name":"orderedByZIndex"},{"type":{"names":["*"]},"optional":true,"description":"<p>The value we want it to return in the case that no value is found. If not provided, undefined will be returned.</p>","name":"returnValueOnFail"}],"returns":[{"type":{"names":["array","*"]},"description":"<p>Returns an array with all the {@link CB_GraphicSprites} objects or the value of &quot;returnValueOnFail&quot; otherwise.</p>"}],"name":"getGraphicSpritesAll","longname":"CB_GraphicSpritesScene#getGraphicSpritesAll","memberof":"CB_GraphicSpritesScene","scope":"instance"},{"comment":"/**\r\n * Alias for {@link CB_GraphicSpritesScene#getGraphicSprites}.\r\n * @function CB_GraphicSpritesScene#get\r\n * @see {@link CB_GraphicSpritesScene#getGraphicSprites}\r\n */","meta":{"filename":"CB_GraphicSpritesScene.js","lineno":533,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image","code":{}},"description":"<p>Alias for {@link CB_GraphicSpritesScene#getGraphicSprites}.</p>","kind":"function","name":"get","see":["{@link CB_GraphicSpritesScene#getGraphicSprites}"],"memberof":"CB_GraphicSpritesScene","longname":"CB_GraphicSpritesScene#get","scope":"instance"},{"comment":"/**\r\n * Gets a desired {@link CB_GraphicSprites} object through its index (its position in the {@link CB_GraphicSpritesScene#spritesGroups.items} array). Faster than getting it through its identifier with the {@link CB_GraphicSpritesScene#getGraphicSpritesById} method.\r\n * @function\r\n * @param {integer} [index=0] - The index where the desired {@link CB_GraphicSprites} object must be located (its position in the {@link CB_GraphicSpritesScene#spritesGroups.items} array).\r\n * @param {*} [returnValueOnFail=undefined] - The value we want it to return in the case that no value is found. If not provided, undefined will be returned.\r\n * @returns {CB_GraphicSprites|*} Returns a {@link CB_GraphicSprites} object if found or the value of \"returnValueOnFail\" otherwise.\r\n */","meta":{"range":[36569,36977],"filename":"CB_GraphicSpritesScene.js","lineno":545,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image","code":{"id":"astnode100047914","name":"CB_GraphicSpritesScene.prototype.getGraphicSprites","type":"AssignmentExpression","value":"CB_GraphicSpritesScene.prototype.get","paramnames":[]}},"description":"<p>Gets a desired {@link CB_GraphicSprites} object through its index (its position in the {@link CB_GraphicSpritesScene#spritesGroups.items} array). Faster than getting it through its identifier with the {@link CB_GraphicSpritesScene#getGraphicSpritesById} method.</p>","kind":"function","params":[{"type":{"names":["integer"]},"optional":true,"defaultvalue":0,"description":"<p>The index where the desired {@link CB_GraphicSprites} object must be located (its position in the {@link CB_GraphicSpritesScene#spritesGroups.items} array).</p>","name":"index"},{"type":{"names":["*"]},"optional":true,"description":"<p>The value we want it to return in the case that no value is found. If not provided, undefined will be returned.</p>","name":"returnValueOnFail"}],"returns":[{"type":{"names":["CB_GraphicSprites","*"]},"description":"<p>Returns a {@link CB_GraphicSprites} object if found or the value of &quot;returnValueOnFail&quot; otherwise.</p>"}],"name":"getGraphicSprites","longname":"CB_GraphicSpritesScene#getGraphicSprites","memberof":"CB_GraphicSpritesScene","scope":"instance"},{"comment":"/**\r\n * Alias for {@link CB_GraphicSpritesScene#getGraphicSpritesById}.\r\n * @function CB_GraphicSpritesScene#getById\r\n * @see {@link CB_GraphicSpritesScene#getGraphicSpritesById}\r\n */","meta":{"filename":"CB_GraphicSpritesScene.js","lineno":554,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image","code":{}},"description":"<p>Alias for {@link CB_GraphicSpritesScene#getGraphicSpritesById}.</p>","kind":"function","name":"getById","see":["{@link CB_GraphicSpritesScene#getGraphicSpritesById}"],"memberof":"CB_GraphicSpritesScene","longname":"CB_GraphicSpritesScene#getById","scope":"instance"},{"comment":"/**\r\n * Gets a desired {@link CB_GraphicSprites} object through its identifier. Slower than getting it through its index with the {@link CB_GraphicSpritesScene#getGraphicSprites} method.\r\n * @function\r\n * @param {string|*} [id=undefined] - The identifier of the {@link CB_GraphicSprites} object that we want to get.\r\n * @param {*} [returnValueOnFail=undefined] - The value we want it to return in the case that no value is found. If not provided, undefined will be returned.\r\n * @returns {CB_GraphicSprites|*} Returns a {@link CB_GraphicSprites} object if found or the value of \"returnValueOnFail\" otherwise.\r\n */","meta":{"range":[37790,38055],"filename":"CB_GraphicSpritesScene.js","lineno":566,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image","code":{"id":"astnode100047983","name":"CB_GraphicSpritesScene.prototype.getGraphicSpritesById","type":"AssignmentExpression","value":"CB_GraphicSpritesScene.prototype.getById","paramnames":[]}},"description":"<p>Gets a desired {@link CB_GraphicSprites} object through its identifier. Slower than getting it through its index with the {@link CB_GraphicSpritesScene#getGraphicSprites} method.</p>","kind":"function","params":[{"type":{"names":["string","*"]},"optional":true,"description":"<p>The identifier of the {@link CB_GraphicSprites} object that we want to get.</p>","name":"id"},{"type":{"names":["*"]},"optional":true,"description":"<p>The value we want it to return in the case that no value is found. If not provided, undefined will be returned.</p>","name":"returnValueOnFail"}],"returns":[{"type":{"names":["CB_GraphicSprites","*"]},"description":"<p>Returns a {@link CB_GraphicSprites} object if found or the value of &quot;returnValueOnFail&quot; otherwise.</p>"}],"name":"getGraphicSpritesById","longname":"CB_GraphicSpritesScene#getGraphicSpritesById","memberof":"CB_GraphicSpritesScene","scope":"instance"},{"comment":"/**\r\n * Alias for {@link CB_GraphicSpritesScene#getGraphicSpritesIndexById}.\r\n * @function CB_GraphicSpritesScene#getIndexById\r\n * @see {@link CB_GraphicSpritesScene#getGraphicSpritesIndexById}\r\n */","meta":{"filename":"CB_GraphicSpritesScene.js","lineno":573,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image","code":{}},"description":"<p>Alias for {@link CB_GraphicSpritesScene#getGraphicSpritesIndexById}.</p>","kind":"function","name":"getIndexById","see":["{@link CB_GraphicSpritesScene#getGraphicSpritesIndexById}"],"memberof":"CB_GraphicSpritesScene","longname":"CB_GraphicSpritesScene#getIndexById","scope":"instance"},{"comment":"/**\r\n * Gets the index (the position in the {@link CB_GraphicSpritesScene#spritesGroups.items} array) of a desired {@link CB_GraphicSprites} object by its identifier.\r\n * @function\r\n * @param {string|*} [id=undefined] - The identifier of the {@link CB_GraphicSprites} object whose index we want to get.\r\n * @returns {integer} Returns the index (the position in the {@link CB_GraphicSpritesScene#spritesGroups.items} array) of the desired {@link CB_GraphicSprites} object or -1 if not found.\r\n * @todo Optimize it (perhaps using a cache matching the IDs with their position, maybe using the \"position\" or \"positionByZIndex\" properties).\r\n */","meta":{"range":[38910,39295],"filename":"CB_GraphicSpritesScene.js","lineno":585,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image","code":{"id":"astnode100048022","name":"CB_GraphicSpritesScene.prototype.getGraphicSpritesIndexById","type":"AssignmentExpression","value":"CB_GraphicSpritesScene.prototype.getIndexById","paramnames":[]}},"description":"<p>Gets the index (the position in the {@link CB_GraphicSpritesScene#spritesGroups.items} array) of a desired {@link CB_GraphicSprites} object by its identifier.</p>","kind":"function","params":[{"type":{"names":["string","*"]},"optional":true,"description":"<p>The identifier of the {@link CB_GraphicSprites} object whose index we want to get.</p>","name":"id"}],"returns":[{"type":{"names":["integer"]},"description":"<p>Returns the index (the position in the {@link CB_GraphicSpritesScene#spritesGroups.items} array) of the desired {@link CB_GraphicSprites} object or -1 if not found.</p>"}],"todo":["Optimize it (perhaps using a cache matching the IDs with their position, maybe using the \"position\" or \"positionByZIndex\" properties)."],"name":"getGraphicSpritesIndexById","longname":"CB_GraphicSpritesScene#getGraphicSpritesIndexById","memberof":"CB_GraphicSpritesScene","scope":"instance"},{"comment":"/**\r\n * Alias for {@link CB_GraphicSpritesScene#executeFunctionAll}.\r\n * @function CB_GraphicSpritesScene#executeAll\r\n * @see {@link CB_GraphicSpritesScene#executeFunctionAll}\r\n */","meta":{"filename":"CB_GraphicSpritesScene.js","lineno":599,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image","code":{}},"description":"<p>Alias for {@link CB_GraphicSpritesScene#executeFunctionAll}.</p>","kind":"function","name":"executeAll","see":["{@link CB_GraphicSpritesScene#executeFunctionAll}"],"memberof":"CB_GraphicSpritesScene","longname":"CB_GraphicSpritesScene#executeAll","scope":"instance"},{"comment":"/**\r\n * Alias for {@link CB_GraphicSpritesScene#executeFunctionAll}.\r\n * @function CB_GraphicSpritesScene#forEach\r\n * @see {@link CB_GraphicSpritesScene#executeFunctionAll}\r\n */","meta":{"filename":"CB_GraphicSpritesScene.js","lineno":604,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image","code":{}},"description":"<p>Alias for {@link CB_GraphicSpritesScene#executeFunctionAll}.</p>","kind":"function","name":"forEach","see":["{@link CB_GraphicSpritesScene#executeFunctionAll}"],"memberof":"CB_GraphicSpritesScene","longname":"CB_GraphicSpritesScene#forEach","scope":"instance"},{"comment":"/**\r\n * Alias for {@link CB_GraphicSpritesScene#executeFunctionAll}.\r\n * @function CB_GraphicSpritesScene#forEachGraphicSprites\r\n * @see {@link CB_GraphicSpritesScene#executeFunctionAll}\r\n */","meta":{"filename":"CB_GraphicSpritesScene.js","lineno":609,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image","code":{}},"description":"<p>Alias for {@link CB_GraphicSpritesScene#executeFunctionAll}.</p>","kind":"function","name":"forEachGraphicSprites","see":["{@link CB_GraphicSpritesScene#executeFunctionAll}"],"memberof":"CB_GraphicSpritesScene","longname":"CB_GraphicSpritesScene#forEachGraphicSprites","scope":"instance"},{"comment":"/**\r\n * Performs a desired action, using the provided function, on all the existing {@link CB_GraphicSprites} objects or on the desired ones (if provided). Calls the {@link CB_Arrays.executeFunctionAll} function internally and returns its returning value.\r\n * @function\r\n * @param {CB_Arrays.executeFunctionAll_ON_LOOP_CALLBACK} functionEach - Function that will be called for each {@link CB_GraphicSprites} object. As the first parameter it receives the {@link CB_GraphicSprites} object of the \"graphicSpritesObjects\" being looped, as the second parameter the position of this {@link CB_GraphicSprites} object in the \"graphicSpritesObjects\" array provided (or, if not provided, in the array returned by the {@link CB_GraphicSpritesScene#getGraphicSpritesAll} method), the third parameter is the array being looped and the fourth parameter will be the \"delayBetweenEach\" being used, being \"this\" the {@link CB_GraphicSprites} object itself.\r\n * @param {boolean} [orderedByZIndex=false] - If set to true, it will loop the {@link CB_GraphicSprites} sorted by their z-index (ascending order).\r\n * @param {number|CB_Arrays.executeFunctionAll_ON_LOOP_CALLBACK} [delayBetweenEach=0] - If a value greater than zero is used, it will be used as the delay desired between each call to the \"functionEach\" function (calling them using the [setTimeout]{@link https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/setTimeout} function internally). If not provided or the value is 0 (zero) or lower, each call to the \"functionEach\" function will be performed immediately one after the other. If a function is provided, it will be called with the same parameters as the \"functionEach\" function and its returning value will be used as the delay (executed every loop for each {@link CB_GraphicSprites} object).\r\n * @param {array} [graphicSpritesObjects={@link CB_GraphicSpritesScene#getGraphicSpritesAll}()] - A numeric array containing the {@link CB_GraphicSprites} objects that we want to loop. It should contain only {@link CB_GraphicSprites} objects which are already in the current {@link CB_GraphicSpritesScene} object. If not provided, it will use all the {@link CB_GraphicSprites} objects contained in the {@link CB_GraphicSpritesScene} object.\r\n * @param {boolean} [returnSetTimeoutsArray=false] - Defines whether we want the method to return an integer or a numeric array with information of each [setTimeout]{@link https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/setTimeout} call. Returning an array with information of each [setTimeout]{@link https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/setTimeout} call is only useful when the [setTimeout]{@link https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/setTimeout} function is called internally, which happens when the \"delayBetweenEach\" parameter is greater than 0 (zero).\r\n * @param {boolean} [delayBetweenEachAffectsFirst=false] - If set to true, the desired delay (if any) will also affect the first call to the \"functionEach\" function.\r\n * @param {CB_Arrays.executeFunctionAll_ON_FINISH_CALLBACK} [functionFinish] - Function that will be called for when it has finished looping all the items. The first parameter will be the array which was looped, the second parameter will be the number of times that the \"functionEach\" callback was called (the most likely, matches the number of elements unless they are undefined or null), and the third parameter will be the maximum \"delay\" used, being \"this\" the array itself.\r\n * @returns {integer|array} If the \"returnSetTimeoutsArray\" parameter is set to false, it will return the number of calls to the \"functionEach\" function that were performed (which should be the same number as the {@link CB_GraphicSprites} objects given in the \"graphicSpritesObjects\" parameter). Otherwise, if the \"returnSetTimeoutsArray\" is set to true, it will return a numeric array with a {@link CB_Arrays.executeFunctionAll_OBJECT} object for each {@link CB_GraphicSprites} given. The length of this array will also be the number of calls to the \"functionEach\" function that were performed. Note that if a value greater than 0 (zero) for the \"delayBetweenEach\" parameter has been provided, perhaps not all calls of the \"functionEach\" function will have been performed yet when exiting this method because of the asynchronous nature of the [setTimeout]{@link https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/setTimeout} function.\r\n * @todo Think about only allowing {@link CB_GraphicSprites} objects (in the \"graphicSpritesObjects\" parameter) which are already in the {@link CB_GraphicSpritesScene} (identify them by their ID), to avoid problems.\r\n */","meta":{"range":[44624,45229],"filename":"CB_GraphicSpritesScene.js","lineno":627,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image","code":{"id":"astnode100048088","name":"CB_GraphicSpritesScene.prototype.executeFunctionAll","type":"AssignmentExpression","value":"CB_GraphicSpritesScene.prototype.executeAll","paramnames":[]}},"description":"<p>Performs a desired action, using the provided function, on all the existing {@link CB_GraphicSprites} objects or on the desired ones (if provided). Calls the {@link CB_Arrays.executeFunctionAll} function internally and returns its returning value.</p>","kind":"function","params":[{"type":{"names":["CB_Arrays.executeFunctionAll_ON_LOOP_CALLBACK"]},"description":"<p>Function that will be called for each {@link CB_GraphicSprites} object. As the first parameter it receives the {@link CB_GraphicSprites} object of the &quot;graphicSpritesObjects&quot; being looped, as the second parameter the position of this {@link CB_GraphicSprites} object in the &quot;graphicSpritesObjects&quot; array provided (or, if not provided, in the array returned by the {@link CB_GraphicSpritesScene#getGraphicSpritesAll} method), the third parameter is the array being looped and the fourth parameter will be the &quot;delayBetweenEach&quot; being used, being &quot;this&quot; the {@link CB_GraphicSprites} object itself.</p>","name":"functionEach"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If set to true, it will loop the {@link CB_GraphicSprites} sorted by their z-index (ascending order).</p>","name":"orderedByZIndex"},{"type":{"names":["number","CB_Arrays.executeFunctionAll_ON_LOOP_CALLBACK"]},"optional":true,"defaultvalue":0,"description":"<p>If a value greater than zero is used, it will be used as the delay desired between each call to the &quot;functionEach&quot; function (calling them using the [setTimeout]{@link https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/setTimeout} function internally). If not provided or the value is 0 (zero) or lower, each call to the &quot;functionEach&quot; function will be performed immediately one after the other. If a function is provided, it will be called with the same parameters as the &quot;functionEach&quot; function and its returning value will be used as the delay (executed every loop for each {@link CB_GraphicSprites} object).</p>","name":"delayBetweenEach"},{"type":{"names":["array"]},"optional":true,"defaultvalue":"{@link CB_GraphicSpritesScene#getGraphicSpritesAll}()","description":"<p>A numeric array containing the {@link CB_GraphicSprites} objects that we want to loop. It should contain only {@link CB_GraphicSprites} objects which are already in the current {@link CB_GraphicSpritesScene} object. If not provided, it will use all the {@link CB_GraphicSprites} objects contained in the {@link CB_GraphicSpritesScene} object.</p>","name":"graphicSpritesObjects"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>Defines whether we want the method to return an integer or a numeric array with information of each [setTimeout]{@link https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/setTimeout} call. Returning an array with information of each [setTimeout]{@link https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/setTimeout} call is only useful when the [setTimeout]{@link https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/setTimeout} function is called internally, which happens when the &quot;delayBetweenEach&quot; parameter is greater than 0 (zero).</p>","name":"returnSetTimeoutsArray"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If set to true, the desired delay (if any) will also affect the first call to the &quot;functionEach&quot; function.</p>","name":"delayBetweenEachAffectsFirst"},{"type":{"names":["CB_Arrays.executeFunctionAll_ON_FINISH_CALLBACK"]},"optional":true,"description":"<p>Function that will be called for when it has finished looping all the items. The first parameter will be the array which was looped, the second parameter will be the number of times that the &quot;functionEach&quot; callback was called (the most likely, matches the number of elements unless they are undefined or null), and the third parameter will be the maximum &quot;delay&quot; used, being &quot;this&quot; the array itself.</p>","name":"functionFinish"}],"returns":[{"type":{"names":["integer","array"]},"description":"<p>If the &quot;returnSetTimeoutsArray&quot; parameter is set to false, it will return the number of calls to the &quot;functionEach&quot; function that were performed (which should be the same number as the {@link CB_GraphicSprites} objects given in the &quot;graphicSpritesObjects&quot; parameter). Otherwise, if the &quot;returnSetTimeoutsArray&quot; is set to true, it will return a numeric array with a {@link CB_Arrays.executeFunctionAll_OBJECT} object for each {@link CB_GraphicSprites} given. The length of this array will also be the number of calls to the &quot;functionEach&quot; function that were performed. Note that if a value greater than 0 (zero) for the &quot;delayBetweenEach&quot; parameter has been provided, perhaps not all calls of the &quot;functionEach&quot; function will have been performed yet when exiting this method because of the asynchronous nature of the [setTimeout]{@link https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/setTimeout} function.</p>"}],"todo":["Think about only allowing {@link CB_GraphicSprites} objects (in the \"graphicSpritesObjects\" parameter) which are already in the {@link CB_GraphicSpritesScene} (identify them by their ID), to avoid problems."],"name":"executeFunctionAll","longname":"CB_GraphicSpritesScene#executeFunctionAll","memberof":"CB_GraphicSpritesScene","scope":"instance"},{"comment":"/**\r\n * Sets the desired value of a given property name to the {@link CB_GraphicSpritesScene.SPRITES_GROUPS_OBJECT} object as well to its {@link CB_GraphicSprites} objects and their children (their {@link CB_GraphicSprites.SPRITES_OBJECT} object, including their {@link CB_GraphicSprites.SPRITE_OBJECT} and their {@link CB_GraphicSprites.SUBSPRITE_OBJECT} objects). Calls the {@link CB_GraphicSprites#setPropertyCascade} method internally.\r\n * @function\r\n * @param {number} propertyName - The name of the property we want to affect. Also used as the \"propertyName\" parameter when calling the {@link CB_GraphicSprites#setPropertyCascade} method internally.\r\n * @param {*} [value=undefined] - The value desired for the given property. Also used as the \"value\" parameter when calling the {@link CB_GraphicSprites#setPropertyCascade} method internally.\r\n * @param {boolean} [onlyCurrent=false] - If set to true, it will only affect the current sprite and its sub-sprites of each {@link CB_GraphicSprites} object (and also the {@link CB_GraphicSpritesScene.SPRITES_GROUPS_OBJECT} object and the {@link CB_GraphicSprites.SPRITES_OBJECT} object of each {@link CB_GraphicSprites} object). Used as the \"propertyName\" parameter when calling the {@link CB_GraphicSprites#setPropertyCascade} method internally.\r\n * @returns {integer} Returns the number of elements affected (counting the {@link CB_GraphicSpritesScene.SPRITES_GROUPS_OBJECT} object and the {@link CB_GraphicSprites.SPRITES_OBJECT} objects).\r\n */","meta":{"range":[46741,47085],"filename":"CB_GraphicSpritesScene.js","lineno":641,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image","code":{"id":"astnode100048143","name":"CB_GraphicSpritesScene.prototype.setPropertyCascade","type":"FunctionExpression","paramnames":["propertyName","value","onlyCurrent"]},"vars":{"this.spritesGroups[undefined]":"CB_GraphicSpritesScene#spritesGroups[undefined]","affected":"CB_GraphicSpritesScene#setPropertyCascade~affected","":null}},"description":"<p>Sets the desired value of a given property name to the {@link CB_GraphicSpritesScene.SPRITES_GROUPS_OBJECT} object as well to its {@link CB_GraphicSprites} objects and their children (their {@link CB_GraphicSprites.SPRITES_OBJECT} object, including their {@link CB_GraphicSprites.SPRITE_OBJECT} and their {@link CB_GraphicSprites.SUBSPRITE_OBJECT} objects). Calls the {@link CB_GraphicSprites#setPropertyCascade} method internally.</p>","kind":"function","params":[{"type":{"names":["number"]},"description":"<p>The name of the property we want to affect. Also used as the &quot;propertyName&quot; parameter when calling the {@link CB_GraphicSprites#setPropertyCascade} method internally.</p>","name":"propertyName"},{"type":{"names":["*"]},"optional":true,"description":"<p>The value desired for the given property. Also used as the &quot;value&quot; parameter when calling the {@link CB_GraphicSprites#setPropertyCascade} method internally.</p>","name":"value"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If set to true, it will only affect the current sprite and its sub-sprites of each {@link CB_GraphicSprites} object (and also the {@link CB_GraphicSpritesScene.SPRITES_GROUPS_OBJECT} object and the {@link CB_GraphicSprites.SPRITES_OBJECT} object of each {@link CB_GraphicSprites} object). Used as the &quot;propertyName&quot; parameter when calling the {@link CB_GraphicSprites#setPropertyCascade} method internally.</p>","name":"onlyCurrent"}],"returns":[{"type":{"names":["integer"]},"description":"<p>Returns the number of elements affected (counting the {@link CB_GraphicSpritesScene.SPRITES_GROUPS_OBJECT} object and the {@link CB_GraphicSprites.SPRITES_OBJECT} objects).</p>"}],"name":"setPropertyCascade","longname":"CB_GraphicSpritesScene#setPropertyCascade","memberof":"CB_GraphicSpritesScene","scope":"instance"},{"comment":"/**\r\n * Gets a new copy of this object with the same attributes (all sub-objects will be a copy, they will not the same reference).\r\n * @function\r\n * @param {boolean} [avoidCopyingPointers=false] - If set to true, it will not copy the {@link CB_GraphicSprites#pointer} property of each {@link CB_GraphicSprites} object.\r\n * @param {boolean} [avoidCopyingTimes=false] - If set to true, it will not copy neither the {@link CB_GraphicSprites#time} property of each {@link CB_GraphicSprites} object nor the \"time\" property of each of their sprites ({@link CB_GraphicSprites.SPRITE_OBJECT} objects).\r\n * @param {boolean} [clearReferences=false] - If set to true, it will not copy neither the \"container\" nor the \"parent\" nor the \"data.that\" nor the \"data.getThis\" properties of any element. Useful to be able to stringify the object preventing the \"TypeError: cyclic object value\" error. When set to true, calls the {@link CB_GraphicSprites.clearReferences} function internally. If set to true and the \"filterProperties\" parameter is also set to true, the {@link CB_GraphicSprites.filterProperties} will always be called before calling the {@link CB_GraphicSprites.clearReferences} function.\r\n * @param {boolean} [filterProperties=false] - If set to true, it will call the {@link CB_GraphicSprites.filterProperties} function internally to filter the properties that we do not want to keep (using the given \"propertiesToKeepObject\" as the parameter to call it). When set to true, calls the {@link CB_GraphicSprites.filterProperties} function internally. If set to true and the \"clearReferences\" parameter is also set to true, the {@link CB_GraphicSprites.filterProperties} will always be called before calling the {@link CB_GraphicSprites.clearReferences} function.\r\n * @param {CB_GraphicSprites.filterProperties_propertiesToKeepObject_TYPE} [propertiesToKeepObject=CB_GraphicSprites.filterProperties_DEFAULT_PROPERTIES] - The object with the properties that we want to keep. Only used when the \"filterProperties\" parameter is set to true, as the \"propertiesToKeepObject\" when calling the {@link CB_GraphicSprites.filterProperties} function internally.\r\n * @returns {CB_GraphicSpritesScene} Returns a copy of this object with the same attributes (all sub-objects will be a copy, not the same reference).\r\n */","meta":{"range":[49402,51794],"filename":"CB_GraphicSpritesScene.js","lineno":664,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image","code":{"id":"astnode100048191","name":"CB_GraphicSpritesScene.prototype.getCopy","type":"FunctionExpression","paramnames":["avoidCopyingPointers","avoidCopyingTimes","clearReferences","filterProperties","propertiesToKeepObject"]},"vars":{"spritesGroupsCopy":"CB_GraphicSpritesScene#getCopy~spritesGroupsCopy","newCopy":"CB_GraphicSpritesScene#getCopy~newCopy","":null,"newCopy.parent":"CB_GraphicSpritesScene#getCopy~newCopy.parent"}},"description":"<p>Gets a new copy of this object with the same attributes (all sub-objects will be a copy, they will not the same reference).</p>","kind":"function","params":[{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If set to true, it will not copy the {@link CB_GraphicSprites#pointer} property of each {@link CB_GraphicSprites} object.</p>","name":"avoidCopyingPointers"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If set to true, it will not copy neither the {@link CB_GraphicSprites#time} property of each {@link CB_GraphicSprites} object nor the &quot;time&quot; property of each of their sprites ({@link CB_GraphicSprites.SPRITE_OBJECT} objects).</p>","name":"avoidCopyingTimes"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If set to true, it will not copy neither the &quot;container&quot; nor the &quot;parent&quot; nor the &quot;data.that&quot; nor the &quot;data.getThis&quot; properties of any element. Useful to be able to stringify the object preventing the &quot;TypeError: cyclic object value&quot; error. When set to true, calls the {@link CB_GraphicSprites.clearReferences} function internally. If set to true and the &quot;filterProperties&quot; parameter is also set to true, the {@link CB_GraphicSprites.filterProperties} will always be called before calling the {@link CB_GraphicSprites.clearReferences} function.</p>","name":"clearReferences"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If set to true, it will call the {@link CB_GraphicSprites.filterProperties} function internally to filter the properties that we do not want to keep (using the given &quot;propertiesToKeepObject&quot; as the parameter to call it). When set to true, calls the {@link CB_GraphicSprites.filterProperties} function internally. If set to true and the &quot;clearReferences&quot; parameter is also set to true, the {@link CB_GraphicSprites.filterProperties} will always be called before calling the {@link CB_GraphicSprites.clearReferences} function.</p>","name":"filterProperties"},{"type":{"names":["CB_GraphicSprites.filterProperties_propertiesToKeepObject_TYPE"]},"optional":true,"defaultvalue":"CB_GraphicSprites.filterProperties_DEFAULT_PROPERTIES","description":"<p>The object with the properties that we want to keep. Only used when the &quot;filterProperties&quot; parameter is set to true, as the &quot;propertiesToKeepObject&quot; when calling the {@link CB_GraphicSprites.filterProperties} function internally.</p>","name":"propertiesToKeepObject"}],"returns":[{"type":{"names":["CB_GraphicSpritesScene"]},"description":"<p>Returns a copy of this object with the same attributes (all sub-objects will be a copy, not the same reference).</p>"}],"name":"getCopy","longname":"CB_GraphicSpritesScene#getCopy","memberof":"CB_GraphicSpritesScene","scope":"instance"},{"comment":"/**\r\n * @file Screen management. Contains the {@link CB_Screen} static class.\r\n * @author Joan Alba Maldonado <workindalian@gmail.com>\r\n */","meta":{"filename":"CB_Screen.js","lineno":1,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image","code":{}},"name":"CrossBase/audiovisual/image/CB_Screen.js","kind":"file","description":"<p>Screen management. Contains the {@link CB_Screen} static class.</p>","preserveName":true,"author":["Joan Alba Maldonado <workindalian@gmail.com>"],"longname":"CrossBase/audiovisual/image/CB_Screen.js","scope":"global"},{"comment":"/**\r\n * Static class to manage the screen. It will return itself if it is tried to be instantiated. It can use [detect-zoom]{@link https://github.com/tombigel/detect-zoom} and [NoSleep.js]{@link https://github.com/richtr/NoSleep.js?utm_source=recordnotfound.com}.\r\n * @namespace\r\n */","meta":{"range":[435,479],"filename":"CB_Screen.js","lineno":11,"columnno":4,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image","code":{"id":"astnode100048450","name":"CB_Screen","type":"FunctionExpression"}},"description":"<p>Static class to manage the screen. It will return itself if it is tried to be instantiated. It can use [detect-zoom]{@link https://github.com/tombigel/detect-zoom} and [NoSleep.js]{@link https://github.com/richtr/NoSleep.js?utm_source=recordnotfound.com}.</p>","kind":"namespace","name":"CB_Screen","longname":"CB_Screen","scope":"global","params":[]},{"comment":"/**\r\n\t * Gets the current screen width (horizontal resolution). Uses the [window.screen.width]{@link https://developer.mozilla.org/en-US/docs/Web/API/Screen/width} property internally, when possible.\r\n\t * @function\r\n\t * @returns {number} Returns the current screen width (horizontal resolution) in pixels.\r\n\t */","meta":{"range":[11329,11512],"filename":"CB_Screen.js","lineno":171,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image","code":{"id":"astnode100049148","name":"CB_Screen.getWidth","type":"FunctionExpression","paramnames":[]},"vars":{"CB_Screen._screenWidth":"CB_Screen._screenWidth"}},"description":"<p>Gets the current screen width (horizontal resolution). Uses the [window.screen.width]{@link https://developer.mozilla.org/en-US/docs/Web/API/Screen/width} property internally, when possible.</p>","kind":"function","returns":[{"type":{"names":["number"]},"description":"<p>Returns the current screen width (horizontal resolution) in pixels.</p>"}],"name":"getWidth","longname":"CB_Screen.getWidth","memberof":"CB_Screen","scope":"static"},{"comment":"/**\r\n\t * Gets the current screen height (vertical resolution). Uses the [window.screen.height]{@link https://developer.mozilla.org/en-US/docs/Web/API/Screen/height} property internally, when possible.\r\n\t * @function\r\n\t * @returns {number} Returns the current screen height (vertical resolution) in pixels.\r\n\t */","meta":{"range":[11835,12024],"filename":"CB_Screen.js","lineno":187,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image","code":{"id":"astnode100049181","name":"CB_Screen.getHeight","type":"FunctionExpression","paramnames":[]},"vars":{"CB_Screen._screenHeight":"CB_Screen._screenHeight"}},"description":"<p>Gets the current screen height (vertical resolution). Uses the [window.screen.height]{@link https://developer.mozilla.org/en-US/docs/Web/API/Screen/height} property internally, when possible.</p>","kind":"function","returns":[{"type":{"names":["number"]},"description":"<p>Returns the current screen height (vertical resolution) in pixels.</p>"}],"name":"getHeight","longname":"CB_Screen.getHeight","memberof":"CB_Screen","scope":"static"},{"comment":"/**\r\n\t * Gets the previous screen width (horizontal resolution). Calculated through the [window.screen.width]{@link https://developer.mozilla.org/en-US/docs/Web/API/Screen/width} property internally, when possible. Useful when the resolution (screen size and/or orientation) changed.\r\n\t * @function\r\n\t * @returns {number} Returns the previous screen width (horizontal resolution) in pixels.\r\n\t */","meta":{"range":[12432,12625],"filename":"CB_Screen.js","lineno":203,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image","code":{"id":"astnode100049214","name":"CB_Screen.getWidthPrevious","type":"FunctionExpression","paramnames":[]},"vars":{"CB_Screen._previousScreenWidth":"CB_Screen._previousScreenWidth"}},"description":"<p>Gets the previous screen width (horizontal resolution). Calculated through the [window.screen.width]{@link https://developer.mozilla.org/en-US/docs/Web/API/Screen/width} property internally, when possible. Useful when the resolution (screen size and/or orientation) changed.</p>","kind":"function","returns":[{"type":{"names":["number"]},"description":"<p>Returns the previous screen width (horizontal resolution) in pixels.</p>"}],"name":"getWidthPrevious","longname":"CB_Screen.getWidthPrevious","memberof":"CB_Screen","scope":"static"},{"comment":"/**\r\n\t * Gets the previous screen height (vertical resolution). Calculated through the [window.screen.height]{@link https://developer.mozilla.org/en-US/docs/Web/API/Screen/height} property internally, when possible. Useful when the resolution (screen size and/or orientation) changed.\r\n\t * @function\r\n\t * @returns {number} Returns the previous screen height (vertical resolution) in pixels.\r\n\t */","meta":{"range":[13033,13231],"filename":"CB_Screen.js","lineno":215,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image","code":{"id":"astnode100049241","name":"CB_Screen.getHeightPrevious","type":"FunctionExpression","paramnames":[]},"vars":{"CB_Screen._previousScreenHeight":"CB_Screen._previousScreenHeight"}},"description":"<p>Gets the previous screen height (vertical resolution). Calculated through the [window.screen.height]{@link https://developer.mozilla.org/en-US/docs/Web/API/Screen/height} property internally, when possible. Useful when the resolution (screen size and/or orientation) changed.</p>","kind":"function","returns":[{"type":{"names":["number"]},"description":"<p>Returns the previous screen height (vertical resolution) in pixels.</p>"}],"name":"getHeightPrevious","longname":"CB_Screen.getHeightPrevious","memberof":"CB_Screen","scope":"static"},{"comment":"/**\r\n\t * Gets the current available screen width (horizontal resolution). Uses the [window.screen.availWidth]{@link https://developer.mozilla.org/en-US/docs/Web/API/Screen/availWidth} property internally, when possible.\r\n\t * @function\r\n\t * @returns {number} Returns the current available screen width (horizontal resolution) in pixels.\r\n\t */","meta":{"range":[13584,13809],"filename":"CB_Screen.js","lineno":227,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image","code":{"id":"astnode100049268","name":"CB_Screen.getAvailableWidth","type":"FunctionExpression","paramnames":[]},"vars":{"CB_Screen._screenAvailableWidth":"CB_Screen._screenAvailableWidth"}},"description":"<p>Gets the current available screen width (horizontal resolution). Uses the [window.screen.availWidth]{@link https://developer.mozilla.org/en-US/docs/Web/API/Screen/availWidth} property internally, when possible.</p>","kind":"function","returns":[{"type":{"names":["number"]},"description":"<p>Returns the current available screen width (horizontal resolution) in pixels.</p>"}],"name":"getAvailableWidth","longname":"CB_Screen.getAvailableWidth","memberof":"CB_Screen","scope":"static"},{"comment":"/**\r\n\t * Gets the current available screen height (vertical resolution). Uses the [window.screen.availHeight]{@link https://developer.mozilla.org/en-US/docs/Web/API/Screen/availHeight} property internally, when possible.\r\n\t * @function\r\n\t * @returns {number} Returns the current available screen height (vertical resolution) in pixels.\r\n\t */","meta":{"range":[14162,14393],"filename":"CB_Screen.js","lineno":243,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image","code":{"id":"astnode100049301","name":"CB_Screen.getAvailableHeight","type":"FunctionExpression","paramnames":[]},"vars":{"CB_Screen._screenAvailableHeight":"CB_Screen._screenAvailableHeight"}},"description":"<p>Gets the current available screen height (vertical resolution). Uses the [window.screen.availHeight]{@link https://developer.mozilla.org/en-US/docs/Web/API/Screen/availHeight} property internally, when possible.</p>","kind":"function","returns":[{"type":{"names":["number"]},"description":"<p>Returns the current available screen height (vertical resolution) in pixels.</p>"}],"name":"getAvailableHeight","longname":"CB_Screen.getAvailableHeight","memberof":"CB_Screen","scope":"static"},{"comment":"/**\r\n\t * Gets the previous available screen width (horizontal resolution). Useful when the resolution (screen size and/or orientation) changed. Uses the [window.screen.availWidth]{@link https://developer.mozilla.org/en-US/docs/Web/API/Screen/availWidth} property internally, when possible.\r\n\t * @function\r\n\t * @returns {number} Returns the previous available screen width (horizontal resolution) in pixels.\r\n\t */","meta":{"range":[14817,15055],"filename":"CB_Screen.js","lineno":259,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image","code":{"id":"astnode100049334","name":"CB_Screen.getAvailableWidthPrevious","type":"FunctionExpression","paramnames":[]},"vars":{"CB_Screen._previousScreenAvailableWidth":"CB_Screen._previousScreenAvailableWidth"}},"description":"<p>Gets the previous available screen width (horizontal resolution). Useful when the resolution (screen size and/or orientation) changed. Uses the [window.screen.availWidth]{@link https://developer.mozilla.org/en-US/docs/Web/API/Screen/availWidth} property internally, when possible.</p>","kind":"function","returns":[{"type":{"names":["number"]},"description":"<p>Returns the previous available screen width (horizontal resolution) in pixels.</p>"}],"name":"getAvailableWidthPrevious","longname":"CB_Screen.getAvailableWidthPrevious","memberof":"CB_Screen","scope":"static"},{"comment":"/**\r\n\t * Gets the previous available screen height (vertical resolution). Useful when the resolution (screen size and/or orientation) changed. Uses the [window.screen.availHeight]{@link https://developer.mozilla.org/en-US/docs/Web/API/Screen/availHeight} property internally, when possible.\r\n\t * @function\r\n\t * @returns {number} Returns the previous available screen height (vertical resolution) in pixels.\r\n\t */","meta":{"range":[15479,15722],"filename":"CB_Screen.js","lineno":271,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image","code":{"id":"astnode100049361","name":"CB_Screen.getAvailableHeightPrevious","type":"FunctionExpression","paramnames":[]},"vars":{"CB_Screen._previousScreenAvailableHeight":"CB_Screen._previousScreenAvailableHeight"}},"description":"<p>Gets the previous available screen height (vertical resolution). Useful when the resolution (screen size and/or orientation) changed. Uses the [window.screen.availHeight]{@link https://developer.mozilla.org/en-US/docs/Web/API/Screen/availHeight} property internally, when possible.</p>","kind":"function","returns":[{"type":{"names":["number"]},"description":"<p>Returns the previous available screen height (vertical resolution) in pixels.</p>"}],"name":"getAvailableHeightPrevious","longname":"CB_Screen.getAvailableHeightPrevious","memberof":"CB_Screen","scope":"static"},{"comment":"/**\r\n\t * Gets the current window width (horizontal resolution). Internally, uses the [window.innerWidth]{@link https://developer.mozilla.org/en-US/docs/Web/API/Window/innerWidth} if possible and fallbacks to [document.documentElement.clientWidth]{@link https://developer.mozilla.org/en-US/docs/Web/API/Element/clientWidth} or [document.body.clientWidth]{@link https://developer.mozilla.org/en-US/docs/Web/API/Element/clientWidth} property otherwise, when possible.\r\n\t * @function\r\n\t * @returns {number} Returns the current window width (horizontal resolution) in pixels.\r\n\t */","meta":{"range":[16310,16979],"filename":"CB_Screen.js","lineno":283,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image","code":{"id":"astnode100049388","name":"CB_Screen.getWindowWidth","type":"FunctionExpression","paramnames":[]},"vars":{"CB_Screen._windowWidth":"CB_Screen._windowWidth"}},"description":"<p>Gets the current window width (horizontal resolution). Internally, uses the [window.innerWidth]{@link https://developer.mozilla.org/en-US/docs/Web/API/Window/innerWidth} if possible and fallbacks to [document.documentElement.clientWidth]{@link https://developer.mozilla.org/en-US/docs/Web/API/Element/clientWidth} or [document.body.clientWidth]{@link https://developer.mozilla.org/en-US/docs/Web/API/Element/clientWidth} property otherwise, when possible.</p>","kind":"function","returns":[{"type":{"names":["number"]},"description":"<p>Returns the current window width (horizontal resolution) in pixels.</p>"}],"name":"getWindowWidth","longname":"CB_Screen.getWindowWidth","memberof":"CB_Screen","scope":"static"},{"comment":"/**\r\n\t * Gets the current window height (vertical resolution). Internally, uses the [window.innerHeight]{@link https://developer.mozilla.org/en-US/docs/Web/API/Window/innerHeight} if possible and fallbacks to [document.documentElement.clientHeight]{@link https://developer.mozilla.org/en-US/docs/Web/API/Element/clientHeight} or [document.body.clientHeight]{@link https://developer.mozilla.org/en-US/docs/Web/API/Element/clientHeight} property otherwise, when possible.\r\n\t * @function\r\n\t * @returns {number} Returns the current window height (vertical resolution) in pixels.\r\n\t */","meta":{"range":[17571,18256],"filename":"CB_Screen.js","lineno":306,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image","code":{"id":"astnode100049501","name":"CB_Screen.getWindowHeight","type":"FunctionExpression","paramnames":[]},"vars":{"CB_Screen._windowHeight":"CB_Screen._windowHeight"}},"description":"<p>Gets the current window height (vertical resolution). Internally, uses the [window.innerHeight]{@link https://developer.mozilla.org/en-US/docs/Web/API/Window/innerHeight} if possible and fallbacks to [document.documentElement.clientHeight]{@link https://developer.mozilla.org/en-US/docs/Web/API/Element/clientHeight} or [document.body.clientHeight]{@link https://developer.mozilla.org/en-US/docs/Web/API/Element/clientHeight} property otherwise, when possible.</p>","kind":"function","returns":[{"type":{"names":["number"]},"description":"<p>Returns the current window height (vertical resolution) in pixels.</p>"}],"name":"getWindowHeight","longname":"CB_Screen.getWindowHeight","memberof":"CB_Screen","scope":"static"},{"comment":"/**\r\n\t * Gets the previous window width (horizontal resolution). Useful when the resolution (screen size and/or orientation) or window size changed. Internally, uses the [window.innerWidth]{@link https://developer.mozilla.org/en-US/docs/Web/API/Window/innerWidth} if possible and fallbacks to [document.documentElement.clientWidth]{@link https://developer.mozilla.org/en-US/docs/Web/API/Element/clientWidth} or [document.body.clientWidth]{@link https://developer.mozilla.org/en-US/docs/Web/API/Element/clientWidth} property otherwise, when possible.\r\n\t * @function\r\n\t * @returns {number} Returns the previous window width (horizontal resolution) in pixels.\r\n\t */","meta":{"range":[18930,19135],"filename":"CB_Screen.js","lineno":329,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image","code":{"id":"astnode100049614","name":"CB_Screen.getWindowWidthPrevious","type":"FunctionExpression","paramnames":[]},"vars":{"CB_Screen._previousWindowWidth":"CB_Screen._previousWindowWidth"}},"description":"<p>Gets the previous window width (horizontal resolution). Useful when the resolution (screen size and/or orientation) or window size changed. Internally, uses the [window.innerWidth]{@link https://developer.mozilla.org/en-US/docs/Web/API/Window/innerWidth} if possible and fallbacks to [document.documentElement.clientWidth]{@link https://developer.mozilla.org/en-US/docs/Web/API/Element/clientWidth} or [document.body.clientWidth]{@link https://developer.mozilla.org/en-US/docs/Web/API/Element/clientWidth} property otherwise, when possible.</p>","kind":"function","returns":[{"type":{"names":["number"]},"description":"<p>Returns the previous window width (horizontal resolution) in pixels.</p>"}],"name":"getWindowWidthPrevious","longname":"CB_Screen.getWindowWidthPrevious","memberof":"CB_Screen","scope":"static"},{"comment":"/**\r\n\t * Gets the previous window height (vertical resolution). Useful when the resolution (screen size and/or orientation) or window size changed. Internally, uses the [window.innerHeight]{@link https://developer.mozilla.org/en-US/docs/Web/API/Window/innerHeight} if possible and fallbacks to [document.documentElement.clientHeight]{@link https://developer.mozilla.org/en-US/docs/Web/API/Element/clientHeight} or [document.body.clientHeight]{@link https://developer.mozilla.org/en-US/docs/Web/API/Element/clientHeight} property otherwise, when possible.\r\n\t * @function\r\n\t * @returns {number} Returns the previous window height (vertical resolution) in pixels.\r\n\t */","meta":{"range":[19813,20023],"filename":"CB_Screen.js","lineno":341,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image","code":{"id":"astnode100049641","name":"CB_Screen.getWindowHeightPrevious","type":"FunctionExpression","paramnames":[]},"vars":{"CB_Screen._previousWindowHeight":"CB_Screen._previousWindowHeight"}},"description":"<p>Gets the previous window height (vertical resolution). Useful when the resolution (screen size and/or orientation) or window size changed. Internally, uses the [window.innerHeight]{@link https://developer.mozilla.org/en-US/docs/Web/API/Window/innerHeight} if possible and fallbacks to [document.documentElement.clientHeight]{@link https://developer.mozilla.org/en-US/docs/Web/API/Element/clientHeight} or [document.body.clientHeight]{@link https://developer.mozilla.org/en-US/docs/Web/API/Element/clientHeight} property otherwise, when possible.</p>","kind":"function","returns":[{"type":{"names":["number"]},"description":"<p>Returns the previous window height (vertical resolution) in pixels.</p>"}],"name":"getWindowHeightPrevious","longname":"CB_Screen.getWindowHeightPrevious","memberof":"CB_Screen","scope":"static"},{"comment":"/**\r\n\t * Gets the current color depth. Uses the [window.screen.colorDepth]{@link https://developer.mozilla.org/en-US/docs/Web/API/Screen/colorDepth} property internally, when possible.\r\n\t * @function\r\n\t * @returns {number} Returns the current color depth.\r\n\t */","meta":{"range":[20296,20507],"filename":"CB_Screen.js","lineno":353,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image","code":{"id":"astnode100049668","name":"CB_Screen.getColorDepth","type":"FunctionExpression","paramnames":[]},"vars":{"CB_Screen._screenColorDepth":"CB_Screen._screenColorDepth"}},"description":"<p>Gets the current color depth. Uses the [window.screen.colorDepth]{@link https://developer.mozilla.org/en-US/docs/Web/API/Screen/colorDepth} property internally, when possible.</p>","kind":"function","returns":[{"type":{"names":["number"]},"description":"<p>Returns the current color depth.</p>"}],"name":"getColorDepth","longname":"CB_Screen.getColorDepth","memberof":"CB_Screen","scope":"static"},{"comment":"/**\r\n\t * Gets the current scroll left position (horizontal scroll) of the screen (main window). Uses the {@link CB_Elements.getScrollLeftById} function internally.\r\n\t * @function\r\n\t * @returns {number|null} Returns the current scroll left position (horizontal scroll) of the screen (main window). It could return null if something fails.\r\n\t */","meta":{"range":[20862,21708],"filename":"CB_Screen.js","lineno":368,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image","code":{"id":"astnode100049701","name":"CB_Screen.getScrollLeft","type":"FunctionExpression","paramnames":[]},"vars":{"CB_Screen._previousScrollLeft":"CB_Screen._previousScrollLeft","":null}},"description":"<p>Gets the current scroll left position (horizontal scroll) of the screen (main window). Uses the {@link CB_Elements.getScrollLeftById} function internally.</p>","kind":"function","returns":[{"type":{"names":["number","null"]},"description":"<p>Returns the current scroll left position (horizontal scroll) of the screen (main window). It could return null if something fails.</p>"}],"name":"getScrollLeft","longname":"CB_Screen.getScrollLeft","memberof":"CB_Screen","scope":"static"},{"comment":"/**\r\n\t * Gets the current scroll top position (vertical scroll) of the screen (main window). Uses the {@link CB_Elements.getScrollTopById} function internally.\r\n\t * @function\r\n\t * @returns {number|null} Returns the current scroll top position (vertical scroll) of the screen (main window). It could return null if something fails.\r\n\t */","meta":{"range":[22056,22890],"filename":"CB_Screen.js","lineno":401,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image","code":{"id":"astnode100049766","name":"CB_Screen.getScrollTop","type":"FunctionExpression","paramnames":[]},"vars":{"CB_Screen._previousScrollTop":"CB_Screen._previousScrollTop","":null}},"description":"<p>Gets the current scroll top position (vertical scroll) of the screen (main window). Uses the {@link CB_Elements.getScrollTopById} function internally.</p>","kind":"function","returns":[{"type":{"names":["number","null"]},"description":"<p>Returns the current scroll top position (vertical scroll) of the screen (main window). It could return null if something fails.</p>"}],"name":"getScrollTop","longname":"CB_Screen.getScrollTop","memberof":"CB_Screen","scope":"static"},{"comment":"/**\r\n\t * Gets the current zoom level of the screen (main window). Uses [detect-zoom]{@link https://github.com/tombigel/detect-zoom} internally.\r\n\t * @function\r\n\t * @returns {number} Returns the current zoom level of the screen (main window). Default zoom level is 1 (one) even when it fails.\r\n\t * @todo Find a better and more-compatible way to detect zoom which supports as many web clients as possible.\r\n\t */","meta":{"range":[23312,24026],"filename":"CB_Screen.js","lineno":435,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image","code":{"id":"astnode100049831","name":"CB_Screen.getZoom","type":"FunctionExpression","paramnames":[]},"vars":{"CB_Screen._zoom":"CB_Screen._zoom","CB_Screen._previousZoom":"CB_Screen._previousZoom"}},"description":"<p>Gets the current zoom level of the screen (main window). Uses [detect-zoom]{@link https://github.com/tombigel/detect-zoom} internally.</p>","kind":"function","returns":[{"type":{"names":["number"]},"description":"<p>Returns the current zoom level of the screen (main window). Default zoom level is 1 (one) even when it fails.</p>"}],"todo":["Find a better and more-compatible way to detect zoom which supports as many web clients as possible."],"name":"getZoom","longname":"CB_Screen.getZoom","memberof":"CB_Screen","scope":"static"},{"comment":"/**\r\n\t * Gets the previous zoom level of the screen (main window). Useful when the zoom changed. Uses [detect-zoom]{@link https://github.com/tombigel/detect-zoom} internally.\r\n\t * @function\r\n\t * @returns {number} Returns the previous zoom level of the screen (main window). Default previous zoom level is 0 (zero) even when it fails.\r\n\t */","meta":{"range":[24378,24459],"filename":"CB_Screen.js","lineno":454,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image","code":{"id":"astnode100049891","name":"CB_Screen.getZoomPrevious","type":"FunctionExpression","paramnames":[]}},"description":"<p>Gets the previous zoom level of the screen (main window). Useful when the zoom changed. Uses [detect-zoom]{@link https://github.com/tombigel/detect-zoom} internally.</p>","kind":"function","returns":[{"type":{"names":["number"]},"description":"<p>Returns the previous zoom level of the screen (main window). Default previous zoom level is 0 (zero) even when it fails.</p>"}],"name":"getZoomPrevious","longname":"CB_Screen.getZoomPrevious","memberof":"CB_Screen","scope":"static"},{"comment":"/**\r\n\t * Gets the current pixel ratio of the screen (main window). Uses [detect-zoom]{@link https://github.com/tombigel/detect-zoom} internally.\r\n\t * @function\r\n\t * @returns {number} Returns the current pixel ratio of the screen (main window). Default pixel ratio is 1 (one) even when it fails.\r\n\t * @todo Find a better and more-compatible way to detect pixel ratio which supports as many web clients as possible.\r\n\t */","meta":{"range":[24892,25696],"filename":"CB_Screen.js","lineno":466,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image","code":{"id":"astnode100049902","name":"CB_Screen.getPixelRatio","type":"FunctionExpression","paramnames":[]},"vars":{"CB_Screen._pixelRatio":"CB_Screen._pixelRatio","CB_Screen._previousPixelRatio":"CB_Screen._previousPixelRatio"}},"description":"<p>Gets the current pixel ratio of the screen (main window). Uses [detect-zoom]{@link https://github.com/tombigel/detect-zoom} internally.</p>","kind":"function","returns":[{"type":{"names":["number"]},"description":"<p>Returns the current pixel ratio of the screen (main window). Default pixel ratio is 1 (one) even when it fails.</p>"}],"todo":["Find a better and more-compatible way to detect pixel ratio which supports as many web clients as possible."],"name":"getPixelRatio","longname":"CB_Screen.getPixelRatio","memberof":"CB_Screen","scope":"static"},{"comment":"/**\r\n\t * Gets the previous pixel ratio of the screen (main window). Useful when the zoom/pixel-ratio changed. Uses [detect-zoom]{@link https://github.com/tombigel/detect-zoom} internally.\r\n\t * @function\r\n\t * @returns {number} Returns the previous pixel ratio of the screen (main window). Default previous pixel ratio is 0 (zero) even when it fails.\r\n\t * @todo Find a better and more-compatible way to detect pixel ratio which supports as many web clients as possible.\r\n\t */","meta":{"range":[26183,26276],"filename":"CB_Screen.js","lineno":486,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image","code":{"id":"astnode100049962","name":"CB_Screen.getPixelRatioPrevious","type":"FunctionExpression","paramnames":[]}},"description":"<p>Gets the previous pixel ratio of the screen (main window). Useful when the zoom/pixel-ratio changed. Uses [detect-zoom]{@link https://github.com/tombigel/detect-zoom} internally.</p>","kind":"function","returns":[{"type":{"names":["number"]},"description":"<p>Returns the previous pixel ratio of the screen (main window). Default previous pixel ratio is 0 (zero) even when it fails.</p>"}],"todo":["Find a better and more-compatible way to detect pixel ratio which supports as many web clients as possible."],"name":"getPixelRatioPrevious","longname":"CB_Screen.getPixelRatioPrevious","memberof":"CB_Screen","scope":"static"},{"comment":"/**\r\n\t * Tells whether the screen (main window) is in landscape position.\r\n\t * @function\r\n\t * @returns {boolean} Returns whether the screen is in landscape position.\r\n\t */","meta":{"range":[26459,27275],"filename":"CB_Screen.js","lineno":497,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image","code":{"id":"astnode100049973","name":"CB_Screen.isLandscape","type":"FunctionExpression","paramnames":[]},"vars":{"isLandscape":"CB_Screen.isLandscape~isLandscape","CB_Screen._isLandscape":"CB_Screen._isLandscape"}},"description":"<p>Tells whether the screen (main window) is in landscape position.</p>","kind":"function","returns":[{"type":{"names":["boolean"]},"description":"<p>Returns whether the screen is in landscape position.</p>"}],"name":"isLandscape","longname":"CB_Screen.isLandscape","memberof":"CB_Screen","scope":"static"},{"comment":"/**\r\n\t * Tells whether the main window is visible or not.\r\n\t * @function\r\n\t * @returns {boolean} Returns whether the main window is visible or not.\r\n\t */","meta":{"range":[28920,28992],"filename":"CB_Screen.js","lineno":584,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image","code":{"id":"astnode100050161","name":"CB_Screen.isVisible","type":"FunctionExpression","paramnames":[]}},"description":"<p>Tells whether the main window is visible or not.</p>","kind":"function","returns":[{"type":{"names":["boolean"]},"description":"<p>Returns whether the main window is visible or not.</p>"}],"name":"isVisible","longname":"CB_Screen.isVisible","memberof":"CB_Screen","scope":"static"},{"comment":"/**\r\n\t * Tells whether the main window is focused or not.\r\n\t * @function\r\n\t * @returns {boolean} Returns whether the main window is focused or not.\r\n\t */","meta":{"range":[30193,30265],"filename":"CB_Screen.js","lineno":636,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image","code":{"id":"astnode100050209","name":"CB_Screen.isFocused","type":"FunctionExpression","paramnames":[]}},"description":"<p>Tells whether the main window is focused or not.</p>","kind":"function","returns":[{"type":{"names":["boolean"]},"description":"<p>Returns whether the main window is focused or not.</p>"}],"name":"isFocused","longname":"CB_Screen.isFocused","memberof":"CB_Screen","scope":"static"},{"comment":"/**\r\n\t * Sets the focus to the main window (if possible).\r\n\t * @function\r\n\t */","meta":{"range":[30354,30489],"filename":"CB_Screen.js","lineno":646,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image","code":{"id":"astnode100050220","name":"CB_Screen.focus","type":"FunctionExpression","paramnames":[]}},"description":"<p>Sets the focus to the main window (if possible).</p>","kind":"function","name":"focus","longname":"CB_Screen.focus","memberof":"CB_Screen","scope":"static"},{"comment":"/**\r\n\t * Sets a function to execute when the left scroll position (horizontal scroll) is changed in the screen (main window) or removes it.\r\n\t * @function\r\n\t * @param {function|null} callbackFunction - The function (event listener) that we want to execute when the event is fired, with no parameters. If a null value is used, the event will be removed.\r\n\t * @param {boolean} [keepOldFunction=true] - Defines whether we want to keep any possible previous event listener for the same target and event name or not.\r\n\t */","meta":{"range":[31019,31192],"filename":"CB_Screen.js","lineno":659,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image","code":{"id":"astnode100050236","name":"CB_Screen.onScrollLeft","type":"FunctionExpression","paramnames":["callbackFunction","keepOldFunction"]}},"description":"<p>Sets a function to execute when the left scroll position (horizontal scroll) is changed in the screen (main window) or removes it.</p>","kind":"function","params":[{"type":{"names":["function","null"]},"description":"<p>The function (event listener) that we want to execute when the event is fired, with no parameters. If a null value is used, the event will be removed.</p>","name":"callbackFunction"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":true,"description":"<p>Defines whether we want to keep any possible previous event listener for the same target and event name or not.</p>","name":"keepOldFunction"}],"name":"onScrollLeft","longname":"CB_Screen.onScrollLeft","memberof":"CB_Screen","scope":"static"},{"comment":"/**\r\n\t * Sets a function to execute when the top scroll position (vertical scroll) is changed in the screen (main window) or removes it.\r\n\t * @function\r\n\t * @param {function|null} callbackFunction - The function (event listener) that we want to execute when the event is fired, with no parameters. If a null value is used, the event will be removed.\r\n\t * @param {boolean} [keepOldFunction=true] - Defines whether we want to keep any possible previous event listener for the same target and event name or not.\r\n\t */","meta":{"range":[31719,31890],"filename":"CB_Screen.js","lineno":671,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image","code":{"id":"astnode100050253","name":"CB_Screen.onScrollTop","type":"FunctionExpression","paramnames":["callbackFunction","keepOldFunction"]}},"description":"<p>Sets a function to execute when the top scroll position (vertical scroll) is changed in the screen (main window) or removes it.</p>","kind":"function","params":[{"type":{"names":["function","null"]},"description":"<p>The function (event listener) that we want to execute when the event is fired, with no parameters. If a null value is used, the event will be removed.</p>","name":"callbackFunction"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":true,"description":"<p>Defines whether we want to keep any possible previous event listener for the same target and event name or not.</p>","name":"keepOldFunction"}],"name":"onScrollTop","longname":"CB_Screen.onScrollTop","memberof":"CB_Screen","scope":"static"},{"comment":"/**\r\n\t * Sets a function to execute when the screen (main window) orientation is changed (portrait or landscape) or removes it.\r\n\t * @function\r\n\t * @param {function|null} callbackFunction - The function (event listener) that we want to execute when the event is fired, with no parameters. If a null value is used, the event will be removed.\r\n\t * @param {boolean} [keepOldFunction=true] - Defines whether we want to keep any possible previous event listener for the same target and event name or not.\r\n\t */","meta":{"range":[32408,32595],"filename":"CB_Screen.js","lineno":683,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image","code":{"id":"astnode100050270","name":"CB_Screen.onOrientationChange","type":"FunctionExpression","paramnames":["callbackFunction","keepOldFunction"]}},"description":"<p>Sets a function to execute when the screen (main window) orientation is changed (portrait or landscape) or removes it.</p>","kind":"function","params":[{"type":{"names":["function","null"]},"description":"<p>The function (event listener) that we want to execute when the event is fired, with no parameters. If a null value is used, the event will be removed.</p>","name":"callbackFunction"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":true,"description":"<p>Defines whether we want to keep any possible previous event listener for the same target and event name or not.</p>","name":"keepOldFunction"}],"name":"onOrientationChange","longname":"CB_Screen.onOrientationChange","memberof":"CB_Screen","scope":"static"},{"comment":"/**\r\n\t * Sets a function to execute when the screen (main window) visibility is changed or removes it.\r\n\t * @function\r\n\t * @param {function|null} callbackFunction - The function (event listener) that we want to execute when the event is fired, with no parameters. If a null value is used, the event will be removed.\r\n\t * @param {boolean} [keepOldFunction=true] - Defines whether we want to keep any possible previous event listener for the same target and event name or not.\r\n\t */","meta":{"range":[33088,33273],"filename":"CB_Screen.js","lineno":695,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image","code":{"id":"astnode100050287","name":"CB_Screen.onVisibilityChange","type":"FunctionExpression","paramnames":["callbackFunction","keepOldFunction"]}},"description":"<p>Sets a function to execute when the screen (main window) visibility is changed or removes it.</p>","kind":"function","params":[{"type":{"names":["function","null"]},"description":"<p>The function (event listener) that we want to execute when the event is fired, with no parameters. If a null value is used, the event will be removed.</p>","name":"callbackFunction"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":true,"description":"<p>Defines whether we want to keep any possible previous event listener for the same target and event name or not.</p>","name":"keepOldFunction"}],"name":"onVisibilityChange","longname":"CB_Screen.onVisibilityChange","memberof":"CB_Screen","scope":"static"},{"comment":"/**\r\n\t * Sets a function to execute when the screen (main window) focus is changed or removes it.\r\n\t * @function\r\n\t * @param {function|null} callbackFunction - The function (event listener) that we want to execute when the event is fired, with no parameters. If a null value is used, the event will be removed.\r\n\t * @param {boolean} [keepOldFunction=true] - Defines whether we want to keep any possible previous event listener for the same target and event name or not.\r\n\t */","meta":{"range":[33761,33936],"filename":"CB_Screen.js","lineno":707,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image","code":{"id":"astnode100050304","name":"CB_Screen.onFocusChange","type":"FunctionExpression","paramnames":["callbackFunction","keepOldFunction"]}},"description":"<p>Sets a function to execute when the screen (main window) focus is changed or removes it.</p>","kind":"function","params":[{"type":{"names":["function","null"]},"description":"<p>The function (event listener) that we want to execute when the event is fired, with no parameters. If a null value is used, the event will be removed.</p>","name":"callbackFunction"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":true,"description":"<p>Defines whether we want to keep any possible previous event listener for the same target and event name or not.</p>","name":"keepOldFunction"}],"name":"onFocusChange","longname":"CB_Screen.onFocusChange","memberof":"CB_Screen","scope":"static"},{"comment":"/**\r\n\t * Sets a function to execute when the screen (main window) is resized ([onResize]{@link https://developer.mozilla.org/en-US/docs/Web/Events/resize} event) or removes it.\r\n\t * @function\r\n\t * @param {function|null} callbackFunction - The function (event listener) that we want to execute when the event is fired, with no parameters. If a null value is used, the event will be removed.\r\n\t * @param {boolean} [keepOldFunction=true] - Defines whether we want to keep any possible previous event listener for the same target and event name or not.\r\n\t */","meta":{"range":[34503,35688],"filename":"CB_Screen.js","lineno":719,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image","code":{"id":"astnode100050321","name":"CB_Screen.onResize","type":"FunctionExpression","paramnames":["callbackFunction","keepOldFunction","useCapture"]},"vars":{"keepOldFunction":"CB_Screen.onResize~keepOldFunction","functionToAdd":"CB_Screen.onResize~functionToAdd","":null}},"description":"<p>Sets a function to execute when the screen (main window) is resized ([onResize]{@link https://developer.mozilla.org/en-US/docs/Web/Events/resize} event) or removes it.</p>","kind":"function","params":[{"type":{"names":["function","null"]},"description":"<p>The function (event listener) that we want to execute when the event is fired, with no parameters. If a null value is used, the event will be removed.</p>","name":"callbackFunction"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":true,"description":"<p>Defines whether we want to keep any possible previous event listener for the same target and event name or not.</p>","name":"keepOldFunction"}],"name":"onResize","longname":"CB_Screen.onResize","memberof":"CB_Screen","scope":"static"},{"comment":"/**\r\n\t * Sets a function to execute when the screen (main window) is resized or the zoom is changed, or removes it.\r\n\t * @function\r\n\t * @param {function|null} callbackFunction - The function (event listener) that we want to execute when the event is fired, with no parameters. If a null value is used, the event will be removed.\r\n\t * @param {boolean} [keepOldFunction=true] - Defines whether we want to keep any possible previous event listener for the same target and event name or not.\r\n\t */","meta":{"range":[39540,39729],"filename":"CB_Screen.js","lineno":816,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image","code":{"id":"astnode100050756","name":"CB_Screen.onResizeOrZoom","type":"FunctionExpression","paramnames":["onResizeOrZoomFunction","keepOldFunction"]}},"description":"<p>Sets a function to execute when the screen (main window) is resized or the zoom is changed, or removes it.</p>","kind":"function","params":[{"type":{"names":["function","null"]},"description":"<p>The function (event listener) that we want to execute when the event is fired, with no parameters. If a null value is used, the event will be removed.</p>","name":"callbackFunction"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":true,"description":"<p>Defines whether we want to keep any possible previous event listener for the same target and event name or not.</p>","name":"keepOldFunction"}],"name":"onResizeOrZoom","longname":"CB_Screen.onResizeOrZoom","memberof":"CB_Screen","scope":"static"},{"comment":"/**\r\n\t * Sets a function to execute when full screen mode is changed (enabled or disabled) or removes it.\r\n\t * @function\r\n\t * @param {function|null} callbackFunction - The function (event listener) that we want to execute when the event is fired, with no parameters. If a null value is used, the event will be removed.\r\n\t * @param {boolean} [keepOldFunction=true] - Defines whether we want to keep any possible previous event listener for the same target and event name or not.\r\n\t */","meta":{"range":[40226,40431],"filename":"CB_Screen.js","lineno":828,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image","code":{"id":"astnode100050773","name":"CB_Screen.onFullScreenChange","type":"FunctionExpression","paramnames":["onFullScreenChangeFunction","keepOldFunction"]}},"description":"<p>Sets a function to execute when full screen mode is changed (enabled or disabled) or removes it.</p>","kind":"function","params":[{"type":{"names":["function","null"]},"description":"<p>The function (event listener) that we want to execute when the event is fired, with no parameters. If a null value is used, the event will be removed.</p>","name":"callbackFunction"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":true,"description":"<p>Defines whether we want to keep any possible previous event listener for the same target and event name or not.</p>","name":"keepOldFunction"}],"name":"onFullScreenChange","longname":"CB_Screen.onFullScreenChange","memberof":"CB_Screen","scope":"static"},{"comment":"/**\r\n\t * Tells whether the web client is compatible with the [FullScreen API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Fullscreen_API} or not.\r\n\t * @function\r\n\t * @returns {boolean} Returns whether the web client is compatible with the [FullScreen API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Fullscreen_API} or not.\r\n\t */","meta":{"range":[41982,42700],"filename":"CB_Screen.js","lineno":872,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image","code":{"id":"astnode100050876","name":"CB_Screen.isFullScreenAPICompatible","type":"FunctionExpression","paramnames":[]},"vars":{"element":"CB_Screen.isFullScreenAPICompatible~element","isFullScreenAPICompatible":"CB_Screen.isFullScreenAPICompatible~isFullScreenAPICompatible","callFullScreen":"CB_Screen.isFullScreenAPICompatible~callFullScreen"}},"description":"<p>Tells whether the web client is compatible with the [FullScreen API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Fullscreen_API} or not.</p>","kind":"function","returns":[{"type":{"names":["boolean"]},"description":"<p>Returns whether the web client is compatible with the [FullScreen API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Fullscreen_API} or not.</p>"}],"name":"isFullScreenAPICompatible","longname":"CB_Screen.isFullScreenAPICompatible","memberof":"CB_Screen","scope":"static"},{"comment":"/**\r\n\t * Toggles between full screen and normal mode. Uses the [Fullscreen API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Fullscreen_API} and fallbacks to other methods internally, including [NW.js (formerly node-webkit)]{@link https://nwjs.io/} and [Electron (Electron.js)]{@link https://electronjs.org/} ones, when not available. Recommended to be called through an event fired by the user as onclick or ontouchstart, etc.\r\n\t * @function\r\n\t * @param {boolean} [useFullScreen=true] - If set to true, it will try to enable full screen mode. Otherwise, it will try to enable normal mode.\r\n\t * @param {Element} [element=document.documentElement|document.body] - Element which we want to use in full screen mode. By default uses the whole document body. Only used when the \"useFullScreen\" parameter is set to true. If an element is provided, it will use neither [NW.js (formerly node-webkit)]{@link https://nwjs.io/} nor [Electron (Electron.js)]{@link https://electronjs.org/} methods.\r\n\t * @param {boolean} [allowReload=false] - If set to true and \"useFullScreen\" is set to true but it fails to enable full screen normally, it will try to reload the entire current document again in a new bigger window. Useful for very old web clients. Only used when the \"useFullScreen\" parameter is set to true.\r\n\t */","meta":{"range":[44028,54335],"filename":"CB_Screen.js","lineno":897,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image","code":{"id":"astnode100050953","name":"CB_Screen.setFullScreen","type":"FunctionExpression","paramnames":["useFullScreen","element","allowReload"]},"vars":{"documentBase":"CB_Screen.setFullScreen~documentBase","useFullScreen":"CB_Screen.setFullScreen~useFullScreen","elementGiven":"CB_Screen.setFullScreen~elementGiven","element":"CB_Screen.setFullScreen~element","fullScreenApplied":"CB_Screen.setFullScreen~fullScreenApplied","win":"CB_Screen.setFullScreen~win","gui":"CB_Screen.setFullScreen~gui","callFullScreen":"CB_Screen.setFullScreen~callFullScreen","wscript":"CB_Screen.setFullScreen~wscript","screenAvailableWidth":"CB_Screen.setFullScreen~screenAvailableWidth","top.window.outerWidth":"top.window.outerWidth","screenAvailableHeight":"CB_Screen.setFullScreen~screenAvailableHeight","top.window.outerHeight":"top.window.outerHeight","screenWidth":"CB_Screen.setFullScreen~screenWidth","screenHeight":"CB_Screen.setFullScreen~screenHeight","currentWindow":"CB_Screen.setFullScreen~currentWindow","currentWindow.opener":"CB_Screen.setFullScreen~currentWindow.opener","newWindow":"CB_Screen.setFullScreen~newWindow","fullScreenLeft":"CB_Screen.setFullScreen~fullScreenLeft","cancelFullScreen":"CB_Screen.setFullScreen~cancelFullScreen","useDocumentBase":"CB_Screen.setFullScreen~useDocumentBase"}},"description":"<p>Toggles between full screen and normal mode. Uses the [Fullscreen API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Fullscreen_API} and fallbacks to other methods internally, including [NW.js (formerly node-webkit)]{@link https://nwjs.io/} and [Electron (Electron.js)]{@link https://electronjs.org/} ones, when not available. Recommended to be called through an event fired by the user as onclick or ontouchstart, etc.</p>","kind":"function","params":[{"type":{"names":["boolean"]},"optional":true,"defaultvalue":true,"description":"<p>If set to true, it will try to enable full screen mode. Otherwise, it will try to enable normal mode.</p>","name":"useFullScreen"},{"type":{"names":["Element"]},"optional":true,"defaultvalue":"document.documentElement|document.body","description":"<p>Element which we want to use in full screen mode. By default uses the whole document body. Only used when the &quot;useFullScreen&quot; parameter is set to true. If an element is provided, it will use neither [NW.js (formerly node-webkit)]{@link https://nwjs.io/} nor [Electron (Electron.js)]{@link https://electronjs.org/} methods.</p>","name":"element"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If set to true and &quot;useFullScreen&quot; is set to true but it fails to enable full screen normally, it will try to reload the entire current document again in a new bigger window. Useful for very old web clients. Only used when the &quot;useFullScreen&quot; parameter is set to true.</p>","name":"allowReload"}],"name":"setFullScreen","longname":"CB_Screen.setFullScreen","memberof":"CB_Screen","scope":"static"},{"comment":"/**\r\n\t * Tells whether we are in full screen mode or not. Uses the [Fullscreen API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Fullscreen_API} and fallbacks to other methods internally, including [NW.js (formerly node-webkit)]{@link https://nwjs.io/} and [Electron (Electron.js)]{@link https://electronjs.org/} ones, when not available.\r\n\t * @function\r\n\t * @param {number} [allowedWidthMarginPercentage=CB_Configuration.CrossBase.CB_Screen_isFullScreen_ALLOWED_WIDTH_MARGIN_PERCENTAGE] - Allowed width margin, in percentage, of the total screen available to detect whether it is in full screen or not. Needed by old web clients without [Fullscreen API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Fullscreen_API} support, mainly.\r\n\t * @param {number} [allowedHeightMarginPercentage=CB_Configuration.CrossBase.CB_Screen_isFullScreen_ALLOWED_HEIGHT_MARGIN_PERCENTAGE] - Allowed height margin, in percentage, of the total screen available to detect whether it is in full screen or not. Needed by old web clients without [Fullscreen API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Fullscreen_API} support, mainly.\r\n\t * @returns {boolean} Returns whether we are in full screen mode or not.\r\n\t */","meta":{"range":[55572,68313],"filename":"CB_Screen.js","lineno":1196,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image","code":{"id":"astnode100051907","name":"CB_Screen.isFullScreen","type":"FunctionExpression","paramnames":["allowedWidthMarginPercentage","allowedHeightMarginPercentage"]},"vars":{"documentBase":"CB_Screen.isFullScreen~documentBase","isFullScreenApplied":"CB_Screen.isFullScreen~isFullScreenApplied","win":"CB_Screen.isFullScreen~win","gui":"CB_Screen.isFullScreen~gui","element":"CB_Screen.isFullScreen~element","callFullScreen":"CB_Screen.isFullScreen~callFullScreen","currentZoom":"CB_Screen.isFullScreen~currentZoom","screenAvailableWidth_":"CB_Screen.isFullScreen~screenAvailableWidth_","screenAvailableHeight_":"CB_Screen.isFullScreen~screenAvailableHeight_","previousScreenAvailableWidth_":"CB_Screen.isFullScreen~previousScreenAvailableWidth_","previousScreenAvailableHeight_":"CB_Screen.isFullScreen~previousScreenAvailableHeight_","zoomAffectsScreenSize":"CB_Screen.isFullScreen~zoomAffectsScreenSize","allowedWidthMarginPercentage":"CB_Screen.isFullScreen~allowedWidthMarginPercentage","allowedHeightMarginPercentage":"CB_Screen.isFullScreen~allowedHeightMarginPercentage","allowedWidthMargin":"CB_Screen.isFullScreen~allowedWidthMargin","allowedHeightMargin":"CB_Screen.isFullScreen~allowedHeightMargin","windowWidth":"CB_Screen.isFullScreen~windowWidth","windowHeight":"CB_Screen.isFullScreen~windowHeight","CB_Screen._isFullScreen":"CB_Screen._isFullScreen"}},"description":"<p>Tells whether we are in full screen mode or not. Uses the [Fullscreen API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Fullscreen_API} and fallbacks to other methods internally, including [NW.js (formerly node-webkit)]{@link https://nwjs.io/} and [Electron (Electron.js)]{@link https://electronjs.org/} ones, when not available.</p>","kind":"function","params":[{"type":{"names":["number"]},"optional":true,"defaultvalue":"CB_Configuration.CrossBase.CB_Screen_isFullScreen_ALLOWED_WIDTH_MARGIN_PERCENTAGE","description":"<p>Allowed width margin, in percentage, of the total screen available to detect whether it is in full screen or not. Needed by old web clients without [Fullscreen API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Fullscreen_API} support, mainly.</p>","name":"allowedWidthMarginPercentage"},{"type":{"names":["number"]},"optional":true,"defaultvalue":"CB_Configuration.CrossBase.CB_Screen_isFullScreen_ALLOWED_HEIGHT_MARGIN_PERCENTAGE","description":"<p>Allowed height margin, in percentage, of the total screen available to detect whether it is in full screen or not. Needed by old web clients without [Fullscreen API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Fullscreen_API} support, mainly.</p>","name":"allowedHeightMarginPercentage"}],"returns":[{"type":{"names":["boolean"]},"description":"<p>Returns whether we are in full screen mode or not.</p>"}],"name":"isFullScreen","longname":"CB_Screen.isFullScreen","memberof":"CB_Screen","scope":"static"},{"comment":"/**\r\n\t * Alias for {@link CB_Screen.unlockOrientation}.\r\n\t * @function CB_Screen.unsetOrientation\r\n\t * @see {@link CB_Screen.unlockOrientation}\r\n\t */","meta":{"filename":"CB_Screen.js","lineno":1453,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image","code":{}},"description":"<p>Alias for {@link CB_Screen.unlockOrientation}.</p>","kind":"function","name":"unsetOrientation","see":["{@link CB_Screen.unlockOrientation}"],"memberof":"CB_Screen","longname":"CB_Screen.unsetOrientation","scope":"static"},{"comment":"/**\r\n\t * Function that unlocks the screen orientation. Using the [unlock]{@link https://developer.mozilla.org/en-US/docs/Web/API/ScreenOrientation/unlock} function and fallbacks to the [unlockOrientation]{@link https://developer.mozilla.org/en-US/docs/Web/API/Screen/unlockOrientation} function of the [Screen Orientation API]{@link https://developer.mozilla.org/en-US/docs/Web/API/ScreenOrientation} internally.\r\n\t * @function\r\n\t * @param {function} [onError] - Callback function that will be called if the orientation has not been unlocked successfully. Unique parameter received will be an error object (probably a [DOMException]{@link https://developer.mozilla.org/en-US/docs/Web/API/DOMException}, depending on the client) with the error.\r\n\t * @returns {boolean} Returns the same that the [unlock]{@link https://developer.mozilla.org/en-US/docs/Web/API/ScreenOrientation/unlock} function returns (undefined, normally), if available. Otherwise, returns the same boolean as the [unlockOrientation]{@link https://developer.mozilla.org/en-US/docs/Web/API/Screen/unlockOrientation} function (true if the unlocking action has been performed successfully), if available. Otherwise, returns false when the [Screen Orientation API]{@link https://developer.mozilla.org/en-US/docs/Web/API/ScreenOrientation} is not available.\r\n\t */","meta":{"range":[69868,72697],"filename":"CB_Screen.js","lineno":1464,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image","code":{"id":"astnode100052722","name":"CB_Screen.unlockOrientation","type":"AssignmentExpression","value":"CB_Screen.unsetOrientation","paramnames":[]}},"description":"<p>Function that unlocks the screen orientation. Using the [unlock]{@link https://developer.mozilla.org/en-US/docs/Web/API/ScreenOrientation/unlock} function and fallbacks to the [unlockOrientation]{@link https://developer.mozilla.org/en-US/docs/Web/API/Screen/unlockOrientation} function of the [Screen Orientation API]{@link https://developer.mozilla.org/en-US/docs/Web/API/ScreenOrientation} internally.</p>","kind":"function","params":[{"type":{"names":["function"]},"optional":true,"description":"<p>Callback function that will be called if the orientation has not been unlocked successfully. Unique parameter received will be an error object (probably a [DOMException]{@link https://developer.mozilla.org/en-US/docs/Web/API/DOMException}, depending on the client) with the error.</p>","name":"onError"}],"returns":[{"type":{"names":["boolean"]},"description":"<p>Returns the same that the [unlock]{@link https://developer.mozilla.org/en-US/docs/Web/API/ScreenOrientation/unlock} function returns (undefined, normally), if available. Otherwise, returns the same boolean as the [unlockOrientation]{@link https://developer.mozilla.org/en-US/docs/Web/API/Screen/unlockOrientation} function (true if the unlocking action has been performed successfully), if available. Otherwise, returns false when the [Screen Orientation API]{@link https://developer.mozilla.org/en-US/docs/Web/API/ScreenOrientation} is not available.</p>"}],"name":"unlockOrientation","longname":"CB_Screen.unlockOrientation","memberof":"CB_Screen","scope":"static"},{"comment":"/**\r\n\t * Alias for {@link CB_Screen.lockOrientation}.\r\n\t * @function CB_Screen.setOrientation\r\n\t * @see {@link CB_Screen.lockOrientation}\r\n\t */","meta":{"filename":"CB_Screen.js","lineno":1548,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image","code":{}},"description":"<p>Alias for {@link CB_Screen.lockOrientation}.</p>","kind":"function","name":"setOrientation","see":["{@link CB_Screen.lockOrientation}"],"memberof":"CB_Screen","longname":"CB_Screen.setOrientation","scope":"static"},{"comment":"/**\r\n\t * Function that forces a desired screen orientation. Using the [lock]{@link https://developer.mozilla.org/en-US/docs/Web/API/ScreenOrientation/lock} function and fallbacks to the [lockOrientation]{@link https://developer.mozilla.org/en-US/docs/Web/API/Screen/lockOrientation} function of the [Screen Orientation API]{@link https://developer.mozilla.org/en-US/docs/Web/API/ScreenOrientation} internally.\r\n\t * @function\r\n\t * @param {'default'|'any'|'natural'|'landscape'|'portrait'|'portrait-primary'|'portrait-secondary'|'landscape-primary'|'landscape-secondary'} orientationMode - Desired orientation. Internally, \"default\" and \"natural\" will be exchanged and \"any\" will be transformed to \"default\", depending on the internal function used. Values \"default\", \"any\" and \"natural\" are not recommended because they are not supported in all web clients.\r\n \t * @param {function} [onSuccess] - Callback function with no parameters that will be called if the orientation has been set successfully.\r\n\t * @param {function} [onError] - Callback function that will be called if the orientation has not been set successfully. Unique parameter received will be an error object (probably a [DOMException]{@link https://developer.mozilla.org/en-US/docs/Web/API/DOMException}, depending on the client) with the error.\r\n\t * @returns {boolean} Returns the same [Promise]{@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise} that the [lock]{@link https://developer.mozilla.org/en-US/docs/Web/API/ScreenOrientation/lock} function returns, if available. Otherwise, returns the same boolean as the [lockOrientation]{@link https://developer.mozilla.org/en-US/docs/Web/API/Screen/lockOrientation} function (true if the locking action has been performed successfully), if available. Otherwise, returns false when the [Screen Orientation API]{@link https://developer.mozilla.org/en-US/docs/Web/API/ScreenOrientation} is not available.\r\n\t * @todo Transform values of \"default\", \"any\" and \"natural\" to \"portrait\", \"landscape\", etc. when the web clients do not support it (calculating current orientation and trying to guess natural/default one, etc.).\r\n\t */","meta":{"range":[75041,77917],"filename":"CB_Screen.js","lineno":1562,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image","code":{"id":"astnode100052995","name":"CB_Screen.lockOrientation","type":"AssignmentExpression","value":"CB_Screen.setOrientation","paramnames":[]}},"description":"<p>Function that forces a desired screen orientation. Using the [lock]{@link https://developer.mozilla.org/en-US/docs/Web/API/ScreenOrientation/lock} function and fallbacks to the [lockOrientation]{@link https://developer.mozilla.org/en-US/docs/Web/API/Screen/lockOrientation} function of the [Screen Orientation API]{@link https://developer.mozilla.org/en-US/docs/Web/API/ScreenOrientation} internally.</p>","kind":"function","params":[{"type":{"names":["'default'","'any'","'natural'","'landscape'","'portrait'","'portrait-primary'","'portrait-secondary'","'landscape-primary'","'landscape-secondary'"]},"description":"<p>Desired orientation. Internally, &quot;default&quot; and &quot;natural&quot; will be exchanged and &quot;any&quot; will be transformed to &quot;default&quot;, depending on the internal function used. Values &quot;default&quot;, &quot;any&quot; and &quot;natural&quot; are not recommended because they are not supported in all web clients.</p>","name":"orientationMode"},{"type":{"names":["function"]},"optional":true,"description":"<p>Callback function with no parameters that will be called if the orientation has been set successfully.</p>","name":"onSuccess"},{"type":{"names":["function"]},"optional":true,"description":"<p>Callback function that will be called if the orientation has not been set successfully. Unique parameter received will be an error object (probably a [DOMException]{@link https://developer.mozilla.org/en-US/docs/Web/API/DOMException}, depending on the client) with the error.</p>","name":"onError"}],"returns":[{"type":{"names":["boolean"]},"description":"<p>Returns the same [Promise]{@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise} that the [lock]{@link https://developer.mozilla.org/en-US/docs/Web/API/ScreenOrientation/lock} function returns, if available. Otherwise, returns the same boolean as the [lockOrientation]{@link https://developer.mozilla.org/en-US/docs/Web/API/Screen/lockOrientation} function (true if the locking action has been performed successfully), if available. Otherwise, returns false when the [Screen Orientation API]{@link https://developer.mozilla.org/en-US/docs/Web/API/ScreenOrientation} is not available.</p>"}],"todo":["Transform values of \"default\", \"any\" and \"natural\" to \"portrait\", \"landscape\", etc. when the web clients do not support it (calculating current orientation and trying to guess natural/default one, etc.)."],"name":"lockOrientation","longname":"CB_Screen.lockOrientation","memberof":"CB_Screen","scope":"static"},{"comment":"/**\r\n\t * Gets the [screen orientation object]{@link https://developer.mozilla.org/en-US/docs/Web/API/Screen/orientation} of the [Screen Orientation API]{@link https://developer.mozilla.org/en-US/docs/Web/API/ScreenOrientation}.\r\n\t * @function\r\n\t * @returns {Object} Returns the [screen orientation object]{@link https://developer.mozilla.org/en-US/docs/Web/API/Screen/orientation} of the [Screen Orientation API]{@link https://developer.mozilla.org/en-US/docs/Web/API/ScreenOrientation}.\r\n\t */","meta":{"range":[78422,78867],"filename":"CB_Screen.js","lineno":1642,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image","code":{"id":"astnode100053281","name":"CB_Screen.getOrientationObject","type":"FunctionExpression","paramnames":[]},"vars":{"orientationObject":"CB_Screen.getOrientationObject~orientationObject"}},"description":"<p>Gets the [screen orientation object]{@link https://developer.mozilla.org/en-US/docs/Web/API/Screen/orientation} of the [Screen Orientation API]{@link https://developer.mozilla.org/en-US/docs/Web/API/ScreenOrientation}.</p>","kind":"function","returns":[{"type":{"names":["Object"]},"description":"<p>Returns the [screen orientation object]{@link https://developer.mozilla.org/en-US/docs/Web/API/Screen/orientation} of the [Screen Orientation API]{@link https://developer.mozilla.org/en-US/docs/Web/API/ScreenOrientation}.</p>"}],"name":"getOrientationObject","longname":"CB_Screen.getOrientationObject","memberof":"CB_Screen","scope":"static"},{"comment":"/**\r\n\t * Gets the current orientation from the [screen orientation object]{@link https://developer.mozilla.org/en-US/docs/Web/API/Screen/orientation} of the [Screen Orientation API]{@link https://developer.mozilla.org/en-US/docs/Web/API/ScreenOrientation}.\r\n\t * @function\r\n\t * @returns {string} Returns a string with the current orientation from the [screen orientation object]{@link https://developer.mozilla.org/en-US/docs/Web/API/Screen/orientation} of the [Screen Orientation API]{@link https://developer.mozilla.org/en-US/docs/Web/API/ScreenOrientation}. If cannot be found, it will return \"landscape-primary\" as default.\r\n\t */","meta":{"range":[80059,80680],"filename":"CB_Screen.js","lineno":1675,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image","code":{"id":"astnode100053373","name":"CB_Screen.getOrientation","type":"FunctionExpression","paramnames":[]},"vars":{"orientationObject":"CB_Screen.getOrientation~orientationObject","orientation":"CB_Screen.getOrientation~orientation"}},"description":"<p>Gets the current orientation from the [screen orientation object]{@link https://developer.mozilla.org/en-US/docs/Web/API/Screen/orientation} of the [Screen Orientation API]{@link https://developer.mozilla.org/en-US/docs/Web/API/ScreenOrientation}.</p>","kind":"function","returns":[{"type":{"names":["string"]},"description":"<p>Returns a string with the current orientation from the [screen orientation object]{@link https://developer.mozilla.org/en-US/docs/Web/API/Screen/orientation} of the [Screen Orientation API]{@link https://developer.mozilla.org/en-US/docs/Web/API/ScreenOrientation}. If cannot be found, it will return &quot;landscape-primary&quot; as default.</p>"}],"name":"getOrientation","longname":"CB_Screen.getOrientation","memberof":"CB_Screen","scope":"static"},{"comment":"/**\r\n\t * Sets the [Viewport]{@link https://developer.mozilla.org/en-US/docs/Mozilla/Mobile/Viewport_meta_tag} meta tag dynamically with the desired options. If the [Viewport]{@link https://developer.mozilla.org/en-US/docs/Mozilla/Mobile/Viewport_meta_tag} meta tag already exists, it will be updated. Otherwise, it will create a new one (and append it to the [HEAD]{@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/head} tag, if found).\r\n\t * @function\r\n\t * @param {string|integer} [width] - Desired value for the \"width\" parameter.\r\n\t * @param {string|integer} [height] - Desired value for the \"height\" parameter.\r\n\t * @param {string|boolean} [userScalable='no'] - Desired value for the \"user-scalable\" parameter.\r\n\t * @param {number} [initialScale] - Desired value for the \"initial-scale\" parameter.\r\n\t * @param {number} [minimumScale] - Desired value for the \"minimum-scale\" parameter.\r\n\t * @param {number} [maximumScale] - Desired value for the \"maximum-scale\" parameter.\r\n\t * @param {string|number} [targetDensityDPI] - Desired value for the \"target-densitydpi\" parameter.\r\n\t * @param {string} [shrinkToFit] - Desired value for the \"shrink-to-fit\" parameter.\r\n\t * @returns {Node|null} Returns the DOM element which belongs to the [Viewport]{@link https://developer.mozilla.org/en-US/docs/Mozilla/Mobile/Viewport_meta_tag} meta tag affected (it will have been just created if no one existed before). If a [Viewport]{@link https://developer.mozilla.org/en-US/docs/Mozilla/Mobile/Viewport_meta_tag} meta tag could not be created or modified, returns null.\r\n\t */","meta":{"range":[82279,85507],"filename":"CB_Screen.js","lineno":1705,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image","code":{"id":"astnode100053449","name":"CB_Screen.setViewport","type":"FunctionExpression","paramnames":["width","height","userScalable","initialScale","minimumScale","maximumScale","targetDensityDPI","shrinkToFit"]},"vars":{"viewport":"CB_Screen.setViewport~viewport","metaTags":"CB_Screen.setViewport~metaTags","x":"CB_Screen.setViewport~x","width":"CB_Screen.setViewport~width","height":"CB_Screen.setViewport~height","userScalable":"CB_Screen.setViewport~userScalable","initialScale":"CB_Screen.setViewport~initialScale","minimumScale":"CB_Screen.setViewport~minimumScale","maximumScale":"CB_Screen.setViewport~maximumScale","targetDensityDPI":"CB_Screen.setViewport~targetDensityDPI","shrinkToFit":"CB_Screen.setViewport~shrinkToFit","viewportContent":"CB_Screen.setViewport~viewportContent","viewport.name":"CB_Screen.setViewport~viewport.name","viewport.id":"CB_Screen.setViewport~viewport.id","viewport.content":"CB_Screen.setViewport~viewport.content","headTag":"CB_Screen.setViewport~headTag"}},"description":"<p>Sets the [Viewport]{@link https://developer.mozilla.org/en-US/docs/Mozilla/Mobile/Viewport_meta_tag} meta tag dynamically with the desired options. If the [Viewport]{@link https://developer.mozilla.org/en-US/docs/Mozilla/Mobile/Viewport_meta_tag} meta tag already exists, it will be updated. Otherwise, it will create a new one (and append it to the [HEAD]{@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/head} tag, if found).</p>","kind":"function","params":[{"type":{"names":["string","integer"]},"optional":true,"description":"<p>Desired value for the &quot;width&quot; parameter.</p>","name":"width"},{"type":{"names":["string","integer"]},"optional":true,"description":"<p>Desired value for the &quot;height&quot; parameter.</p>","name":"height"},{"type":{"names":["string","boolean"]},"optional":true,"defaultvalue":"'no'","description":"<p>Desired value for the &quot;user-scalable&quot; parameter.</p>","name":"userScalable"},{"type":{"names":["number"]},"optional":true,"description":"<p>Desired value for the &quot;initial-scale&quot; parameter.</p>","name":"initialScale"},{"type":{"names":["number"]},"optional":true,"description":"<p>Desired value for the &quot;minimum-scale&quot; parameter.</p>","name":"minimumScale"},{"type":{"names":["number"]},"optional":true,"description":"<p>Desired value for the &quot;maximum-scale&quot; parameter.</p>","name":"maximumScale"},{"type":{"names":["string","number"]},"optional":true,"description":"<p>Desired value for the &quot;target-densitydpi&quot; parameter.</p>","name":"targetDensityDPI"},{"type":{"names":["string"]},"optional":true,"description":"<p>Desired value for the &quot;shrink-to-fit&quot; parameter.</p>","name":"shrinkToFit"}],"returns":[{"type":{"names":["Node","null"]},"description":"<p>Returns the DOM element which belongs to the [Viewport]{@link https://developer.mozilla.org/en-US/docs/Mozilla/Mobile/Viewport_meta_tag} meta tag affected (it will have been just created if no one existed before). If a [Viewport]{@link https://developer.mozilla.org/en-US/docs/Mozilla/Mobile/Viewport_meta_tag} meta tag could not be created or modified, returns null.</p>"}],"name":"setViewport","longname":"CB_Screen.setViewport","memberof":"CB_Screen","scope":"static"},{"comment":"/**\r\n\t * Keeps the screen awake and prevents it from turning off. Uses different methods internally: [Apache Cordova's Insomnia plugin]{@link https://github.com/EddyVerbruggen/Insomnia-PhoneGap-Plugin}, [Standby API]{@link https://lists.w3.org/Archives/Public/public-device-apis/2014Feb/att-0001/Standby_API_Specification.pdf}, [Mozilla's Wake Lock API]{@link https://developer.mozilla.org/en-US/docs/Archive/B2G_OS/API/Wake_Lock_API}, [new W3C's Wake Lock API]{@link https://w3.org/TR/wake-lock/}, [old W3C's Wake Lock API]{@link https://w3.org/TR/2016/WD-wake-lock-20160714/}, [NoSleep.js library]{@link https://github.com/richtr/NoSleep.js?utm_source=recordnotfound.com} (it should be activated by an event fired by the user as onclick or ontouchstart, etc.)...\r\n\t * @function\r\n\t * @param {function} [callbackOk] - Function that will be called if the action has been performed successfully, without parameters.\r\n\t * @param {function} [callbackError] - Function that will be called if the action has not been performed successfully, without parameters.\r\n\t * @returns {boolean} If it uses the [new W3C's Wake Lock API]{@link https://w3.org/TR/wake-lock/} internally, it will return a [Promise]{@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise}. Otherwise, it will return a boolean depending on whether the internal method has been called successfully or not. The fact that the internal method has been called successfully does not mean that the action will perform successfully so it is recommended to relay on the \"callbackOk\" and \"callbackError\" functions and ignore this returning value.\r\n\t * @todo Pay attention since many internal functions as the [new W3C's Wake Lock API]{@link https://w3.org/TR/wake-lock/} are still experimental and not well-tested.\r\n\t */","meta":{"range":[87334,90597],"filename":"CB_Screen.js","lineno":1797,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image","code":{"id":"astnode100053857","name":"CB_Screen.keepAwake","type":"FunctionExpression","paramnames":["callbackOk","callbackError"]},"vars":{"CB_Screen._screenLock":"CB_Screen._screenLock","":null,"screen.keepAwake":"screen.keepAwake","CB_Screen._noSleep":"CB_Screen._noSleep","CB_Screen._noSleepEnabled":"CB_Screen._noSleepEnabled"}},"description":"<p>Keeps the screen awake and prevents it from turning off. Uses different methods internally: [Apache Cordova's Insomnia plugin]{@link https://github.com/EddyVerbruggen/Insomnia-PhoneGap-Plugin}, [Standby API]{@link https://lists.w3.org/Archives/Public/public-device-apis/2014Feb/att-0001/Standby_API_Specification.pdf}, [Mozilla's Wake Lock API]{@link https://developer.mozilla.org/en-US/docs/Archive/B2G_OS/API/Wake_Lock_API}, [new W3C's Wake Lock API]{@link https://w3.org/TR/wake-lock/}, [old W3C's Wake Lock API]{@link https://w3.org/TR/2016/WD-wake-lock-20160714/}, [NoSleep.js library]{@link https://github.com/richtr/NoSleep.js?utm_source=recordnotfound.com} (it should be activated by an event fired by the user as onclick or ontouchstart, etc.)...</p>","kind":"function","params":[{"type":{"names":["function"]},"optional":true,"description":"<p>Function that will be called if the action has been performed successfully, without parameters.</p>","name":"callbackOk"},{"type":{"names":["function"]},"optional":true,"description":"<p>Function that will be called if the action has not been performed successfully, without parameters.</p>","name":"callbackError"}],"returns":[{"type":{"names":["boolean"]},"description":"<p>If it uses the [new W3C's Wake Lock API]{@link https://w3.org/TR/wake-lock/} internally, it will return a [Promise]{@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise}. Otherwise, it will return a boolean depending on whether the internal method has been called successfully or not. The fact that the internal method has been called successfully does not mean that the action will perform successfully so it is recommended to relay on the &quot;callbackOk&quot; and &quot;callbackError&quot; functions and ignore this returning value.</p>"}],"todo":["Pay attention since many internal functions as the [new W3C's Wake Lock API]{@link https://w3.org/TR/wake-lock/} are still experimental and not well-tested."],"name":"keepAwake","longname":"CB_Screen.keepAwake","memberof":"CB_Screen","scope":"static"},{"comment":"/**\r\n\t * Lets the screen sleep again and stops preventing it from turning off. Uses different methods internally: [Apache Cordova's Insomnia plugin]{@link https://github.com/EddyVerbruggen/Insomnia-PhoneGap-Plugin}, [Standby API]{@link https://lists.w3.org/Archives/Public/public-device-apis/2014Feb/att-0001/Standby_API_Specification.pdf}, [Mozilla's Wake Lock API]{@link https://developer.mozilla.org/en-US/docs/Archive/B2G_OS/API/Wake_Lock_API}, [new W3C's Wake Lock API]{@link https://w3.org/TR/wake-lock/}, [old W3C's Wake Lock API]{@link https://w3.org/TR/2016/WD-wake-lock-20160714/}, [NoSleep.js library]{@link https://github.com/richtr/NoSleep.js?utm_source=recordnotfound.com} (it should be activated by an event fired by the user as onclick or ontouchstart, etc.)...\r\n\t * @function\r\n\t * @param {function} [callbackOk] - Function that will be called if the action has been performed successfully, without parameters.\r\n\t * @param {function} [callbackError] - Function that will be called if the action has not been performed successfully, without parameters.\r\n\t * @returns {boolean} If it uses the [new W3C's Wake Lock API]{@link https://w3.org/TR/wake-lock/} internally, it will return a [Promise]{@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise}. Otherwise, it will return a boolean depending on whether the internal method has been called successfully or not. The fact that the internal method has been called successfully does not mean that the action will perform successfully so it is recommended to relay on the \"callbackOk\" and \"callbackError\" functions and ignore this returning value.\r\n\t * @todo Pay attention since many internal functions as the [new W3C's Wake Lock API]{@link https://w3.org/TR/wake-lock/} are still experimental and not well-tested.\r\n\t */","meta":{"range":[92533,95247],"filename":"CB_Screen.js","lineno":1900,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\audiovisual\\image","code":{"id":"astnode100054196","name":"CB_Screen.keepAwakeDisable","type":"FunctionExpression","paramnames":["callbackOk","callbackError"]},"vars":{"lock":"CB_Screen.keepAwakeDisable~lock","":null,"screen.keepAwake":"screen.keepAwake","CB_Screen._noSleep":"CB_Screen._noSleep","CB_Screen._noSleepEnabled":"CB_Screen._noSleepEnabled"}},"description":"<p>Lets the screen sleep again and stops preventing it from turning off. Uses different methods internally: [Apache Cordova's Insomnia plugin]{@link https://github.com/EddyVerbruggen/Insomnia-PhoneGap-Plugin}, [Standby API]{@link https://lists.w3.org/Archives/Public/public-device-apis/2014Feb/att-0001/Standby_API_Specification.pdf}, [Mozilla's Wake Lock API]{@link https://developer.mozilla.org/en-US/docs/Archive/B2G_OS/API/Wake_Lock_API}, [new W3C's Wake Lock API]{@link https://w3.org/TR/wake-lock/}, [old W3C's Wake Lock API]{@link https://w3.org/TR/2016/WD-wake-lock-20160714/}, [NoSleep.js library]{@link https://github.com/richtr/NoSleep.js?utm_source=recordnotfound.com} (it should be activated by an event fired by the user as onclick or ontouchstart, etc.)...</p>","kind":"function","params":[{"type":{"names":["function"]},"optional":true,"description":"<p>Function that will be called if the action has been performed successfully, without parameters.</p>","name":"callbackOk"},{"type":{"names":["function"]},"optional":true,"description":"<p>Function that will be called if the action has not been performed successfully, without parameters.</p>","name":"callbackError"}],"returns":[{"type":{"names":["boolean"]},"description":"<p>If it uses the [new W3C's Wake Lock API]{@link https://w3.org/TR/wake-lock/} internally, it will return a [Promise]{@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise}. Otherwise, it will return a boolean depending on whether the internal method has been called successfully or not. The fact that the internal method has been called successfully does not mean that the action will perform successfully so it is recommended to relay on the &quot;callbackOk&quot; and &quot;callbackError&quot; functions and ignore this returning value.</p>"}],"todo":["Pay attention since many internal functions as the [new W3C's Wake Lock API]{@link https://w3.org/TR/wake-lock/} are still experimental and not well-tested."],"name":"keepAwakeDisable","longname":"CB_Screen.keepAwakeDisable","memberof":"CB_Screen","scope":"static"},{"comment":"/**\r\n * @file Main CrossBase module file.\r\n * @author Joan Alba Maldonado <workindalian@gmail.com>\r\n */","meta":{"filename":"CrossBase.js","lineno":1,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase","code":{}},"name":"CrossBase/CrossBase.js","kind":"file","description":"<p>Main CrossBase module file.</p>","preserveName":true,"author":["Joan Alba Maldonado <workindalian@gmail.com>"],"longname":"CrossBase/CrossBase.js","scope":"global"},{"comment":"/**\r\n * Keeps the name of the CrossBase module.\r\n *\t@constant\r\n * @type {string}\r\n * @default\r\n */","meta":{"range":[2266,2292],"filename":"CrossBase.js","lineno":49,"columnno":4,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase","code":{"id":"astnode100054569","name":"CB_BASE_NAME","type":"Literal","value":"CrossBase"}},"description":"<p>Keeps the name of the CrossBase module.</p>","kind":"constant","type":{"names":["string"]},"defaultvalue":"CrossBase","name":"CB_BASE_NAME","longname":"CB_BASE_NAME","scope":"global","params":[]},{"comment":"/**\r\n Property that contains an object with the options for the main script.\r\n * @namespace CB_Configuration.CrossBase\r\n */","meta":{"filename":"CrossBase.js","lineno":52,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase","code":{}},"description":"<p>Property that contains an object with the options for the main script.</p>","kind":"namespace","name":"CrossBase","memberof":"CB_Configuration","longname":"CB_Configuration.CrossBase","scope":"static"},{"comment":"/**\r\n\t * Path to the CrossBase module, relative to the CrossBrowdy folder.\r\n\t * @memberof CB_Configuration.CrossBase\r\n\t *\t@constant\r\n\t * @type {string}\r\n\t * @default {@link CB_BASE_NAME} + \"/\"\r\n\t */","meta":{"range":[2668,2699],"filename":"CrossBase.js","lineno":65,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase","code":{"id":"astnode100054578","name":"SCRIPT_PATH","type":"BinaryExpression","value":""}},"description":"<p>Path to the CrossBase module, relative to the CrossBrowdy folder.</p>","memberof":"CB_Configuration.CrossBase","kind":"constant","type":{"names":["string"]},"defaultvalue":"{@link CB_BASE_NAME} + \"/\"","name":"SCRIPT_PATH","longname":"CB_Configuration.CrossBase.SCRIPT_PATH","scope":"static"},{"comment":"/**\r\n\t * Defines whether to have in mind possible [iframes]{@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe} that could contain the script or not. Used by some functions of {@link CB_Client}, {@link CB_Events}, etc.\r\n\t * @memberof CB_Configuration.CrossBase\r\n\t *\t@constant\r\n\t * @type {boolean}\r\n\t * @default\r\n\t */","meta":{"range":[3051,3069],"filename":"CrossBase.js","lineno":75,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase","code":{"id":"astnode100054582","name":"MIND_IFRAMES","type":"Literal","value":true}},"description":"<p>Defines whether to have in mind possible [iframes]{@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe} that could contain the script or not. Used by some functions of {@link CB_Client}, {@link CB_Events}, etc.</p>","memberof":"CB_Configuration.CrossBase","kind":"constant","type":{"names":["boolean"]},"defaultvalue":true,"name":"MIND_IFRAMES","longname":"CB_Configuration.CrossBase.MIND_IFRAMES","scope":"static"},{"comment":"/**\r\n\t * Defines whether to allow to extend the DOM if needed or not. If set to true and some methods (as for example [Array.indexOf]{@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/indexOf}, [Array.lastIndexOf]{@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/lastIndexOf}, [Array.isArray]{@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/isArray}, [Array.forEach]{@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach}, [NodeList.forEach]{@link https://developer.mozilla.org/en-US/docs/Web/API/NodeList/forEach}, [HTMLCollection.forEach]{@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach}, etc.) are not supported natively, they will be added.\r\n\t * @memberof CB_Configuration.CrossBase\r\n\t *\t@constant\r\n\t * @type {boolean}\r\n\t * @default\r\n\t */","meta":{"range":[4059,4076],"filename":"CrossBase.js","lineno":85,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase","code":{"id":"astnode100054584","name":"EXTEND_DOM","type":"Literal","value":false}},"description":"<p>Defines whether to allow to extend the DOM if needed or not. If set to true and some methods (as for example [Array.indexOf]{@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/indexOf}, [Array.lastIndexOf]{@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/lastIndexOf}, [Array.isArray]{@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/isArray}, [Array.forEach]{@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach}, [NodeList.forEach]{@link https://developer.mozilla.org/en-US/docs/Web/API/NodeList/forEach}, [HTMLCollection.forEach]{@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach}, etc.) are not supported natively, they will be added.</p>","memberof":"CB_Configuration.CrossBase","kind":"constant","type":{"names":["boolean"]},"defaultvalue":false,"name":"EXTEND_DOM","longname":"CB_Configuration.CrossBase.EXTEND_DOM","scope":"static"},{"comment":"/**\r\n\t * Defines whether to use high precision in the CB_Device.getTime (returning '[window.performance.timing.navigationStart]{@link https://developer.mozilla.org/en-US/docs/Web/API/PerformanceTiming/navigationStart} + [window.performance.now]{@link https://developer.mozilla.org/en-US/docs/Web/API/Performance/now}()', where '[window.performance.now]{@link https://developer.mozilla.org/en-US/docs/Web/API/Performance/now}' could be polyfilled) or not (returning '[Date.now]{@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/now}()', where '[Date.now]{@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/now}' could be polyfilled).\r\n\t * @memberof CB_Configuration.CrossBase\r\n\t *\t@constant\r\n\t * @type {string}\r\n\t * @default\r\n\t */","meta":{"range":[4902,4940],"filename":"CrossBase.js","lineno":95,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase","code":{"id":"astnode100054586","name":"CB_Device_getTime_HIGH_PRECISION","type":"Literal","value":true}},"description":"<p>Defines whether to use high precision in the CB_Device.getTime (returning '[window.performance.timing.navigationStart]{@link https://developer.mozilla.org/en-US/docs/Web/API/PerformanceTiming/navigationStart} + [window.performance.now]{@link https://developer.mozilla.org/en-US/docs/Web/API/Performance/now}()', where '[window.performance.now]{@link https://developer.mozilla.org/en-US/docs/Web/API/Performance/now}' could be polyfilled) or not (returning '[Date.now]{@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/now}()', where '[Date.now]{@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/now}' could be polyfilled).</p>","memberof":"CB_Configuration.CrossBase","kind":"constant","type":{"names":["string"]},"defaultvalue":true,"name":"CB_Device_getTime_HIGH_PRECISION","longname":"CB_Configuration.CrossBase.CB_Device_getTime_HIGH_PRECISION","scope":"static"},{"comment":"/**\r\n\t * Defines whether to use cache for the function {@link CB_Elements.id} by default.\r\n\t * @memberof CB_Configuration.CrossBase\r\n\t *\t@constant\r\n\t * @type {boolean}\r\n\t * @default\r\n\t */","meta":{"range":[5141,5171],"filename":"CrossBase.js","lineno":105,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase","code":{"id":"astnode100054588","name":"CB_Elements_id_USE_CACHE","type":"Literal","value":true}},"description":"<p>Defines whether to use cache for the function {@link CB_Elements.id} by default.</p>","memberof":"CB_Configuration.CrossBase","kind":"constant","type":{"names":["boolean"]},"defaultvalue":true,"name":"CB_Elements_id_USE_CACHE","longname":"CB_Configuration.CrossBase.CB_Elements_id_USE_CACHE","scope":"static"},{"comment":"/**\r\n\t * Defines whether to use cache for the {@link CB_Elements.tag} function by default.\r\n\t * @memberof CB_Configuration.CrossBase\r\n\t *\t@constant\r\n\t * @type {boolean}\r\n\t * @default\r\n\t */","meta":{"range":[5374,5405],"filename":"CrossBase.js","lineno":115,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase","code":{"id":"astnode100054590","name":"CB_Elements_tag_USE_CACHE","type":"Literal","value":true}},"description":"<p>Defines whether to use cache for the {@link CB_Elements.tag} function by default.</p>","memberof":"CB_Configuration.CrossBase","kind":"constant","type":{"names":["boolean"]},"defaultvalue":true,"name":"CB_Elements_tag_USE_CACHE","longname":"CB_Configuration.CrossBase.CB_Elements_tag_USE_CACHE","scope":"static"},{"comment":"/**\r\n\t * Defines whether to use cache for the function {@link CB_Elements.classes} by default.\r\n\t * @memberof CB_Configuration.CrossBase\r\n\t *\t@constant\r\n\t * @type {boolean}\r\n\t * @default\r\n\t */","meta":{"range":[5613,5648],"filename":"CrossBase.js","lineno":125,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase","code":{"id":"astnode100054592","name":"CB_Elements_classes_USE_CACHE","type":"Literal","value":true}},"description":"<p>Defines whether to use cache for the function {@link CB_Elements.classes} by default.</p>","memberof":"CB_Configuration.CrossBase","kind":"constant","type":{"names":["boolean"]},"defaultvalue":true,"name":"CB_Elements_classes_USE_CACHE","longname":"CB_Configuration.CrossBase.CB_Elements_classes_USE_CACHE","scope":"static"},{"comment":"/**\r\n\t * Default language to use for {@link CB_Client} when no language can be detected (very strange case!).\r\n\t * @memberof CB_Configuration.CrossBase\r\n\t *\t@constant\r\n\t * @type {string}\r\n\t * @default\r\n\t */","meta":{"range":[5870,5902],"filename":"CrossBase.js","lineno":135,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase","code":{"id":"astnode100054594","name":"CB_Client_language_DEFAULT","type":"Literal","value":"en"}},"description":"<p>Default language to use for {@link CB_Client} when no language can be detected (very strange case!).</p>","memberof":"CB_Configuration.CrossBase","kind":"constant","type":{"names":["string"]},"defaultvalue":"en","name":"CB_Client_language_DEFAULT","longname":"CB_Configuration.CrossBase.CB_Client_language_DEFAULT","scope":"static"},{"comment":"/**\r\n\t * Default value for the \"allowNavigatorLanguages\" parameter for {@link CB_Client.getLanguage} and {@link CB_Client.getLanguages} functions.\r\n\t * @memberof CB_Configuration.CrossBase\r\n\t *\t@constant\r\n\t * @type {boolean}\r\n\t * @default\r\n\t */","meta":{"range":[6160,6208],"filename":"CrossBase.js","lineno":145,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase","code":{"id":"astnode100054596","name":"CB_Client_allowNavigatorLanguages_DEFAULT","type":"Literal","value":false}},"description":"<p>Default value for the &quot;allowNavigatorLanguages&quot; parameter for {@link CB_Client.getLanguage} and {@link CB_Client.getLanguages} functions.</p>","memberof":"CB_Configuration.CrossBase","kind":"constant","type":{"names":["boolean"]},"defaultvalue":false,"name":"CB_Client_allowNavigatorLanguages_DEFAULT","longname":"CB_Configuration.CrossBase.CB_Client_allowNavigatorLanguages_DEFAULT","scope":"static"},{"comment":"/**\r\n\t * Tells whether the {@link CB_Client.getLanguage} and {@link CB_Client.getLanguages} functions will use the accepted languages detected by PHP (if any) as the first option by default or not.\r\n\t * @memberof CB_Configuration.CrossBase\r\n\t *\t@constant\r\n\t * @type {boolean}\r\n\t * @default\r\n\t */","meta":{"range":[6519,6568],"filename":"CrossBase.js","lineno":155,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase","code":{"id":"astnode100054598","name":"CB_Client_PHPAcceptedLanguagesFirst_DEFAULT","type":"Literal","value":true}},"description":"<p>Tells whether the {@link CB_Client.getLanguage} and {@link CB_Client.getLanguages} functions will use the accepted languages detected by PHP (if any) as the first option by default or not.</p>","memberof":"CB_Configuration.CrossBase","kind":"constant","type":{"names":["boolean"]},"defaultvalue":true,"name":"CB_Client_PHPAcceptedLanguagesFirst_DEFAULT","longname":"CB_Configuration.CrossBase.CB_Client_PHPAcceptedLanguagesFirst_DEFAULT","scope":"static"},{"comment":"/**\r\n\t * Defines whether the URL for the proxy (defined in {@link CB_Configuration.CrossBase.CB_Net_XHR_PROXY_URL}) is relative to the main script folder or not. If it is relative, the \"onCall\" event of the CrossBase module will append the value of the \"scriptPathGiven\" parameter at the beginning.\r\n\t * @memberof CB_Configuration.CrossBase\r\n\t *\t@constant\r\n\t * @type {boolean}\r\n\t * @default\r\n\t */","meta":{"range":[6979,7014],"filename":"CrossBase.js","lineno":165,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase","code":{"id":"astnode100054600","name":"CB_Net_XHR_PROXY_URL_RELATIVE","type":"Literal","value":true}},"description":"<p>Defines whether the URL for the proxy (defined in {@link CB_Configuration.CrossBase.CB_Net_XHR_PROXY_URL}) is relative to the main script folder or not. If it is relative, the &quot;onCall&quot; event of the CrossBase module will append the value of the &quot;scriptPathGiven&quot; parameter at the beginning.</p>","memberof":"CB_Configuration.CrossBase","kind":"constant","type":{"names":["boolean"]},"defaultvalue":true,"name":"CB_Net_XHR_PROXY_URL_RELATIVE","longname":"CB_Configuration.CrossBase.CB_Net_XHR_PROXY_URL_RELATIVE","scope":"static"},{"comment":"/**\r\n\t * Defines whether we want to prevent the Firefox bug that affects [SockJS library]{@link https://github.com/sockjs/sockjs-client/} (see {@link https://github.com/sockjs/sockjs-client/issues/18}) or not. Used by {@link CB_Keyboard}.\r\n\t * @memberof CB_Configuration.CrossBase\r\n\t *\t@constant\r\n\t * @type {boolean}\r\n\t * @default\r\n\t */","meta":{"range":[7365,7409],"filename":"CrossBase.js","lineno":175,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase","code":{"id":"astnode100054602","name":"CB_Net_Sockets_PREVENT_FIREFOX_ESC_BUG","type":"Literal","value":true}},"description":"<p>Defines whether we want to prevent the Firefox bug that affects [SockJS library]{@link https://github.com/sockjs/sockjs-client/} (see {@link https://github.com/sockjs/sockjs-client/issues/18}) or not. Used by {@link CB_Keyboard}.</p>","memberof":"CB_Configuration.CrossBase","kind":"constant","type":{"names":["boolean"]},"defaultvalue":true,"name":"CB_Net_Sockets_PREVENT_FIREFOX_ESC_BUG","longname":"CB_Configuration.CrossBase.CB_Net_Sockets_PREVENT_FIREFOX_ESC_BUG","scope":"static"},{"comment":"/**\r\n\t * Defines whether to allow Nintendo Wii codes (from the Wiimote) set in the {@link CB_Keyboard.extended.WII} object to be defined in the key aliases even if they use codes which belong to other keys. Used by {@link CB_Keyboard}.\r\n\t * @memberof CB_Configuration.CrossBase\r\n\t *\t@constant\r\n\t * @type {boolean}\r\n\t * @default\r\n\t */","meta":{"range":[7758,7813],"filename":"CrossBase.js","lineno":185,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase","code":{"id":"astnode100054604","name":"CB_Keyboard_extended_WII_allowDuplicateKeyAliases","type":"Literal","value":true}},"description":"<p>Defines whether to allow Nintendo Wii codes (from the Wiimote) set in the {@link CB_Keyboard.extended.WII} object to be defined in the key aliases even if they use codes which belong to other keys. Used by {@link CB_Keyboard}.</p>","memberof":"CB_Configuration.CrossBase","kind":"constant","type":{"names":["boolean"]},"defaultvalue":true,"name":"CB_Keyboard_extended_WII_allowDuplicateKeyAliases","longname":"CB_Configuration.CrossBase.CB_Keyboard_extended_WII_allowDuplicateKeyAliases","scope":"static"},{"comment":"/**\r\n\t * Defines whether to allow Sony Playstation 4 codes set in the {@link CB_Keyboard.extended.PS4CB_Keyboard.extended.PS4} object to be defined in the key aliases even if they use codes which belong to other keys. Used by {@link CB_Keyboard}.\r\n\t * @memberof CB_Configuration.CrossBase\r\n\t *\t@constant\r\n\t * @type {boolean}\r\n\t * @default\r\n\t */","meta":{"range":[8172,8228],"filename":"CrossBase.js","lineno":195,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase","code":{"id":"astnode100054606","name":"CB_Keyboard_extended_PS4_allowDuplicateKeyAliases","type":"Literal","value":false}},"description":"<p>Defines whether to allow Sony Playstation 4 codes set in the {@link CB_Keyboard.extended.PS4CB_Keyboard.extended.PS4} object to be defined in the key aliases even if they use codes which belong to other keys. Used by {@link CB_Keyboard}.</p>","memberof":"CB_Configuration.CrossBase","kind":"constant","type":{"names":["boolean"]},"defaultvalue":false,"name":"CB_Keyboard_extended_PS4_allowDuplicateKeyAliases","longname":"CB_Configuration.CrossBase.CB_Keyboard_extended_PS4_allowDuplicateKeyAliases","scope":"static"},{"comment":"/**\r\n\t * Defines whether to allow Smart TV codes (from the remote control) and virtual key codes set in the {@link CB_Keyboard.extended.VK} object to be defined in the key aliases even if they use codes which belong to other keys. Used by {@link CB_Keyboard}.\r\n\t * @memberof CB_Configuration.CrossBase\r\n\t *\t@constant\r\n\t * @type {boolean}\r\n\t * @default\r\n\t */","meta":{"range":[8600,8654],"filename":"CrossBase.js","lineno":205,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase","code":{"id":"astnode100054608","name":"CB_Keyboard_extended_VK_allowDuplicateKeyAliases","type":"Literal","value":true}},"description":"<p>Defines whether to allow Smart TV codes (from the remote control) and virtual key codes set in the {@link CB_Keyboard.extended.VK} object to be defined in the key aliases even if they use codes which belong to other keys. Used by {@link CB_Keyboard}.</p>","memberof":"CB_Configuration.CrossBase","kind":"constant","type":{"names":["boolean"]},"defaultvalue":true,"name":"CB_Keyboard_extended_VK_allowDuplicateKeyAliases","longname":"CB_Configuration.CrossBase.CB_Keyboard_extended_VK_allowDuplicateKeyAliases","scope":"static"},{"comment":"/**\r\n\t * Defines whether to allow Samsung TV key codes (from the remote control) set in the {@link CB_Keyboard.extended.SAMSUNG_TV} object to be defined in the key aliases even if they use codes which belong to other keys. Used by {@link CB_Keyboard}.\r\n\t * @memberof CB_Configuration.CrossBase\r\n\t *\t@constant\r\n\t * @type {boolean}\r\n\t * @default\r\n\t */","meta":{"range":[9018,9081],"filename":"CrossBase.js","lineno":215,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase","code":{"id":"astnode100054610","name":"CB_Keyboard_extended_SAMSUNG_TV_allowDuplicateKeyAliases","type":"Literal","value":false}},"description":"<p>Defines whether to allow Samsung TV key codes (from the remote control) set in the {@link CB_Keyboard.extended.SAMSUNG_TV} object to be defined in the key aliases even if they use codes which belong to other keys. Used by {@link CB_Keyboard}.</p>","memberof":"CB_Configuration.CrossBase","kind":"constant","type":{"names":["boolean"]},"defaultvalue":false,"name":"CB_Keyboard_extended_SAMSUNG_TV_allowDuplicateKeyAliases","longname":"CB_Configuration.CrossBase.CB_Keyboard_extended_SAMSUNG_TV_allowDuplicateKeyAliases","scope":"static"},{"comment":"/**\r\n\t * Default value for the \"avoidProprietary\" proprietary when calling different functions of the {@link CB_Controllers} static class, as the {@link CB_Controllers.getButtonsDown}, the {@link CB_Controllers.isButtonDown} and the {@link CB_Controllers.getGamePads} functions, etc.\r\n\t * @memberof CB_Configuration.CrossBase\r\n\t *\t@constant\r\n\t * @type {boolean}\r\n\t * @default\r\n\t */","meta":{"range":[9478,9524],"filename":"CrossBase.js","lineno":225,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase","code":{"id":"astnode100054612","name":"CB_Controllers_avoidProprietary_DEFAULT","type":"Literal","value":false}},"description":"<p>Default value for the &quot;avoidProprietary&quot; proprietary when calling different functions of the {@link CB_Controllers} static class, as the {@link CB_Controllers.getButtonsDown}, the {@link CB_Controllers.isButtonDown} and the {@link CB_Controllers.getGamePads} functions, etc.</p>","memberof":"CB_Configuration.CrossBase","kind":"constant","type":{"names":["boolean"]},"defaultvalue":false,"name":"CB_Controllers_avoidProprietary_DEFAULT","longname":"CB_Configuration.CrossBase.CB_Controllers_avoidProprietary_DEFAULT","scope":"static"},{"comment":"/**\r\n\t * Allowed width margin of the total screen available to consider whether it is in full screen or not. Needed by old web clients without Fullscreen API support, mainly. Used by the {@link CB_Screen.isFullScreen} function.\r\n\t * @memberof CB_Configuration.CrossBase\r\n\t *\t@constant\r\n\t * @type {float}\r\n\t * @default\r\n\t */","meta":{"range":[9863,9922],"filename":"CrossBase.js","lineno":235,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase","code":{"id":"astnode100054614","name":"CB_Screen_isFullScreen_ALLOWED_WIDTH_MARGIN_PERCENTAGE","type":"Literal","value":3.9}},"description":"<p>Allowed width margin of the total screen available to consider whether it is in full screen or not. Needed by old web clients without Fullscreen API support, mainly. Used by the {@link CB_Screen.isFullScreen} function.</p>","memberof":"CB_Configuration.CrossBase","kind":"constant","type":{"names":["float"]},"defaultvalue":3.9,"name":"CB_Screen_isFullScreen_ALLOWED_WIDTH_MARGIN_PERCENTAGE","longname":"CB_Configuration.CrossBase.CB_Screen_isFullScreen_ALLOWED_WIDTH_MARGIN_PERCENTAGE","scope":"static"},{"comment":"/**\r\n\t * Allowed height margin of the total screen available to consider whether it is in full screen or not. Needed by old web clients without Fullscreen API support, mainly. Used by the {@link CB_Screen.isFullScreen} function.\r\n\t * @memberof CB_Configuration.CrossBase\r\n\t *\t@constant\r\n\t * @type {float}\r\n\t * @default\r\n\t */","meta":{"range":[10262,10322],"filename":"CrossBase.js","lineno":245,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase","code":{"id":"astnode100054616","name":"CB_Screen_isFullScreen_ALLOWED_HEIGHT_MARGIN_PERCENTAGE","type":"Literal","value":3.5}},"description":"<p>Allowed height margin of the total screen available to consider whether it is in full screen or not. Needed by old web clients without Fullscreen API support, mainly. Used by the {@link CB_Screen.isFullScreen} function.</p>","memberof":"CB_Configuration.CrossBase","kind":"constant","type":{"names":["float"]},"defaultvalue":3.5,"name":"CB_Screen_isFullScreen_ALLOWED_HEIGHT_MARGIN_PERCENTAGE","longname":"CB_Configuration.CrossBase.CB_Screen_isFullScreen_ALLOWED_HEIGHT_MARGIN_PERCENTAGE","scope":"static"},{"comment":"/**\r\n\t * Defines whether to allow using \"WAAPI\" ([HTML5 Web Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API}) emulation (it will use [WAAPISim]{@link https://github.com/g200kg/WAAPISim} if needed) or not.\r\n\t * @memberof CB_Configuration.CrossBase\r\n\t *\t@constant\r\n\t * @type {boolean}\r\n\t * @default\r\n\t */","meta":{"range":[10671,10700],"filename":"CrossBase.js","lineno":255,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase","code":{"id":"astnode100054618","name":"WAAPI_EMULATION_ALLOWED","type":"Literal","value":true}},"description":"<p>Defines whether to allow using &quot;WAAPI&quot; ([HTML5 Web Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API}) emulation (it will use [WAAPISim]{@link https://github.com/g200kg/WAAPISim} if needed) or not.</p>","memberof":"CB_Configuration.CrossBase","kind":"constant","type":{"names":["boolean"]},"defaultvalue":true,"name":"WAAPI_EMULATION_ALLOWED","longname":"CB_Configuration.CrossBase.WAAPI_EMULATION_ALLOWED","scope":"static"},{"comment":"/**\r\n\t * Default volume for CB_Speaker (from 0 to 100).\r\n\t * @memberof CB_Configuration.CrossBase\r\n\t *\t@constant\r\n\t * @type {integer}\r\n\t * @default\r\n\t */","meta":{"range":[10868,10898],"filename":"CrossBase.js","lineno":265,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase","code":{"id":"astnode100054620","name":"CB_Speaker_DEFAULT_VOLUME","type":"Literal","value":100}},"description":"<p>Default volume for CB_Speaker (from 0 to 100).</p>","memberof":"CB_Configuration.CrossBase","kind":"constant","type":{"names":["integer"]},"defaultvalue":100,"name":"CB_Speaker_DEFAULT_VOLUME","longname":"CB_Configuration.CrossBase.CB_Speaker_DEFAULT_VOLUME","scope":"static"},{"comment":"/**\r\n\t * Milliseconds that a file is played (with volume set to 0) automatically when an audio file is loaded. Needed for some web clients which cannot find out the duration otherwise. Used by {@link CB_AudioFile}.\r\n\t * @memberof CB_Configuration.CrossBase\r\n\t *\t@constant\r\n\t * @type {integer}\r\n\t * @default\r\n\t */","meta":{"range":[11225,11271],"filename":"CrossBase.js","lineno":275,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase","code":{"id":"astnode100054622","name":"CB_AudioFile_AUTOPLAY_SILENTLY_ON_LOAD_MS","type":"Literal","value":500}},"description":"<p>Milliseconds that a file is played (with volume set to 0) automatically when an audio file is loaded. Needed for some web clients which cannot find out the duration otherwise. Used by {@link CB_AudioFile}.</p>","memberof":"CB_Configuration.CrossBase","kind":"constant","type":{"names":["integer"]},"defaultvalue":500,"name":"CB_AudioFile_AUTOPLAY_SILENTLY_ON_LOAD_MS","longname":"CB_Configuration.CrossBase.CB_AudioFile_AUTOPLAY_SILENTLY_ON_LOAD_MS","scope":"static"},{"comment":"/**\r\n\t * Milliseconds to wait before declaring a sound as failed if it cannot be loaded before. Used by {@link CB_AudioFile_API.SM2}.\r\n\t * @memberof CB_Configuration.CrossBase\r\n\t *\t@constant\r\n\t * @type {integer}\r\n\t * @default\r\n\t */","meta":{"range":[11517,11554],"filename":"CrossBase.js","lineno":285,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase","code":{"id":"astnode100054624","name":"CB_AudioFile_ONLOAD_TIMEOUT_MS","type":"Literal","value":15000}},"description":"<p>Milliseconds to wait before declaring a sound as failed if it cannot be loaded before. Used by {@link CB_AudioFile_API.SM2}.</p>","memberof":"CB_Configuration.CrossBase","kind":"constant","type":{"names":["integer"]},"defaultvalue":15000,"name":"CB_AudioFile_ONLOAD_TIMEOUT_MS","longname":"CB_Configuration.CrossBase.CB_AudioFile_ONLOAD_TIMEOUT_MS","scope":"static"},{"comment":"/**\r\n\t * Tells whether CB_AudioFile[\"AAPI\"] uses [setTimeout]{@link https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/setTimeout} (instead of [timeupdate]{@link https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement/timeupdate_event} event) to detect when the given \"stopAt\" is reached.\r\n\t * @memberof CB_Configuration.CrossBase\r\n\t *\t@constant\r\n\t * @type {boolean}\r\n\t * @default\r\n\t */","meta":{"range":[11989,12041],"filename":"CrossBase.js","lineno":295,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase","code":{"id":"astnode100054626","name":"CB_AudioFile_AAPI_USE_TIMEOUT_TO_DETECT_STOPAT","type":"Literal","value":true}},"description":"<p>Tells whether CB_AudioFile[&quot;AAPI&quot;] uses [setTimeout]{@link https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/setTimeout} (instead of [timeupdate]{@link https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement/timeupdate_event} event) to detect when the given &quot;stopAt&quot; is reached.</p>","memberof":"CB_Configuration.CrossBase","kind":"constant","type":{"names":["boolean"]},"defaultvalue":true,"name":"CB_AudioFile_AAPI_USE_TIMEOUT_TO_DETECT_STOPAT","longname":"CB_Configuration.CrossBase.CB_AudioFile_AAPI_USE_TIMEOUT_TO_DETECT_STOPAT","scope":"static"},{"comment":"/**\r\n\t * Default value for maximum delay (in milliseconds) to wait for a sound to start playing or start next loop (if the time expires, the sound will never be played).\r\n\t\tUsed by {@link CB_AudioFile_API.WAAPI}, {@link CB_AudioFile_API.AAPI}, {@link CB_AudioFile_API.SM2}, {@link CB_AudioFile_API.ACMP} and {@link CB_AudioFileCache}.\r\n\t * @memberof CB_Configuration.CrossBase\r\n\t *\t@constant\r\n\t * @type {integer}\r\n\t * @default\r\n\t */","meta":{"range":[12488,12552],"filename":"CrossBase.js","lineno":306,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase","code":{"id":"astnode100054628","name":"CB_AudioFile_AudioFileCache_ALLOWED_RECURSIVE_DELAY_DEFAULT","type":"Literal","value":150}},"description":"<p>Default value for maximum delay (in milliseconds) to wait for a sound to start playing or start next loop (if the time expires, the sound will never be played).<br> Used by {@link CB_AudioFile_API.WAAPI}, {@link CB_AudioFile_API.AAPI}, {@link CB_AudioFile_API.SM2}, {@link CB_AudioFile_API.ACMP} and {@link CB_AudioFileCache}.</p>","memberof":"CB_Configuration.CrossBase","kind":"constant","type":{"names":["integer"]},"defaultvalue":150,"name":"CB_AudioFile_AudioFileCache_ALLOWED_RECURSIVE_DELAY_DEFAULT","longname":"CB_Configuration.CrossBase.CB_AudioFile_AudioFileCache_ALLOWED_RECURSIVE_DELAY_DEFAULT","scope":"static"},{"comment":"/**\r\n\t * Tells whether to mute or not the audio files when they load or are checking. Note: Audio cache does not work properly on BlackBerry PlayBook's default browser if the sounds are muted when load or are checking.\r\n\t\tUsed by {@link CB_AudioFile}, {@link CB_AudioFile_API.WAAPI}, {@link CB_AudioFile_API.AAPI}, {@link CB_AudioFile_API.SM2}, {@link CB_AudioFile_API.ACMP} and {@link CB_AudioFileCache}.\r\n\t * @memberof CB_Configuration.CrossBase\r\n\t *\t@constant\r\n\t * @type {boolean}\r\n\t * @default !(navigator.userAgent.indexOf(\"PlayBook\") !== -1 && navigator.userAgent.indexOf(\"Tablet OS\") !== -1)\r\n\t */","meta":{"range":[13171,13326],"filename":"CrossBase.js","lineno":317,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase","code":{"id":"astnode100054630","name":"CB_AudioFile_AudioFileCache_MUTE_ON_LOAD_AND_CHECKING","type":"UnaryExpression","value":"!"}},"description":"<p>Tells whether to mute or not the audio files when they load or are checking. Note: Audio cache does not work properly on BlackBerry PlayBook's default browser if the sounds are muted when load or are checking.<br> Used by {@link CB_AudioFile}, {@link CB_AudioFile_API.WAAPI}, {@link CB_AudioFile_API.AAPI}, {@link CB_AudioFile_API.SM2}, {@link CB_AudioFile_API.ACMP} and {@link CB_AudioFileCache}.</p>","memberof":"CB_Configuration.CrossBase","kind":"constant","type":{"names":["boolean"]},"defaultvalue":"!(navigator.userAgent.indexOf(\"PlayBook\") !== -1 && navigator.userAgent.indexOf(\"Tablet OS\") !== -1)","name":"CB_AudioFile_AudioFileCache_MUTE_ON_LOAD_AND_CHECKING","longname":"CB_Configuration.CrossBase.CB_AudioFile_AudioFileCache_MUTE_ON_LOAD_AND_CHECKING","scope":"static"},{"comment":"/**\r\n\t * Defines whether to use {@link CB_Speaker._volume} as default volume. Used by {@link CB_AudioFile}, {@link CB_AudioFile_API.WAAPI}, {@link CB_AudioFile_API.AAPI}, {@link CB_AudioFile_API.SM2}, {@link CB_AudioFile_API.ACMP} and {@link CB_AudioFileCache}.\r\n\t * @memberof CB_Configuration.CrossBase\r\n\t *\t@constant\r\n\t * @type {boolean}\r\n\t * @default\r\n\t */","meta":{"range":[13829,13892],"filename":"CrossBase.js","lineno":327,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase","code":{"id":"astnode100054653","name":"CB_AudioFile_AudioFileCache_USE_SPEAKER_VOLUME_AS_DEFAULT","type":"Literal","value":true}},"description":"<p>Defines whether to use {@link CB_Speaker._volume} as default volume. Used by {@link CB_AudioFile}, {@link CB_AudioFile_API.WAAPI}, {@link CB_AudioFile_API.AAPI}, {@link CB_AudioFile_API.SM2}, {@link CB_AudioFile_API.ACMP} and {@link CB_AudioFileCache}.</p>","memberof":"CB_Configuration.CrossBase","kind":"constant","type":{"names":["boolean"]},"defaultvalue":true,"name":"CB_AudioFile_AudioFileCache_USE_SPEAKER_VOLUME_AS_DEFAULT","longname":"CB_Configuration.CrossBase.CB_AudioFile_AudioFileCache_USE_SPEAKER_VOLUME_AS_DEFAULT","scope":"static"},{"comment":"/**\r\n\t * Defines whether to use {@link CB_Speaker._volume} as maximum volume. Used by {@link CB_AudioFile}, {@link CB_AudioFile_API.WAAPI}, {@link CB_AudioFile_API.AAPI}, {@link CB_AudioFile_API.SM2} and {@link CB_AudioFile_API.ACMP}.\r\n\t * @memberof CB_Configuration.CrossBase\r\n\t *\t@constant\r\n\t * @type {boolean}\r\n\t * @default\r\n\t */","meta":{"range":[14239,14303],"filename":"CrossBase.js","lineno":337,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase","code":{"id":"astnode100054655","name":"CB_AudioFile_AudioFileCache_USE_SPEAKER_VOLUME_AS_MAXIMUM","type":"Literal","value":false}},"description":"<p>Defines whether to use {@link CB_Speaker._volume} as maximum volume. Used by {@link CB_AudioFile}, {@link CB_AudioFile_API.WAAPI}, {@link CB_AudioFile_API.AAPI}, {@link CB_AudioFile_API.SM2} and {@link CB_AudioFile_API.ACMP}.</p>","memberof":"CB_Configuration.CrossBase","kind":"constant","type":{"names":["boolean"]},"defaultvalue":false,"name":"CB_AudioFile_AudioFileCache_USE_SPEAKER_VOLUME_AS_MAXIMUM","longname":"CB_Configuration.CrossBase.CB_AudioFile_AudioFileCache_USE_SPEAKER_VOLUME_AS_MAXIMUM","scope":"static"},{"comment":"/**\r\n\t * Array with the default desired canvas emulation methods by order of preference. Used by {@link CB_Canvas}.\r\n\t * @memberof CB_Configuration.CrossBase\r\n\t *\t@constant\r\n\t * @type {array}\r\n\t * @default\r\n\t */","meta":{"range":[14528,14684],"filename":"CrossBase.js","lineno":347,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase","code":{"id":"astnode100054657","name":"CB_Canvas_PREFERRED_EMULATION_METHODS","type":"ArrayExpression","value":"[\"FLASH\",\"VML\",\"DHTML\",\"SILVERLIGHT\"]"}},"description":"<p>Array with the default desired canvas emulation methods by order of preference. Used by {@link CB_Canvas}.</p>","memberof":"CB_Configuration.CrossBase","kind":"constant","type":{"names":["array"]},"defaultvalue":"[\"FLASH\",\"VML\",\"DHTML\",\"SILVERLIGHT\"]","defaultvaluetype":"array","name":"CB_Canvas_PREFERRED_EMULATION_METHODS","longname":"CB_Configuration.CrossBase.CB_Canvas_PREFERRED_EMULATION_METHODS","scope":"static"},{"comment":"/**\r\n\t * Value by default when the \"allowEmulation\" parameter is not provided in the {@link CB_AudioDetector.getPreferredAPI}, the {@link CB_AudioDetector.getSupportedAPIs} or the {@link CB_AudioDetector.isAPISupported} function.\r\n\t * @memberof CB_Configuration.CrossBase\r\n\t *\t@constant\r\n\t * @type {boolean}\r\n\t * @default\r\n\t */","meta":{"range":[15026,15072],"filename":"CrossBase.js","lineno":363,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase","code":{"id":"astnode100054663","name":"CB_AudioDetector_allowEmulation_DEFAULT","type":"Literal","value":false}},"description":"<p>Value by default when the &quot;allowEmulation&quot; parameter is not provided in the {@link CB_AudioDetector.getPreferredAPI}, the {@link CB_AudioDetector.getSupportedAPIs} or the {@link CB_AudioDetector.isAPISupported} function.</p>","memberof":"CB_Configuration.CrossBase","kind":"constant","type":{"names":["boolean"]},"defaultvalue":false,"name":"CB_AudioDetector_allowEmulation_DEFAULT","longname":"CB_Configuration.CrossBase.CB_AudioDetector_allowEmulation_DEFAULT","scope":"static"},{"comment":"/**\r\n\t * Array with the default preferred audio APIs by order of preference. Used by {@link CB_AudioFileCache} and {@link CB_AudioDetector}.\r\n\t\tPossible audio APIs are \"WAAPI\" ([HTML5 Web Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API}), \"SM2\" ([SoundManager 2]{@link http://schillmania.com/projects/soundmanager2/}), \"ACMP\" ([Apache Cordova Media Plugin]{@link https://github.com/apache/cordova-plugin-media}) or \"AAPI\" ([HTML5 Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/audio}).\r\n\t\tNote: since Internet Explorer 9 works better with SM2 than with AAPI, if it is detected then the default value will be: [ \"WAAPI\", \"SM2\", \"ACMP\", \"AAPI\" ]\r\n\t * @memberof CB_Configuration.CrossBase\r\n\t *\t@constant\r\n\t * @type {array}\r\n\t * @default [\"WAAPI\", \"AAPI\", \"ACMP\", \"SM2\"]\r\n\t */","meta":{"range":[15920,16205],"filename":"CrossBase.js","lineno":375,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase","code":{"id":"astnode100054665","name":"CB_AudioFileCache_PREFERRED_AUDIO_APIS","type":"ConditionalExpression","value":""}},"description":"<p>Array with the default preferred audio APIs by order of preference. Used by {@link CB_AudioFileCache} and {@link CB_AudioDetector}.<br> Possible audio APIs are &quot;WAAPI&quot; ([HTML5 Web Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API}), &quot;SM2&quot; ([SoundManager 2]{@link http://schillmania.com/projects/soundmanager2/}), &quot;ACMP&quot; ([Apache Cordova Media Plugin]{@link https://github.com/apache/cordova-plugin-media}) or &quot;AAPI&quot; ([HTML5 Audio API]{@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/audio}).<br> Note: since Internet Explorer 9 works better with SM2 than with AAPI, if it is detected then the default value will be: [ &quot;WAAPI&quot;, &quot;SM2&quot;, &quot;ACMP&quot;, &quot;AAPI&quot; ]</p>","memberof":"CB_Configuration.CrossBase","kind":"constant","type":{"names":["array"]},"defaultvalue":"[\"WAAPI\", \"AAPI\", \"ACMP\", \"SM2\"]","name":"CB_AudioFileCache_PREFERRED_AUDIO_APIS","longname":"CB_Configuration.CrossBase.CB_AudioFileCache_PREFERRED_AUDIO_APIS","scope":"static"},{"comment":"/**\r\n\t * Array with the default preferred audio formats by order of preference. Used by {@link CB_AudioFileCache} and {@link CB_AudioDetector}.\r\n\t\tNOTE: some web clients do not support to specify codecs so it is better to also provide strings without codecs.\r\n\t * @memberof CB_Configuration.CrossBase\r\n\t *\t@constant\r\n\t * @type {array}\r\n\t * @default\r\n\t */","meta":{"range":[16623,19154],"filename":"CrossBase.js","lineno":395,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase","code":{"id":"astnode100054687","name":"CB_AudioFileCache_PREFERRED_AUDIO_FORMATS","type":"ArrayExpression","value":"[\"audio/ogg; codecs=\\\"vorbis\\\"\",\"audio/ogg; codecs=\\\"speex\\\"\",\"audio/ogg; codecs=\\\"flac\\\"\",\"audio/ogg\",\"audio/mpeg; codecs=\\\"mp3\\\"\",\"audio/mpeg\",\"audio/mp4; codecs=\\\"mp4a.40.5\\\"\",\"audio/mp4; codecs=\\\"mp4a.40.2\\\"\",\"audio/mp4; codecs=\\\"mp4a.40.05\\\"\",\"audio/mp4; codecs=\\\"mp4a.40.02\\\"\",\"audio/mp4; codecs=\\\"mp4a.69\\\"\",\"audio/mp4; codecs=\\\"mp4a.6B\\\"\",\"audio/mp4; codecs=\\\"mp4a.67\\\"\",\"audio/mp4; codecs=\\\"mp4a.a6\\\"\",\"audio/mp4; codecs=\\\"mp4a.a5\\\"\",\"audio/mp4; codecs=\\\"aac51\\\"\",\"audio/mp4; codecs=\\\"ac-3\\\"\",\"audio/mp4; codecs=\\\"ec-3\\\"\",\"audio/mp4\",\"audio/aac; codecs=\\\"aac\\\"\",\"audio/aac; codecs=\\\"mp4a.40.5\\\"\",\"audio/aac; codecs=\\\"vorbis\\\"\",\"audio/aac\",\"audio/x-aac; codecs=\\\"aac\\\"\",\"audio/x-aac\",\"audio/x-m4b; codecs=\\\"aac\\\"\",\"audio/x-m4b\",\"audio/x-m4p; codecs=\\\"aac\\\"\",\"audio/x-m4p\",\"audio/webm; codecs=\\\"vorbis\\\"\",\"audio/webm\",\"audio/3gpp; codecs=\\\"samr\\\"\",\"audio/3gpp\",\"audio/wav; codecs=\\\"1\\\"\",\"audio/wav\",\"audio/x-wav; codecs=\\\"1\\\"\",\"audio/x-wav\",\"audio/x-pn-wav; codecs=\\\"1\\\"\",\"audio/x-pn-wav\",\"audio/wave; codecs=\\\"1\\\"\",\"audio/wave\",\"audio/x-wave; codecs=\\\"1\\\"\",\"audio/x-wave\"]"}},"description":"<p>Array with the default preferred audio formats by order of preference. Used by {@link CB_AudioFileCache} and {@link CB_AudioDetector}.<br> NOTE: some web clients do not support to specify codecs so it is better to also provide strings without codecs.</p>","memberof":"CB_Configuration.CrossBase","kind":"constant","type":{"names":["array"]},"defaultvalue":"[\"audio/ogg; codecs=\\\"vorbis\\\"\",\"audio/ogg; codecs=\\\"speex\\\"\",\"audio/ogg; codecs=\\\"flac\\\"\",\"audio/ogg\",\"audio/mpeg; codecs=\\\"mp3\\\"\",\"audio/mpeg\",\"audio/mp4; codecs=\\\"mp4a.40.5\\\"\",\"audio/mp4; codecs=\\\"mp4a.40.2\\\"\",\"audio/mp4; codecs=\\\"mp4a.40.05\\\"\",\"audio/mp4; codecs=\\\"mp4a.40.02\\\"\",\"audio/mp4; codecs=\\\"mp4a.69\\\"\",\"audio/mp4; codecs=\\\"mp4a.6B\\\"\",\"audio/mp4; codecs=\\\"mp4a.67\\\"\",\"audio/mp4; codecs=\\\"mp4a.a6\\\"\",\"audio/mp4; codecs=\\\"mp4a.a5\\\"\",\"audio/mp4; codecs=\\\"aac51\\\"\",\"audio/mp4; codecs=\\\"ac-3\\\"\",\"audio/mp4; codecs=\\\"ec-3\\\"\",\"audio/mp4\",\"audio/aac; codecs=\\\"aac\\\"\",\"audio/aac; codecs=\\\"mp4a.40.5\\\"\",\"audio/aac; codecs=\\\"vorbis\\\"\",\"audio/aac\",\"audio/x-aac; codecs=\\\"aac\\\"\",\"audio/x-aac\",\"audio/x-m4b; codecs=\\\"aac\\\"\",\"audio/x-m4b\",\"audio/x-m4p; codecs=\\\"aac\\\"\",\"audio/x-m4p\",\"audio/webm; codecs=\\\"vorbis\\\"\",\"audio/webm\",\"audio/3gpp; codecs=\\\"samr\\\"\",\"audio/3gpp\",\"audio/wav; codecs=\\\"1\\\"\",\"audio/wav\",\"audio/x-wav; codecs=\\\"1\\\"\",\"audio/x-wav\",\"audio/x-pn-wav; codecs=\\\"1\\\"\",\"audio/x-pn-wav\",\"audio/wave; codecs=\\\"1\\\"\",\"audio/wave\",\"audio/x-wave; codecs=\\\"1\\\"\",\"audio/x-wave\"]","defaultvaluetype":"array","name":"CB_AudioFileCache_PREFERRED_AUDIO_FORMATS","longname":"CB_Configuration.CrossBase.CB_AudioFileCache_PREFERRED_AUDIO_FORMATS","scope":"static"},{"comment":"/**\r\n * URL for the proxy to prevent cross-domain issues through AJAX, used by {@link CB_Net.XHR.callProxy} function. Can be relative to the main script folder or not, depending on {@link CB_Configuration.CrossBase.CB_Net_XHR_PROXY_URL_RELATIVE}.\r\n\t<br />\r\n\tNOTE: Edit the \"CB_proxy.config.php\" file to configure the default proxy. Apart from configuring it, adding some security measures is highly recommended.\r\n\tHave in mind that, for safety reasons, the default proxy only allows to request the URLs defined in the \"$allowedURLs\" array in the \"CB_proxy.config.php\" file. Just edit it to allow other URLs.\r\n * @memberof CB_Configuration.CrossBase\r\n * @name CB_Net_XHR_PROXY_URL\r\n *\t@constant\r\n * @type {string}\r\n * @default {@link CB_Configuration.CrossBase.SCRIPT_PATH} + \"net/proxy/CB_proxy.php\"\r\n */","meta":{"filename":"CrossBase.js","lineno":457,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase","code":{}},"description":"<p>URL for the proxy to prevent cross-domain issues through AJAX, used by {@link CB_Net.XHR.callProxy} function. Can be relative to the main script folder or not, depending on {@link CB_Configuration.CrossBase.CB_Net_XHR_PROXY_URL_RELATIVE}.<br> <br /><br> NOTE: Edit the &quot;CB_proxy.config.php&quot; file to configure the default proxy. Apart from configuring it, adding some security measures is highly recommended.<br> Have in mind that, for safety reasons, the default proxy only allows to request the URLs defined in the &quot;$allowedURLs&quot; array in the &quot;CB_proxy.config.php&quot; file. Just edit it to allow other URLs.</p>","memberof":"CB_Configuration.CrossBase","name":"CB_Net_XHR_PROXY_URL","kind":"constant","type":{"names":["string"]},"defaultvalue":"{@link CB_Configuration.CrossBase.SCRIPT_PATH} + \"net/proxy/CB_proxy.php\"","scope":"static","longname":"CB_Configuration.CrossBase.CB_Net_XHR_PROXY_URL"},{"comment":"/**\r\n * Detects whether the web client needs [WAAPISim]{@link https://github.com/g200kg/WAAPISim} or not.\r\n * @memberof CB_Configuration.CrossBase\r\n * @name needsWAAPISim\r\n * @function\r\n * @returns {boolean}\r\n */","meta":{"filename":"CrossBase.js","lineno":473,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase","code":{}},"description":"<p>Detects whether the web client needs [WAAPISim]{@link https://github.com/g200kg/WAAPISim} or not.</p>","memberof":"CB_Configuration.CrossBase","name":"needsWAAPISim","kind":"function","returns":[{"type":{"names":["boolean"]}}],"scope":"static","longname":"CB_Configuration.CrossBase.needsWAAPISim"},{"comment":"/**\r\n * Detects whether the web client needs [Canbox]{@link https://github.com/robertinglin/CanBox} or not.\r\n * @memberof CB_Configuration.CrossBase\r\n * @name needsCanbox\r\n * @function\r\n * @returns {boolean}\r\n */","meta":{"filename":"CrossBase.js","lineno":547,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase","code":{}},"description":"<p>Detects whether the web client needs [Canbox]{@link https://github.com/robertinglin/CanBox} or not.</p>","memberof":"CB_Configuration.CrossBase","name":"needsCanbox","kind":"function","returns":[{"type":{"names":["boolean"]}}],"scope":"static","longname":"CB_Configuration.CrossBase.needsCanbox"},{"comment":"/**\r\n * Detects whether the web client needs [ExplorerCanvas]{@link https://github.com/arv/explorercanvas} or not.\r\n * @memberof CB_Configuration.CrossBase\r\n * @name needsExplorerCanvas\r\n * @function\r\n * @returns {boolean}\r\n */","meta":{"filename":"CrossBase.js","lineno":570,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase","code":{}},"description":"<p>Detects whether the web client needs [ExplorerCanvas]{@link https://github.com/arv/explorercanvas} or not.</p>","memberof":"CB_Configuration.CrossBase","name":"needsExplorerCanvas","kind":"function","returns":[{"type":{"names":["boolean"]}}],"scope":"static","longname":"CB_Configuration.CrossBase.needsExplorerCanvas"},{"comment":"/**\r\n * Detects whether the web client needs [SLCanvas]{@link https://slcanvas.codeplex.com/} or not.\r\n * @memberof CB_Configuration.CrossBase\r\n * @name needsSLCanvas\r\n * @function\r\n * @returns {boolean}\r\n */","meta":{"filename":"CrossBase.js","lineno":593,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase","code":{}},"description":"<p>Detects whether the web client needs [SLCanvas]{@link https://slcanvas.codeplex.com/} or not.</p>","memberof":"CB_Configuration.CrossBase","name":"needsSLCanvas","kind":"function","returns":[{"type":{"names":["boolean"]}}],"scope":"static","longname":"CB_Configuration.CrossBase.needsSLCanvas"},{"comment":"/**\r\n * Detects whether the web client needs [FlashCanvas]{@link https://github.com/everlaat/flashcanvas} or not.\r\n * @memberof CB_Configuration.CrossBase\r\n * @name needsFlashCanvas\r\n * @function\r\n * @returns {boolean}\r\n */","meta":{"filename":"CrossBase.js","lineno":619,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase","code":{}},"description":"<p>Detects whether the web client needs [FlashCanvas]{@link https://github.com/everlaat/flashcanvas} or not.</p>","memberof":"CB_Configuration.CrossBase","name":"needsFlashCanvas","kind":"function","returns":[{"type":{"names":["boolean"]}}],"scope":"static","longname":"CB_Configuration.CrossBase.needsFlashCanvas"},{"comment":"/**\r\n * Detects whether the web client needs [canvas-text]{@link https://github.com/PhenX/canvas-text} or not.\r\n * @memberof CB_Configuration.CrossBase\r\n * @name needsCanvasText\r\n * @function\r\n * @returns {boolean}\r\n */","meta":{"filename":"CrossBase.js","lineno":641,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase","code":{}},"description":"<p>Detects whether the web client needs [canvas-text]{@link https://github.com/PhenX/canvas-text} or not.</p>","memberof":"CB_Configuration.CrossBase","name":"needsCanvasText","kind":"function","returns":[{"type":{"names":["boolean"]}}],"scope":"static","longname":"CB_Configuration.CrossBase.needsCanvasText"},{"comment":"/**\r\n * Detects whether the web client needs [timbre.js]{@link https://mohayonao.github.io/timbre.js/} (including [subcollider.js]{@link https://github.com/mohayonao/subcollider}) or not.\r\n * @function\r\n * @memberof CB_Configuration.CrossBase\r\n * @name needsTimbreJS\r\n * @returns {boolean}\r\n */","meta":{"filename":"CrossBase.js","lineno":683,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase","code":{}},"description":"<p>Detects whether the web client needs [timbre.js]{@link https://mohayonao.github.io/timbre.js/} (including [subcollider.js]{@link https://github.com/mohayonao/subcollider}) or not.</p>","kind":"function","memberof":"CB_Configuration.CrossBase","name":"needsTimbreJS","returns":[{"type":{"names":["boolean"]}}],"scope":"static","longname":"CB_Configuration.CrossBase.needsTimbreJS"},{"comment":"/**\r\n * Detects whether the web client needs [jsfx]{@link https://github.com/loov/jsfx} or not.\r\n * @memberof CB_Configuration.CrossBase\r\n * @name needsJsfx\r\n * @function\r\n * @returns {boolean}\r\n */","meta":{"filename":"CrossBase.js","lineno":697,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase","code":{}},"description":"<p>Detects whether the web client needs [jsfx]{@link https://github.com/loov/jsfx} or not.</p>","memberof":"CB_Configuration.CrossBase","name":"needsJsfx","kind":"function","returns":[{"type":{"names":["boolean"]}}],"scope":"static","longname":"CB_Configuration.CrossBase.needsJsfx"},{"comment":"/**\r\n * Detects whether the web client needs [Pressure.js]{@link https://pressurejs.com/} or not.\r\n * @memberof CB_Configuration.CrossBase\r\n * @name needsPressureJS\r\n * @function\r\n * @returns {boolean}\r\n */","meta":{"filename":"CrossBase.js","lineno":711,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase","code":{}},"description":"<p>Detects whether the web client needs [Pressure.js]{@link https://pressurejs.com/} or not.</p>","memberof":"CB_Configuration.CrossBase","name":"needsPressureJS","kind":"function","returns":[{"type":{"names":["boolean"]}}],"scope":"static","longname":"CB_Configuration.CrossBase.needsPressureJS"},{"comment":"/**\r\n * Detects whether the web client needs [Hammer.js]{@link http://hammerjs.github.io/} or not.\r\n * @memberof CB_Configuration.CrossBase\r\n * @name needsHammerJS\r\n * @function\r\n * @returns {boolean}\r\n */","meta":{"filename":"CrossBase.js","lineno":725,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase","code":{}},"description":"<p>Detects whether the web client needs [Hammer.js]{@link http://hammerjs.github.io/} or not.</p>","memberof":"CB_Configuration.CrossBase","name":"needsHammerJS","kind":"function","returns":[{"type":{"names":["boolean"]}}],"scope":"static","longname":"CB_Configuration.CrossBase.needsHammerJS"},{"comment":"/**\r\n * Detects whether the web client needs [gamepad-plus]{@link https://github.com/MozVR/gamepad-plus} or not.\r\n * @memberof CB_Configuration.CrossBase\r\n * @name needsGamepadPlus\r\n * @function\r\n * @returns {boolean}\r\n * @todo Find a better way for this as old Firefox versions can only detect GamePad API support when the events are fired, so we cannot relay on navigator.getGamepads/navigator.webkitGetGamepads/navigator.webkitGamepads.\r\n */","meta":{"filename":"CrossBase.js","lineno":739,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase","code":{}},"description":"<p>Detects whether the web client needs [gamepad-plus]{@link https://github.com/MozVR/gamepad-plus} or not.</p>","memberof":"CB_Configuration.CrossBase","name":"needsGamepadPlus","kind":"function","returns":[{"type":{"names":["boolean"]}}],"todo":["Find a better way for this as old Firefox versions can only detect GamePad API support when the events are fired, so we cannot relay on navigator.getGamepads/navigator.webkitGetGamepads/navigator.webkitGamepads."],"scope":"static","longname":"CB_Configuration.CrossBase.needsGamepadPlus"},{"comment":"/**\r\n * Detects whether the web client needs [NoSleep.js]{@link https://github.com/richtr/NoSleep.js} or not.\r\n * @function\r\n * @memberof CB_Configuration.CrossBase\r\n * @name needsSleepJS\r\n * @returns {boolean}\r\n */","meta":{"filename":"CrossBase.js","lineno":754,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase","code":{}},"description":"<p>Detects whether the web client needs [NoSleep.js]{@link https://github.com/richtr/NoSleep.js} or not.</p>","kind":"function","memberof":"CB_Configuration.CrossBase","name":"needsSleepJS","returns":[{"type":{"names":["boolean"]}}],"scope":"static","longname":"CB_Configuration.CrossBase.needsSleepJS"},{"comment":"/**\r\n * Directory that contains the [SockJS library]{@link https://github.com/sockjs/sockjs-client/} files.\r\n * @memberof CB_Configuration.CrossBase\r\n * @name SOCKJS_PATH\r\n *\t@constant\r\n * @type {string}\r\n * @default {@link CB_Configuration.CrossBase.SCRIPT_PATH} + \"net/sockets/SockJS/\"\r\n */","meta":{"filename":"CrossBase.js","lineno":769,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase","code":{}},"description":"<p>Directory that contains the [SockJS library]{@link https://github.com/sockjs/sockjs-client/} files.</p>","memberof":"CB_Configuration.CrossBase","name":"SOCKJS_PATH","kind":"constant","type":{"names":["string"]},"defaultvalue":"{@link CB_Configuration.CrossBase.SCRIPT_PATH} + \"net/sockets/SockJS/\"","scope":"static","longname":"CB_Configuration.CrossBase.SOCKJS_PATH"},{"comment":"/**\r\n * The script file path for the [SockJS library]{@link https://github.com/sockjs/sockjs-client/}. As the newer [SockJS library]{@link https://github.com/sockjs/sockjs-client/} versions do not work in old Internet Explorer versions (6, 7 or 8), if they are detected it will use the [SockJS library]{@link https://github.com/sockjs/sockjs-client/} 0.3.4 version instead.\r\n * @memberof CB_Configuration.CrossBase\r\n * @name SOCKJS_PATH_SCRIPT_FILE\r\n *\t@constant\r\n * @type {string}\r\n * @default {@link CB_Configuration[CB_BASE_NAME].SOCKJS_PATH} + SOCKJS_SCRIPT_FILE, where \"SOCKJS_SCRIPT_FILE\" is sockjs-0.3.4.min.js (SockJS 0.3.4), sockjs-1.1.1.min.js (SockJS 1.1.1) or sockjs.min.js (last version) depending on the client detected.\r\n */","meta":{"filename":"CrossBase.js","lineno":780,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase","code":{}},"description":"<p>The script file path for the [SockJS library]{@link https://github.com/sockjs/sockjs-client/}. As the newer [SockJS library]{@link https://github.com/sockjs/sockjs-client/} versions do not work in old Internet Explorer versions (6, 7 or 8), if they are detected it will use the [SockJS library]{@link https://github.com/sockjs/sockjs-client/} 0.3.4 version instead.</p>","memberof":"CB_Configuration.CrossBase","name":"SOCKJS_PATH_SCRIPT_FILE","kind":"constant","type":{"names":["string"]},"defaultvalue":"{@link CB_Configuration[CB_BASE_NAME].SOCKJS_PATH} + SOCKJS_SCRIPT_FILE, where \"SOCKJS_SCRIPT_FILE\" is sockjs-0.3.4.min.js (SockJS 0.3.4), sockjs-1.1.1.min.js (SockJS 1.1.1) or sockjs.min.js (last version) depending on the client detected.","scope":"static","longname":"CB_Configuration.CrossBase.SOCKJS_PATH_SCRIPT_FILE"},{"comment":"/**\r\n * Defines whether to load or not intelxdk.js (used by [Intel XDK]{@link https://en.wikipedia.org/wiki/Intel_XDK}).\r\n * @memberof CB_Configuration.CrossBase\r\n * @name INTELXDKJS_LOAD\r\n *\t@constant\r\n * @type {boolean}\r\n * @default\r\n */","meta":{"filename":"CrossBase.js","lineno":795,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase","code":{}},"description":"<p>Defines whether to load or not intelxdk.js (used by [Intel XDK]{@link https://en.wikipedia.org/wiki/Intel_XDK}).</p>","memberof":"CB_Configuration.CrossBase","name":"INTELXDKJS_LOAD","kind":"constant","type":{"names":["boolean"]},"scope":"static","longname":"CB_Configuration.CrossBase.INTELXDKJS_LOAD"},{"comment":"/**\r\n * Directory that contains the \"intelxdk.js\" file (used by [Intel XDK]{@link https://en.wikipedia.org/wiki/Intel_XDK}).\r\n * @memberof CB_Configuration.CrossBase\r\n * @name INTELXDKJS_PATH\r\n *\t@constant\r\n * @type {string}\r\n * @default\r\n */","meta":{"filename":"CrossBase.js","lineno":805,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase","code":{}},"description":"<p>Directory that contains the &quot;intelxdk.js&quot; file (used by [Intel XDK]{@link https://en.wikipedia.org/wiki/Intel_XDK}).</p>","memberof":"CB_Configuration.CrossBase","name":"INTELXDKJS_PATH","kind":"constant","type":{"names":["string"]},"scope":"static","longname":"CB_Configuration.CrossBase.INTELXDKJS_PATH"},{"comment":"/**\r\n * The script file path for intelxdk.js (used by [Intel XDK]{@link https://en.wikipedia.org/wiki/Intel_XDK}).\r\n * @memberof CB_Configuration.CrossBase\r\n * @name INTELXDKJS_PATH_SCRIPT_FILE\r\n *\t@constant\r\n * @type {string}\r\n * @default {@link CB_Configuration.CrossBase.INTELXDKJS_PATH} + \"intelxdk.js\"\r\n */","meta":{"filename":"CrossBase.js","lineno":815,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase","code":{}},"description":"<p>The script file path for intelxdk.js (used by [Intel XDK]{@link https://en.wikipedia.org/wiki/Intel_XDK}).</p>","memberof":"CB_Configuration.CrossBase","name":"INTELXDKJS_PATH_SCRIPT_FILE","kind":"constant","type":{"names":["string"]},"defaultvalue":"{@link CB_Configuration.CrossBase.INTELXDKJS_PATH} + \"intelxdk.js\"","scope":"static","longname":"CB_Configuration.CrossBase.INTELXDKJS_PATH_SCRIPT_FILE"},{"comment":"/**\r\n * Defines whether the path defined in {@link CB_Configuration.CrossBase.INTELXDKJS_PATH_SCRIPT_FILE} is either absolute or relative to the CrossBrowdy script path.\r\n * @memberof CB_Configuration.CrossBase\r\n * @name INTELXDKJS_PATH_ABSOLUTE\r\n *\t@constant\r\n * @type {boolean}\r\n * @default\r\n */","meta":{"filename":"CrossBase.js","lineno":825,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase","code":{}},"description":"<p>Defines whether the path defined in {@link CB_Configuration.CrossBase.INTELXDKJS_PATH_SCRIPT_FILE} is either absolute or relative to the CrossBrowdy script path.</p>","memberof":"CB_Configuration.CrossBase","name":"INTELXDKJS_PATH_ABSOLUTE","kind":"constant","type":{"names":["boolean"]},"scope":"static","longname":"CB_Configuration.CrossBase.INTELXDKJS_PATH_ABSOLUTE"},{"comment":"/**\r\n * Defines whether to try to load or not init-dev.js (used by [Intel XDK]{@link https://en.wikipedia.org/wiki/Intel_XDK}).\r\n\tIf set to true, the checker defined at {@link CB_Configuration.CrossBase.INTELXDK_INITDEVJS_LOAD_CHECKER} will finally decide whether to load it or not.\r\n * @memberof CB_Configuration.CrossBase\r\n * @name INTELXDK_INITDEVJS_LOAD\r\n *\t@constant\r\n * @type {boolean}\r\n * @default\r\n */","meta":{"filename":"CrossBase.js","lineno":835,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase","code":{}},"description":"<p>Defines whether to try to load or not init-dev.js (used by [Intel XDK]{@link https://en.wikipedia.org/wiki/Intel_XDK}).<br> If set to true, the checker defined at {@link CB_Configuration.CrossBase.INTELXDK_INITDEVJS_LOAD_CHECKER} will finally decide whether to load it or not.</p>","memberof":"CB_Configuration.CrossBase","name":"INTELXDK_INITDEVJS_LOAD","kind":"constant","type":{"names":["boolean"]},"scope":"static","longname":"CB_Configuration.CrossBase.INTELXDK_INITDEVJS_LOAD"},{"comment":"/**\r\n * Callback checker to determine whether init-dev.js (used by [Intel XDK]{@link https://en.wikipedia.org/wiki/Intel_XDK}) is needed or not. Requires {@link CB_Configuration.CrossBase.INTELXDK_INITDEVJS_LOAD} set to true.\r\n * @memberof CB_Configuration.CrossBase\r\n * @name INTELXDK_INITDEVJS_LOAD_CHECKER\r\n *\t@constant\r\n * @type {CB_Modules.neededFile_LOAD_CHECKER}\r\n * @default false\r\n */","meta":{"filename":"CrossBase.js","lineno":846,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase","code":{}},"description":"<p>Callback checker to determine whether init-dev.js (used by [Intel XDK]{@link https://en.wikipedia.org/wiki/Intel_XDK}) is needed or not. Requires {@link CB_Configuration.CrossBase.INTELXDK_INITDEVJS_LOAD} set to true.</p>","memberof":"CB_Configuration.CrossBase","name":"INTELXDK_INITDEVJS_LOAD_CHECKER","kind":"constant","type":{"names":["CB_Modules.neededFile_LOAD_CHECKER"]},"defaultvalue":"false","scope":"static","longname":"CB_Configuration.CrossBase.INTELXDK_INITDEVJS_LOAD_CHECKER"},{"comment":"/**\r\n * Directory that contains the \"init-dev.js\" (used by [Intel XDK]{@link https://en.wikipedia.org/wiki/Intel_XDK}).\r\n * @memberof CB_Configuration.CrossBase\r\n * @name INTELXDK_INITDEVJS_PATH\r\n *\t@constant\r\n * @type {string}\r\n * @default\r\n */","meta":{"filename":"CrossBase.js","lineno":856,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase","code":{}},"description":"<p>Directory that contains the &quot;init-dev.js&quot; (used by [Intel XDK]{@link https://en.wikipedia.org/wiki/Intel_XDK}).</p>","memberof":"CB_Configuration.CrossBase","name":"INTELXDK_INITDEVJS_PATH","kind":"constant","type":{"names":["string"]},"scope":"static","longname":"CB_Configuration.CrossBase.INTELXDK_INITDEVJS_PATH"},{"comment":"/**\r\n * The script file path for init-dev.js file (used by [Intel XDK]{@link https://en.wikipedia.org/wiki/Intel_XDK}).\r\n * @memberof CB_Configuration.CrossBase\r\n * @name INTELXDK_INITDEVJS_PATH_SCRIPT_FILE\r\n *\t@constant\r\n * @type {string}\r\n * @default {@link CB_Configuration.CrossBase.INTELXDK_INITDEVJS_PATH} + \"init-dev.js\"\r\n */","meta":{"filename":"CrossBase.js","lineno":866,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase","code":{}},"description":"<p>The script file path for init-dev.js file (used by [Intel XDK]{@link https://en.wikipedia.org/wiki/Intel_XDK}).</p>","memberof":"CB_Configuration.CrossBase","name":"INTELXDK_INITDEVJS_PATH_SCRIPT_FILE","kind":"constant","type":{"names":["string"]},"defaultvalue":"{@link CB_Configuration.CrossBase.INTELXDK_INITDEVJS_PATH} + \"init-dev.js\"","scope":"static","longname":"CB_Configuration.CrossBase.INTELXDK_INITDEVJS_PATH_SCRIPT_FILE"},{"comment":"/**\r\n * Defines whether the path defined in {@link CB_Configuration.CrossBase.INTELXDK_INITDEVJS_PATH} is either absolute or relative to the CrossBrowdy script path.\r\n * @memberof CB_Configuration.CrossBase\r\n * @name INTELXDK_INITDEVJS_PATH_ABSOLUTE\r\n *\t@constant\r\n * @type {boolean}\r\n * @default\r\n */","meta":{"filename":"CrossBase.js","lineno":876,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase","code":{}},"description":"<p>Defines whether the path defined in {@link CB_Configuration.CrossBase.INTELXDK_INITDEVJS_PATH} is either absolute or relative to the CrossBrowdy script path.</p>","memberof":"CB_Configuration.CrossBase","name":"INTELXDK_INITDEVJS_PATH_ABSOLUTE","kind":"constant","type":{"names":["boolean"]},"scope":"static","longname":"CB_Configuration.CrossBase.INTELXDK_INITDEVJS_PATH_ABSOLUTE"},{"comment":"/**\r\n * Defines whether to load or not phonegap.js (used by [Adobe PhoneGap]{@link https://phonegap.com/}).\r\n * @memberof CB_Configuration.CrossBase\r\n * @name PHONEGAPJS_LOAD\r\n *\t@constant\r\n * @type {boolean}\r\n * @default\r\n */","meta":{"filename":"CrossBase.js","lineno":888,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase","code":{}},"description":"<p>Defines whether to load or not phonegap.js (used by [Adobe PhoneGap]{@link https://phonegap.com/}).</p>","memberof":"CB_Configuration.CrossBase","name":"PHONEGAPJS_LOAD","kind":"constant","type":{"names":["boolean"]},"scope":"static","longname":"CB_Configuration.CrossBase.PHONEGAPJS_LOAD"},{"comment":"/**\r\n * Directory that contains the \"phonegap.js\" (used by [Adobe PhoneGap]{@link https://phonegap.com/}) file.\r\n * @memberof CB_Configuration.CrossBase\r\n * @name PHONEGAPJS_PATH\r\n *\t@constant\r\n * @type {string}\r\n * @default\r\n */","meta":{"filename":"CrossBase.js","lineno":898,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase","code":{}},"description":"<p>Directory that contains the &quot;phonegap.js&quot; (used by [Adobe PhoneGap]{@link https://phonegap.com/}) file.</p>","memberof":"CB_Configuration.CrossBase","name":"PHONEGAPJS_PATH","kind":"constant","type":{"names":["string"]},"scope":"static","longname":"CB_Configuration.CrossBase.PHONEGAPJS_PATH"},{"comment":"/**\r\n * The script file path for phonegap.js (used by [Adobe PhoneGap]{@link https://phonegap.com/}).\r\n * @memberof CB_Configuration.CrossBase\r\n * @name PHONEGAPJS_PATH_SCRIPT_FILE\r\n *\t@constant\r\n * @type {string}\r\n * @default {@link CB_Configuration.CrossBase.PHONEGAPJS_PATH} + \"phonegap.js\"\r\n */","meta":{"filename":"CrossBase.js","lineno":908,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase","code":{}},"description":"<p>The script file path for phonegap.js (used by [Adobe PhoneGap]{@link https://phonegap.com/}).</p>","memberof":"CB_Configuration.CrossBase","name":"PHONEGAPJS_PATH_SCRIPT_FILE","kind":"constant","type":{"names":["string"]},"defaultvalue":"{@link CB_Configuration.CrossBase.PHONEGAPJS_PATH} + \"phonegap.js\"","scope":"static","longname":"CB_Configuration.CrossBase.PHONEGAPJS_PATH_SCRIPT_FILE"},{"comment":"/**\r\n * Defines whether the path defined in {@link CB_Configuration.CrossBase.PHONEGAPJS_PATH_SCRIPT_FILE} is either absolute or relative to the CrossBrowdy script path.\r\n * @memberof CB_Configuration.CrossBase\r\n * @name PHONEGAPJS_PATH_ABSOLUTE\r\n *\t@constant\r\n * @type {boolean}\r\n * @default\r\n */","meta":{"filename":"CrossBase.js","lineno":918,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase","code":{}},"description":"<p>Defines whether the path defined in {@link CB_Configuration.CrossBase.PHONEGAPJS_PATH_SCRIPT_FILE} is either absolute or relative to the CrossBrowdy script path.</p>","memberof":"CB_Configuration.CrossBase","name":"PHONEGAPJS_PATH_ABSOLUTE","kind":"constant","type":{"names":["boolean"]},"scope":"static","longname":"CB_Configuration.CrossBase.PHONEGAPJS_PATH_ABSOLUTE"},{"comment":"/**\r\n * Defines whether to try to load or not cordova.js (used by [Apache Cordova]{@link https://cordova.apache.org/}). It should not be loaded together with phonegap.js, normally.\r\n\tIf set to true, the checker defined at {@link CB_Configuration.CrossBase.CORDOVAJS_LOAD_CHECKER} will finally decide whether to load it or not.\r\n * @memberof CB_Configuration.CrossBase\r\n * @name CORDOVAJS_LOAD\r\n *\t@constant\r\n * @type {boolean}\r\n * @default !{@link CB_Configuration.CrossBase.PHONEGAPJS_LOAD}\r\n */","meta":{"filename":"CrossBase.js","lineno":930,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase","code":{}},"description":"<p>Defines whether to try to load or not cordova.js (used by [Apache Cordova]{@link https://cordova.apache.org/}). It should not be loaded together with phonegap.js, normally.<br> If set to true, the checker defined at {@link CB_Configuration.CrossBase.CORDOVAJS_LOAD_CHECKER} will finally decide whether to load it or not.</p>","memberof":"CB_Configuration.CrossBase","name":"CORDOVAJS_LOAD","kind":"constant","type":{"names":["boolean"]},"defaultvalue":"!{@link CB_Configuration.CrossBase.PHONEGAPJS_LOAD}","scope":"static","longname":"CB_Configuration.CrossBase.CORDOVAJS_LOAD"},{"comment":"/**\r\n * Callback checker to determine whether cordova.js (used by [Apache Cordova]{@link https://cordova.apache.org/}) is needed or not. Requires {@link CB_Configuration.CrossBase.CORDOVAJS_LOAD} set to true.\r\n * @memberof CB_Configuration.CrossBase\r\n * @name CORDOVAJS_LOAD_CHECKER\r\n *\t@constant\r\n * @type {CB_Modules.neededFile_LOAD_CHECKER}\r\n * @default function(currentPath, info) { return (typeof(window.cordova) === \"undefined\"); }\r\n */","meta":{"filename":"CrossBase.js","lineno":941,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase","code":{}},"description":"<p>Callback checker to determine whether cordova.js (used by [Apache Cordova]{@link https://cordova.apache.org/}) is needed or not. Requires {@link CB_Configuration.CrossBase.CORDOVAJS_LOAD} set to true.</p>","memberof":"CB_Configuration.CrossBase","name":"CORDOVAJS_LOAD_CHECKER","kind":"constant","type":{"names":["CB_Modules.neededFile_LOAD_CHECKER"]},"defaultvalue":"function(currentPath, info) { return (typeof(window.cordova) === \"undefined\"); }","scope":"static","longname":"CB_Configuration.CrossBase.CORDOVAJS_LOAD_CHECKER"},{"comment":"/**\r\n * Directory that contains the \"cordova.js\" file (used by [Apache Cordova]{@link https://cordova.apache.org/}).\r\n * @memberof CB_Configuration.CrossBase\r\n * @name CORDOVAJS_PATH\r\n *\t@constant\r\n * @type {string}\r\n * @default\r\n */","meta":{"filename":"CrossBase.js","lineno":951,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase","code":{}},"description":"<p>Directory that contains the &quot;cordova.js&quot; file (used by [Apache Cordova]{@link https://cordova.apache.org/}).</p>","memberof":"CB_Configuration.CrossBase","name":"CORDOVAJS_PATH","kind":"constant","type":{"names":["string"]},"scope":"static","longname":"CB_Configuration.CrossBase.CORDOVAJS_PATH"},{"comment":"/**\r\n * The script file path for the cordova.js file (used by [Apache Cordova]{@link https://cordova.apache.org/}).\r\n * @memberof CB_Configuration.CrossBase\r\n * @name CORDOVAJS_PATH_SCRIPT_FILE\r\n *\t@constant\r\n * @type {string}\r\n * @default {@link CB_Configuration.CrossBase.CORDOVAJS_PATH} + \"cordova.js\"\r\n */","meta":{"filename":"CrossBase.js","lineno":961,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase","code":{}},"description":"<p>The script file path for the cordova.js file (used by [Apache Cordova]{@link https://cordova.apache.org/}).</p>","memberof":"CB_Configuration.CrossBase","name":"CORDOVAJS_PATH_SCRIPT_FILE","kind":"constant","type":{"names":["string"]},"defaultvalue":"{@link CB_Configuration.CrossBase.CORDOVAJS_PATH} + \"cordova.js\"","scope":"static","longname":"CB_Configuration.CrossBase.CORDOVAJS_PATH_SCRIPT_FILE"},{"comment":"/**\r\n * Defines whether the path defined in {@link CB_Configuration.CrossBase.CORDOVAJS_PATH_SCRIPT_FILE} is either absolute or relative to the CrossBrowdy script path.\r\n * @memberof CB_Configuration.CrossBase\r\n * @name CORDOVAJS_PATH_ABSOLUTE\r\n *\t@constant\r\n * @type {boolean}\r\n * @default\r\n */","meta":{"filename":"CrossBase.js","lineno":971,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase","code":{}},"description":"<p>Defines whether the path defined in {@link CB_Configuration.CrossBase.CORDOVAJS_PATH_SCRIPT_FILE} is either absolute or relative to the CrossBrowdy script path.</p>","memberof":"CB_Configuration.CrossBase","name":"CORDOVAJS_PATH_ABSOLUTE","kind":"constant","type":{"names":["boolean"]},"scope":"static","longname":"CB_Configuration.CrossBase.CORDOVAJS_PATH_ABSOLUTE"},{"comment":"/**\r\n * Defines whether to load or not [localStorage polyfill]{@link https://github.com/mortzdk/localStorage}.\r\n * @memberof CB_Configuration.CrossBase\r\n * @name LOCALSTORAGE_POLYFILL_LOAD\r\n *\t@constant\r\n * @type {boolean}\r\n * @default\r\n */","meta":{"filename":"CrossBase.js","lineno":983,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase","code":{}},"description":"<p>Defines whether to load or not [localStorage polyfill]{@link https://github.com/mortzdk/localStorage}.</p>","memberof":"CB_Configuration.CrossBase","name":"LOCALSTORAGE_POLYFILL_LOAD","kind":"constant","type":{"names":["boolean"]},"scope":"static","longname":"CB_Configuration.CrossBase.LOCALSTORAGE_POLYFILL_LOAD"},{"comment":"/**\r\n * Directory that contains the [localStorage polyfill]{@link https://github.com/mortzdk/localStorage} files.\r\n * @memberof CB_Configuration.CrossBase\r\n * @name LOCALSTORAGE_POLYFILL_PATH\r\n *\t@constant\r\n * @type {string}\r\n * @default {@link CB_Configuration.CrossBase.SCRIPT_PATH} + \"general/localStorage/\"\r\n */","meta":{"filename":"CrossBase.js","lineno":993,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase","code":{}},"description":"<p>Directory that contains the [localStorage polyfill]{@link https://github.com/mortzdk/localStorage} files.</p>","memberof":"CB_Configuration.CrossBase","name":"LOCALSTORAGE_POLYFILL_PATH","kind":"constant","type":{"names":["string"]},"defaultvalue":"{@link CB_Configuration.CrossBase.SCRIPT_PATH} + \"general/localStorage/\"","scope":"static","longname":"CB_Configuration.CrossBase.LOCALSTORAGE_POLYFILL_PATH"},{"comment":"/**\r\n * Directory that contains the SWF for [localStorage polyfill]{@link https://github.com/mortzdk/localStorage}. The value of the \"scriptPathGiven\" parameter will be attached at the beginning automatically. Belongs to the \"swfURL\" parameter (URL \"GET\" parameter) of the library when the localStorage script file is attached.\r\n * @memberof CB_Configuration.CrossBase\r\n * @name LOCALSTORAGE_POLYFILL_PATH_SWF\r\n *\t@constant\r\n * @type {string}\r\n * @default {@link CB_Configuration.CrossBase.LOCALSTORAGE_POLYFILL_PATH} + \"localStorage.swf\"\r\n */","meta":{"filename":"CrossBase.js","lineno":1003,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase","code":{}},"description":"<p>Directory that contains the SWF for [localStorage polyfill]{@link https://github.com/mortzdk/localStorage}. The value of the &quot;scriptPathGiven&quot; parameter will be attached at the beginning automatically. Belongs to the &quot;swfURL&quot; parameter (URL &quot;GET&quot; parameter) of the library when the localStorage script file is attached.</p>","memberof":"CB_Configuration.CrossBase","name":"LOCALSTORAGE_POLYFILL_PATH_SWF","kind":"constant","type":{"names":["string"]},"defaultvalue":"{@link CB_Configuration.CrossBase.LOCALSTORAGE_POLYFILL_PATH} + \"localStorage.swf\"","scope":"static","longname":"CB_Configuration.CrossBase.LOCALSTORAGE_POLYFILL_PATH_SWF"},{"comment":"/**\r\n * The script file path for [localStorage polyfill]{@link https://github.com/mortzdk/localStorage}.\r\n * @memberof CB_Configuration.CrossBase\r\n * @name LOCALSTORAGE_POLYFILL_PATH_SCRIPT_FILE\r\n *\t@constant\r\n * @type {string}\r\n * @default {@link CB_Configuration.CrossBase.LOCALSTORAGE_POLYFILL_PATH} + \"localStorage.min.js?swfURL=\" + CB_Configuration[CB_BASE_NAME].LOCALSTORAGE_POLYFILL_PATH_SWF_FILE\r\n */","meta":{"filename":"CrossBase.js","lineno":1014,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase","code":{}},"description":"<p>The script file path for [localStorage polyfill]{@link https://github.com/mortzdk/localStorage}.</p>","memberof":"CB_Configuration.CrossBase","name":"LOCALSTORAGE_POLYFILL_PATH_SCRIPT_FILE","kind":"constant","type":{"names":["string"]},"defaultvalue":"{@link CB_Configuration.CrossBase.LOCALSTORAGE_POLYFILL_PATH} + \"localStorage.min.js?swfURL=\" + CB_Configuration[CB_BASE_NAME].LOCALSTORAGE_POLYFILL_PATH_SWF_FILE","scope":"static","longname":"CB_Configuration.CrossBase.LOCALSTORAGE_POLYFILL_PATH_SCRIPT_FILE"},{"comment":"/**\r\n * Defines whether the path defined in {@link CB_Configuration.CrossBase.LOCALSTORAGE_POLYFILL_PATH_SCRIPT_FILE} is either absolute or relative to the CrossBrowdy script path.\r\n * @memberof CB_Configuration.CrossBase\r\n * @name LOCALSTORAGE_POLYFILL_PATH_ABSOLUTE\r\n *\t@constant\r\n * @type {boolean}\r\n * @default\r\n */","meta":{"filename":"CrossBase.js","lineno":1024,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase","code":{}},"description":"<p>Defines whether the path defined in {@link CB_Configuration.CrossBase.LOCALSTORAGE_POLYFILL_PATH_SCRIPT_FILE} is either absolute or relative to the CrossBrowdy script path.</p>","memberof":"CB_Configuration.CrossBase","name":"LOCALSTORAGE_POLYFILL_PATH_ABSOLUTE","kind":"constant","type":{"names":["boolean"]},"scope":"static","longname":"CB_Configuration.CrossBase.LOCALSTORAGE_POLYFILL_PATH_ABSOLUTE"},{"comment":"/**\r\n * Defines whether to load or not [WAAPISim]{@link https://github.com/g200kg/WAAPISim}.\r\n * @memberof CB_Configuration.CrossBase\r\n * @name WAAPISIM_LOAD\r\n *\t@constant\r\n * @type {boolean}\r\n * @default {@link CB_Configuration.CrossBase.WAAPI_EMULATION_ALLOWED} && {@link CB_Configuration.CrossBase.needsWAAPISim}()\r\n */","meta":{"filename":"CrossBase.js","lineno":1036,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase","code":{}},"description":"<p>Defines whether to load or not [WAAPISim]{@link https://github.com/g200kg/WAAPISim}.</p>","memberof":"CB_Configuration.CrossBase","name":"WAAPISIM_LOAD","kind":"constant","type":{"names":["boolean"]},"defaultvalue":"{@link CB_Configuration.CrossBase.WAAPI_EMULATION_ALLOWED} && {@link CB_Configuration.CrossBase.needsWAAPISim}()","scope":"static","longname":"CB_Configuration.CrossBase.WAAPISIM_LOAD"},{"comment":"/**\r\n * Directory that contains the [WAAPISim]{@link https://github.com/g200kg/WAAPISim} files (script and SWF).\r\n * @memberof CB_Configuration.CrossBase\r\n * @name WAAPISIM_PATH\r\n *\t@constant\r\n * @type {string}\r\n * @default {@link CB_Configuration.CrossBase.SCRIPT_PATH} + \"audiovisual/audio/WAAPISim/\"\r\n */","meta":{"filename":"CrossBase.js","lineno":1047,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase","code":{}},"description":"<p>Directory that contains the [WAAPISim]{@link https://github.com/g200kg/WAAPISim} files (script and SWF).</p>","memberof":"CB_Configuration.CrossBase","name":"WAAPISIM_PATH","kind":"constant","type":{"names":["string"]},"defaultvalue":"{@link CB_Configuration.CrossBase.SCRIPT_PATH} + \"audiovisual/audio/WAAPISim/\"","scope":"static","longname":"CB_Configuration.CrossBase.WAAPISIM_PATH"},{"comment":"/**\r\n * The script file path for the [WAAPISim]{@link https://github.com/g200kg/WAAPISim} script file.\r\n * @memberof CB_Configuration.CrossBase\r\n * @name WAAPISIM_PATH_SCRIPT_FILE\r\n *\t@constant\r\n * @type {string}\r\n * @default {@link CB_Configuration.CrossBase.WAAPISIM_PATH} + \"waapisim.min.js\"\r\n */","meta":{"filename":"CrossBase.js","lineno":1057,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase","code":{}},"description":"<p>The script file path for the [WAAPISim]{@link https://github.com/g200kg/WAAPISim} script file.</p>","memberof":"CB_Configuration.CrossBase","name":"WAAPISIM_PATH_SCRIPT_FILE","kind":"constant","type":{"names":["string"]},"defaultvalue":"{@link CB_Configuration.CrossBase.WAAPISIM_PATH} + \"waapisim.min.js\"","scope":"static","longname":"CB_Configuration.CrossBase.WAAPISIM_PATH_SCRIPT_FILE"},{"comment":"/**\r\n * Defines whether the path defined in {@link CB_Configuration.CrossBase.WAAPISIM_PATH_SCRIPT_FILE} is either absolute or relative to the CrossBrowdy script path.\r\n * @memberof CB_Configuration.CrossBase\r\n * @name WAAPISIM_PATH_ABSOLUTE\r\n *\t@constant\r\n * @type {boolean}\r\n * @default\r\n */","meta":{"filename":"CrossBase.js","lineno":1067,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase","code":{}},"description":"<p>Defines whether the path defined in {@link CB_Configuration.CrossBase.WAAPISIM_PATH_SCRIPT_FILE} is either absolute or relative to the CrossBrowdy script path.</p>","memberof":"CB_Configuration.CrossBase","name":"WAAPISIM_PATH_ABSOLUTE","kind":"constant","type":{"names":["boolean"]},"scope":"static","longname":"CB_Configuration.CrossBase.WAAPISIM_PATH_ABSOLUTE"},{"comment":"/**\r\n * Defines whether to load or not [timbre.js]{@link https://mohayonao.github.io/timbre.js/}.\r\n * @memberof CB_Configuration.CrossBase\r\n * @name TIMBREJS_LOAD\r\n *\t@constant\r\n * @type {boolean}\r\n * @default {@link CB_Configuration.CrossBase.needsTimbreJS}()\r\n */","meta":{"filename":"CrossBase.js","lineno":1079,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase","code":{}},"description":"<p>Defines whether to load or not [timbre.js]{@link https://mohayonao.github.io/timbre.js/}.</p>","memberof":"CB_Configuration.CrossBase","name":"TIMBREJS_LOAD","kind":"constant","type":{"names":["boolean"]},"defaultvalue":"{@link CB_Configuration.CrossBase.needsTimbreJS}()","scope":"static","longname":"CB_Configuration.CrossBase.TIMBREJS_LOAD"},{"comment":"/**\r\n * Directory that contains the [timbre.js]{@link https://mohayonao.github.io/timbre.js/} files (script and SWF).\r\n * @memberof CB_Configuration.CrossBase\r\n * @name TIMBREJS_PATH\r\n *\t@constant\r\n * @type {string}\r\n * @default {@link CB_Configuration.CrossBase.SCRIPT_PATH} + \"audiovisual/audio/timbre.js/\"\r\n */","meta":{"filename":"CrossBase.js","lineno":1089,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase","code":{}},"description":"<p>Directory that contains the [timbre.js]{@link https://mohayonao.github.io/timbre.js/} files (script and SWF).</p>","memberof":"CB_Configuration.CrossBase","name":"TIMBREJS_PATH","kind":"constant","type":{"names":["string"]},"defaultvalue":"{@link CB_Configuration.CrossBase.SCRIPT_PATH} + \"audiovisual/audio/timbre.js/\"","scope":"static","longname":"CB_Configuration.CrossBase.TIMBREJS_PATH"},{"comment":"/**\r\n * The script file path for [timbre.js]{@link https://mohayonao.github.io/timbre.js/}.\r\n * @memberof CB_Configuration.CrossBase\r\n * @name TIMBREJS_PATH_SCRIPT_FILE\r\n *\t@constant\r\n * @type {string}\r\n * @default {@link CB_Configuration.CrossBase.TIMBREJS_PATH} + \"timbre.js\"\r\n */","meta":{"filename":"CrossBase.js","lineno":1099,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase","code":{}},"description":"<p>The script file path for [timbre.js]{@link https://mohayonao.github.io/timbre.js/}.</p>","memberof":"CB_Configuration.CrossBase","name":"TIMBREJS_PATH_SCRIPT_FILE","kind":"constant","type":{"names":["string"]},"defaultvalue":"{@link CB_Configuration.CrossBase.TIMBREJS_PATH} + \"timbre.js\"","scope":"static","longname":"CB_Configuration.CrossBase.TIMBREJS_PATH_SCRIPT_FILE"},{"comment":"/**\r\n * Defines whether the path defined in {@link CB_Configuration.CrossBase.TIMBREJS_PATH_SCRIPT_FILE} is either absolute or relative to the CrossBrowdy script path.\r\n * @memberof CB_Configuration.CrossBase\r\n * @name TIMBREJS_PATH_ABSOLUTE\r\n *\t@constant\r\n * @type {boolean}\r\n * @default\r\n */","meta":{"filename":"CrossBase.js","lineno":1109,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase","code":{}},"description":"<p>Defines whether the path defined in {@link CB_Configuration.CrossBase.TIMBREJS_PATH_SCRIPT_FILE} is either absolute or relative to the CrossBrowdy script path.</p>","memberof":"CB_Configuration.CrossBase","name":"TIMBREJS_PATH_ABSOLUTE","kind":"constant","type":{"names":["boolean"]},"scope":"static","longname":"CB_Configuration.CrossBase.TIMBREJS_PATH_ABSOLUTE"},{"comment":"/**\r\n * Defines whether to load or not [subcollider.js]{@link https://github.com/mohayonao/subcollider}.\r\n * @memberof CB_Configuration.CrossBase\r\n * @name SUBCOLLIDERJS_LOAD\r\n *\t@constant\r\n * @type {boolean}\r\n * @default {@link CB_Configuration.CrossBase.TIMBREJS_LOAD}\r\n */","meta":{"filename":"CrossBase.js","lineno":1119,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase","code":{}},"description":"<p>Defines whether to load or not [subcollider.js]{@link https://github.com/mohayonao/subcollider}.</p>","memberof":"CB_Configuration.CrossBase","name":"SUBCOLLIDERJS_LOAD","kind":"constant","type":{"names":["boolean"]},"defaultvalue":"{@link CB_Configuration.CrossBase.TIMBREJS_LOAD}","scope":"static","longname":"CB_Configuration.CrossBase.SUBCOLLIDERJS_LOAD"},{"comment":"/**\r\n * Directory that contains the [subcollider.js]{@link https://github.com/mohayonao/subcollider} script.\r\n * @memberof CB_Configuration.CrossBase\r\n * @name SUBCOLLIDERJS_PATH\r\n *\t@constant\r\n * @type {string}\r\n * @default {@link CB_Configuration.CrossBase.TIMBREJS_PATH} + \"subcollider/\"\r\n */","meta":{"filename":"CrossBase.js","lineno":1129,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase","code":{}},"description":"<p>Directory that contains the [subcollider.js]{@link https://github.com/mohayonao/subcollider} script.</p>","memberof":"CB_Configuration.CrossBase","name":"SUBCOLLIDERJS_PATH","kind":"constant","type":{"names":["string"]},"defaultvalue":"{@link CB_Configuration.CrossBase.TIMBREJS_PATH} + \"subcollider/\"","scope":"static","longname":"CB_Configuration.CrossBase.SUBCOLLIDERJS_PATH"},{"comment":"/**\r\n * The script file path for [subcollider.js]{@link https://github.com/mohayonao/subcollider}.\r\n * @memberof CB_Configuration.CrossBase\r\n * @name SUBCOLLIDERJS_PATH_SCRIPT_FILE\r\n *\t@constant\r\n * @type {string}\r\n * @default {@link CB_Configuration.CrossBase.SUBCOLLIDERJS_PATH} + \"subcollider.js\"\r\n */","meta":{"filename":"CrossBase.js","lineno":1139,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase","code":{}},"description":"<p>The script file path for [subcollider.js]{@link https://github.com/mohayonao/subcollider}.</p>","memberof":"CB_Configuration.CrossBase","name":"SUBCOLLIDERJS_PATH_SCRIPT_FILE","kind":"constant","type":{"names":["string"]},"defaultvalue":"{@link CB_Configuration.CrossBase.SUBCOLLIDERJS_PATH} + \"subcollider.js\"","scope":"static","longname":"CB_Configuration.CrossBase.SUBCOLLIDERJS_PATH_SCRIPT_FILE"},{"comment":"/**\r\n * Defines whether the path defined in {@link CB_Configuration.CrossBase.SUBCOLLIDERJS_PATH_SCRIPT_FILE} is either absolute or relative to the CrossBrowdy script path.\r\n * @memberof CB_Configuration.CrossBase\r\n * @name SUBCOLLIDERJS_PATH_ABSOLUTE\r\n *\t@constant\r\n * @type {boolean}\r\n * @default\r\n */","meta":{"filename":"CrossBase.js","lineno":1149,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase","code":{}},"description":"<p>Defines whether the path defined in {@link CB_Configuration.CrossBase.SUBCOLLIDERJS_PATH_SCRIPT_FILE} is either absolute or relative to the CrossBrowdy script path.</p>","memberof":"CB_Configuration.CrossBase","name":"SUBCOLLIDERJS_PATH_ABSOLUTE","kind":"constant","type":{"names":["boolean"]},"scope":"static","longname":"CB_Configuration.CrossBase.SUBCOLLIDERJS_PATH_ABSOLUTE"},{"comment":"/**\r\n * Defines whether to load or not [Band.js]{@link https://github.com/meenie/band.js/}.\r\n * @memberof CB_Configuration.CrossBase\r\n * @name BANDJS_LOAD\r\n *\t@constant\r\n * @type {boolean}\r\n * @default typeof(window.AudioContext) !== \"undefined\" || typeof(window.webkitAudioContext) !== \"undefined\"\r\n */","meta":{"filename":"CrossBase.js","lineno":1161,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase","code":{}},"description":"<p>Defines whether to load or not [Band.js]{@link https://github.com/meenie/band.js/}.</p>","memberof":"CB_Configuration.CrossBase","name":"BANDJS_LOAD","kind":"constant","type":{"names":["boolean"]},"defaultvalue":"typeof(window.AudioContext) !== \"undefined\" || typeof(window.webkitAudioContext) !== \"undefined\"","scope":"static","longname":"CB_Configuration.CrossBase.BANDJS_LOAD"},{"comment":"/**\r\n * Directory that contains the [Band.js]{@link https://github.com/meenie/band.js/} files.\r\n * @memberof CB_Configuration.CrossBase\r\n * @name BANDJS_PATH\r\n *\t@constant\r\n * @type {string}\r\n * @default {@link CB_Configuration.CrossBase.SCRIPT_PATH} + \"audiovisual/audio/band.js/\"\r\n */","meta":{"filename":"CrossBase.js","lineno":1171,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase","code":{}},"description":"<p>Directory that contains the [Band.js]{@link https://github.com/meenie/band.js/} files.</p>","memberof":"CB_Configuration.CrossBase","name":"BANDJS_PATH","kind":"constant","type":{"names":["string"]},"defaultvalue":"{@link CB_Configuration.CrossBase.SCRIPT_PATH} + \"audiovisual/audio/band.js/\"","scope":"static","longname":"CB_Configuration.CrossBase.BANDJS_PATH"},{"comment":"/**\r\n * The script file path for [Band.js]{@link https://github.com/meenie/band.js/}.\r\n * @memberof CB_Configuration.CrossBase\r\n * @name BANDJS_PATH_SCRIPT_FILE\r\n *\t@constant\r\n * @type {string}\r\n * @default {@link CB_Configuration.CrossBase.BANDJS_PATH} + \"band.min.js\"\r\n */","meta":{"filename":"CrossBase.js","lineno":1181,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase","code":{}},"description":"<p>The script file path for [Band.js]{@link https://github.com/meenie/band.js/}.</p>","memberof":"CB_Configuration.CrossBase","name":"BANDJS_PATH_SCRIPT_FILE","kind":"constant","type":{"names":["string"]},"defaultvalue":"{@link CB_Configuration.CrossBase.BANDJS_PATH} + \"band.min.js\"","scope":"static","longname":"CB_Configuration.CrossBase.BANDJS_PATH_SCRIPT_FILE"},{"comment":"/**\r\n * Defines whether the path defined in {@link CB_Configuration.CrossBase.BANDJS_PATH_SCRIPT_FILE} is either absolute or relative to the CrossBrowdy script path.\r\n * @memberof CB_Configuration.CrossBase\r\n * @name BANDJS_PATH_ABSOLUTE\r\n *\t@constant\r\n * @type {boolean}\r\n * @default\r\n */","meta":{"filename":"CrossBase.js","lineno":1191,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase","code":{}},"description":"<p>Defines whether the path defined in {@link CB_Configuration.CrossBase.BANDJS_PATH_SCRIPT_FILE} is either absolute or relative to the CrossBrowdy script path.</p>","memberof":"CB_Configuration.CrossBase","name":"BANDJS_PATH_ABSOLUTE","kind":"constant","type":{"names":["boolean"]},"scope":"static","longname":"CB_Configuration.CrossBase.BANDJS_PATH_ABSOLUTE"},{"comment":"/**\r\n * Defines whether to load or not [SoundManager 2]{@link http://schillmania.com/projects/soundmanager2/}.\r\n * @memberof CB_Configuration.CrossBase\r\n * @name SM2_LOAD\r\n *\t@constant\r\n * @type {boolean}\r\n * @default\r\n */","meta":{"filename":"CrossBase.js","lineno":1203,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase","code":{}},"description":"<p>Defines whether to load or not [SoundManager 2]{@link http://schillmania.com/projects/soundmanager2/}.</p>","memberof":"CB_Configuration.CrossBase","name":"SM2_LOAD","kind":"constant","type":{"names":["boolean"]},"scope":"static","longname":"CB_Configuration.CrossBase.SM2_LOAD"},{"comment":"/**\r\n * Directory that contains the [SoundManager 2]{@link http://schillmania.com/projects/soundmanager2/} files.\r\n * @memberof CB_Configuration.CrossBase\r\n * @name SM2_PATH\r\n *\t@constant\r\n * @type {string}\r\n * @default {@link CB_Configuration.CrossBase.SCRIPT_PATH} + \"audiovisual/audio/soundmanager2/\"\r\n */","meta":{"filename":"CrossBase.js","lineno":1213,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase","code":{}},"description":"<p>Directory that contains the [SoundManager 2]{@link http://schillmania.com/projects/soundmanager2/} files.</p>","memberof":"CB_Configuration.CrossBase","name":"SM2_PATH","kind":"constant","type":{"names":["string"]},"defaultvalue":"{@link CB_Configuration.CrossBase.SCRIPT_PATH} + \"audiovisual/audio/soundmanager2/\"","scope":"static","longname":"CB_Configuration.CrossBase.SM2_PATH"},{"comment":"/**\r\n * The script file path for [SoundManager 2]{@link http://schillmania.com/projects/soundmanager2/}.\r\n * @memberof CB_Configuration.CrossBase\r\n * @name SM2_PATH_SCRIPT_FILE\r\n *\t@constant\r\n * @type {string}\r\n * @default {@link CB_Configuration.CrossBase.SM2_PATH} + \"script/soundmanager2-nodebug-jsmin.js\"\r\n */","meta":{"filename":"CrossBase.js","lineno":1223,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase","code":{}},"description":"<p>The script file path for [SoundManager 2]{@link http://schillmania.com/projects/soundmanager2/}.</p>","memberof":"CB_Configuration.CrossBase","name":"SM2_PATH_SCRIPT_FILE","kind":"constant","type":{"names":["string"]},"defaultvalue":"{@link CB_Configuration.CrossBase.SM2_PATH} + \"script/soundmanager2-nodebug-jsmin.js\"","scope":"static","longname":"CB_Configuration.CrossBase.SM2_PATH_SCRIPT_FILE"},{"comment":"/**\r\n * Directory that contains the SWF's for [SoundManager 2]{@link http://schillmania.com/projects/soundmanager2/}. The value of the \"scriptPathGiven\" parameter will be attached at the beginning automatically. Belongs to the \"url\" parameter of the library when [soundManager.setup]{@link http://www.schillmania.com/projects/soundmanager2/doc/#soundmanager-setup} function is called. More information: http://www.schillmania.com/projects/soundmanager2/doc/#soundmanager-url\r\n * @memberof CB_Configuration.CrossBase\r\n * @name SM2_PATH_SWF\r\n *\t@constant\r\n * @type {string}\r\n * @default {@link CB_Configuration.CrossBase.SM2_PATH} + \"swf/\"\r\n */","meta":{"filename":"CrossBase.js","lineno":1233,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase","code":{}},"description":"<p>Directory that contains the SWF's for [SoundManager 2]{@link http://schillmania.com/projects/soundmanager2/}. The value of the &quot;scriptPathGiven&quot; parameter will be attached at the beginning automatically. Belongs to the &quot;url&quot; parameter of the library when [soundManager.setup]{@link http://<a href=\"http://www.schillmania.com/projects/soundmanager2/doc/#soundmanager-setup}\">www.schillmania.com/projects/soundmanager2/doc/#soundmanager-setup}</a> function is called. More information: http://<a href=\"http://www.schillmania.com/projects/soundmanager2/doc/#soundmanager-url\">www.schillmania.com/projects/soundmanager2/doc/#soundmanager-url</a></p>","memberof":"CB_Configuration.CrossBase","name":"SM2_PATH_SWF","kind":"constant","type":{"names":["string"]},"defaultvalue":"{@link CB_Configuration.CrossBase.SM2_PATH} + \"swf/\"","scope":"static","longname":"CB_Configuration.CrossBase.SM2_PATH_SWF"},{"comment":"/**\r\n * Defines whether the path defined in {@link CB_Configuration.CrossBase.SM2_PATH_SCRIPT_FILE} is either absolute or relative to the CrossBrowdy script path.\r\n * @memberof CB_Configuration.CrossBase\r\n * @name SM2_PATH_ABSOLUTE\r\n *\t@constant\r\n * @type {boolean}\r\n * @default\r\n */","meta":{"filename":"CrossBase.js","lineno":1243,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase","code":{}},"description":"<p>Defines whether the path defined in {@link CB_Configuration.CrossBase.SM2_PATH_SCRIPT_FILE} is either absolute or relative to the CrossBrowdy script path.</p>","memberof":"CB_Configuration.CrossBase","name":"SM2_PATH_ABSOLUTE","kind":"constant","type":{"names":["boolean"]},"scope":"static","longname":"CB_Configuration.CrossBase.SM2_PATH_ABSOLUTE"},{"comment":"/**\r\n * Object with the required formats for [SoundManager 2]{@link http://schillmania.com/projects/soundmanager2/}. If the format is required and the web client doesn't support it, [SoundManager 2]{@link http://schillmania.com/projects/soundmanager2/} will use [Flash]{@link https://en.wikipedia.org/wiki/Adobe_Flash_Player}. More information: http://www.schillmania.com/projects/soundmanager2/doc/#soundmanager-audioformats\r\n * @memberof CB_Configuration.CrossBase\r\n * @name SM2_AUDIO_FORMATS_REQUIRED\r\n * @constant\r\n * @type {Object}\r\n * @property {boolean} mp3=false - Defines MP3 format as required.\r\n * @property {boolean} mp4=false - Defines MP4 format as required.\r\n * @property {boolean} ogg=false - Defines OGG format as required.\r\n * @property {boolean} opus=false - Defines OPUS format as required.\r\n * @property {boolean} wav=false - Defines WAV format as required.\r\n * @default\r\n */","meta":{"filename":"CrossBase.js","lineno":1253,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase","code":{}},"description":"<p>Object with the required formats for [SoundManager 2]{@link http://schillmania.com/projects/soundmanager2/}. If the format is required and the web client doesn't support it, [SoundManager 2]{@link http://schillmania.com/projects/soundmanager2/} will use [Flash]{@link https://en.wikipedia.org/wiki/Adobe_Flash_Player}. More information: http://<a href=\"http://www.schillmania.com/projects/soundmanager2/doc/#soundmanager-audioformats\">www.schillmania.com/projects/soundmanager2/doc/#soundmanager-audioformats</a></p>","memberof":"CB_Configuration.CrossBase","name":"SM2_AUDIO_FORMATS_REQUIRED","kind":"constant","type":{"names":["Object"]},"properties":[{"type":{"names":["boolean"]},"defaultvalue":false,"description":"<p>Defines MP3 format as required.</p>","name":"mp3"},{"type":{"names":["boolean"]},"defaultvalue":false,"description":"<p>Defines MP4 format as required.</p>","name":"mp4"},{"type":{"names":["boolean"]},"defaultvalue":false,"description":"<p>Defines OGG format as required.</p>","name":"ogg"},{"type":{"names":["boolean"]},"defaultvalue":false,"description":"<p>Defines OPUS format as required.</p>","name":"opus"},{"type":{"names":["boolean"]},"defaultvalue":false,"description":"<p>Defines WAV format as required.</p>","name":"wav"}],"scope":"static","longname":"CB_Configuration.CrossBase.SM2_AUDIO_FORMATS_REQUIRED"},{"comment":"/**\r\n * Defines whether to use or not high performance mode in [SoundManager 2]{@link http://schillmania.com/projects/soundmanager2/} (may cause a flash object to be visible). Belongs to the \"useHighPerformance\" parameter of the library when [soundManager.setup]{@link http://www.schillmania.com/projects/soundmanager2/doc/#soundmanager-setup} function is called. More information: http://www.schillmania.com/projects/soundmanager2/doc/#soundmanager-highperformance\r\n * @memberof CB_Configuration.CrossBase\r\n * @name SM2_USE_HIGH_PERFORMANCE\r\n *\t@constant\r\n * @type {boolean}\r\n * @default\r\n */","meta":{"filename":"CrossBase.js","lineno":1268,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase","code":{}},"description":"<p>Defines whether to use or not high performance mode in [SoundManager 2]{@link http://schillmania.com/projects/soundmanager2/} (may cause a flash object to be visible). Belongs to the &quot;useHighPerformance&quot; parameter of the library when [soundManager.setup]{@link http://<a href=\"http://www.schillmania.com/projects/soundmanager2/doc/#soundmanager-setup}\">www.schillmania.com/projects/soundmanager2/doc/#soundmanager-setup}</a> function is called. More information: http://<a href=\"http://www.schillmania.com/projects/soundmanager2/doc/#soundmanager-highperformance\">www.schillmania.com/projects/soundmanager2/doc/#soundmanager-highperformance</a></p>","memberof":"CB_Configuration.CrossBase","name":"SM2_USE_HIGH_PERFORMANCE","kind":"constant","type":{"names":["boolean"]},"scope":"static","longname":"CB_Configuration.CrossBase.SM2_USE_HIGH_PERFORMANCE"},{"comment":"/**\r\n * Milliseconds to wait after loading [SoundManager 2]{@link http://schillmania.com/projects/soundmanager2/} to define it as not supported if there is no response. Belongs to the \"flashLoadTimeout\" parameter of the library when [soundManager.setup]{@link http://www.schillmania.com/projects/soundmanager2/doc/#soundmanager-setup} function is called. More information: http://www.schillmania.com/projects/soundmanager2/doc/#soundmanager-flashloadtimeout\r\n * @memberof CB_Configuration.CrossBase\r\n * @name SM2_TIMEOUT_MS\r\n *\t@constant\r\n * @type {integer}\r\n * @default\r\n */","meta":{"filename":"CrossBase.js","lineno":1278,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase","code":{}},"description":"<p>Milliseconds to wait after loading [SoundManager 2]{@link http://schillmania.com/projects/soundmanager2/} to define it as not supported if there is no response. Belongs to the &quot;flashLoadTimeout&quot; parameter of the library when [soundManager.setup]{@link http://<a href=\"http://www.schillmania.com/projects/soundmanager2/doc/#soundmanager-setup}\">www.schillmania.com/projects/soundmanager2/doc/#soundmanager-setup}</a> function is called. More information: http://<a href=\"http://www.schillmania.com/projects/soundmanager2/doc/#soundmanager-flashloadtimeout\">www.schillmania.com/projects/soundmanager2/doc/#soundmanager-flashloadtimeout</a></p>","memberof":"CB_Configuration.CrossBase","name":"SM2_TIMEOUT_MS","kind":"constant","type":{"names":["integer"]},"scope":"static","longname":"CB_Configuration.CrossBase.SM2_TIMEOUT_MS"},{"comment":"/**\r\n * Defines whether to load or not [jsfx]{@link https://github.com/loov/jsfx}.\r\n * @memberof CB_Configuration.CrossBase\r\n * @name JSFX_LOAD\r\n *\t@constant\r\n * @type {boolean}\r\n * @default {@link CB_Configuration.CrossBase.needsJsfx}()\r\n */","meta":{"filename":"CrossBase.js","lineno":1292,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase","code":{}},"description":"<p>Defines whether to load or not [jsfx]{@link https://github.com/loov/jsfx}.</p>","memberof":"CB_Configuration.CrossBase","name":"JSFX_LOAD","kind":"constant","type":{"names":["boolean"]},"defaultvalue":"{@link CB_Configuration.CrossBase.needsJsfx}()","scope":"static","longname":"CB_Configuration.CrossBase.JSFX_LOAD"},{"comment":"/**\r\n * Directory that contains the [jsfx]{@link https://github.com/loov/jsfx} files.\r\n * @memberof CB_Configuration.CrossBase\r\n * @name JSFX_PATH\r\n *\t@constant\r\n * @type {string}\r\n * @default {@link CB_Configuration.CrossBase.SCRIPT_PATH} + \"audiovisual/audio/jsfx/\"\r\n */","meta":{"filename":"CrossBase.js","lineno":1302,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase","code":{}},"description":"<p>Directory that contains the [jsfx]{@link https://github.com/loov/jsfx} files.</p>","memberof":"CB_Configuration.CrossBase","name":"JSFX_PATH","kind":"constant","type":{"names":["string"]},"defaultvalue":"{@link CB_Configuration.CrossBase.SCRIPT_PATH} + \"audiovisual/audio/jsfx/\"","scope":"static","longname":"CB_Configuration.CrossBase.JSFX_PATH"},{"comment":"/**\r\n * The script file path for [jsfx]{@link https://github.com/loov/jsfx}.\r\n * @memberof CB_Configuration.CrossBase\r\n * @name JSFX_PATH_SCRIPT_FILE\r\n *\t@constant\r\n * @type {string}\r\n * @default {@link CB_Configuration.CrossBase.JSFX_PATH} + \"jsfx.js\"\r\n */","meta":{"filename":"CrossBase.js","lineno":1312,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase","code":{}},"description":"<p>The script file path for [jsfx]{@link https://github.com/loov/jsfx}.</p>","memberof":"CB_Configuration.CrossBase","name":"JSFX_PATH_SCRIPT_FILE","kind":"constant","type":{"names":["string"]},"defaultvalue":"{@link CB_Configuration.CrossBase.JSFX_PATH} + \"jsfx.js\"","scope":"static","longname":"CB_Configuration.CrossBase.JSFX_PATH_SCRIPT_FILE"},{"comment":"/**\r\n * Defines whether the path defined in {@link CB_Configuration.CrossBase.JSFX_PATH_SCRIPT_FILE} is either absolute or relative to the CrossBrowdy script path.\r\n * @memberof CB_Configuration.CrossBase\r\n * @name JSFX_PATH_ABSOLUTE\r\n *\t@constant\r\n * @type {boolean}\r\n * @default\r\n */","meta":{"filename":"CrossBase.js","lineno":1322,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase","code":{}},"description":"<p>Defines whether the path defined in {@link CB_Configuration.CrossBase.JSFX_PATH_SCRIPT_FILE} is either absolute or relative to the CrossBrowdy script path.</p>","memberof":"CB_Configuration.CrossBase","name":"JSFX_PATH_ABSOLUTE","kind":"constant","type":{"names":["boolean"]},"scope":"static","longname":"CB_Configuration.CrossBase.JSFX_PATH_ABSOLUTE"},{"comment":"/**\r\n * Defines whether to load or not [NoSleep.js]{@link https://github.com/richtr/NoSleep.js}.\r\n * @memberof CB_Configuration.CrossBase\r\n * @name NOSLEEP_LOAD\r\n *\t@constant\r\n * @type {boolean}\r\n * @default {@link CB_Configuration.CrossBase.needsSleepJS}()\r\n */","meta":{"filename":"CrossBase.js","lineno":1334,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase","code":{}},"description":"<p>Defines whether to load or not [NoSleep.js]{@link https://github.com/richtr/NoSleep.js}.</p>","memberof":"CB_Configuration.CrossBase","name":"NOSLEEP_LOAD","kind":"constant","type":{"names":["boolean"]},"defaultvalue":"{@link CB_Configuration.CrossBase.needsSleepJS}()","scope":"static","longname":"CB_Configuration.CrossBase.NOSLEEP_LOAD"},{"comment":"/**\r\n * Directory that contains the [NoSleep.js]{@link https://github.com/richtr/NoSleep.js} files.\r\n * @memberof CB_Configuration.CrossBase\r\n * @name NOSLEEP_PATH\r\n *\t@constant\r\n * @type {string}\r\n * @default {@link CB_Configuration.CrossBase.SCRIPT_PATH} + \"audiovisual/image/NoSleep/\"\r\n */","meta":{"filename":"CrossBase.js","lineno":1344,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase","code":{}},"description":"<p>Directory that contains the [NoSleep.js]{@link https://github.com/richtr/NoSleep.js} files.</p>","memberof":"CB_Configuration.CrossBase","name":"NOSLEEP_PATH","kind":"constant","type":{"names":["string"]},"defaultvalue":"{@link CB_Configuration.CrossBase.SCRIPT_PATH} + \"audiovisual/image/NoSleep/\"","scope":"static","longname":"CB_Configuration.CrossBase.NOSLEEP_PATH"},{"comment":"/**\r\n * The script file path for [NoSleep.js]{@link https://github.com/richtr/NoSleep.js}.\r\n * @memberof CB_Configuration.CrossBase\r\n * @name NOSLEEP_PATH_SCRIPT_FILE\r\n *\t@constant\r\n * @type {string}\r\n * @default {@link CB_Configuration.CrossBase.NOSLEEP_PATH} + \"NoSleep.min.js\"\r\n */","meta":{"filename":"CrossBase.js","lineno":1354,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase","code":{}},"description":"<p>The script file path for [NoSleep.js]{@link https://github.com/richtr/NoSleep.js}.</p>","memberof":"CB_Configuration.CrossBase","name":"NOSLEEP_PATH_SCRIPT_FILE","kind":"constant","type":{"names":["string"]},"defaultvalue":"{@link CB_Configuration.CrossBase.NOSLEEP_PATH} + \"NoSleep.min.js\"","scope":"static","longname":"CB_Configuration.CrossBase.NOSLEEP_PATH_SCRIPT_FILE"},{"comment":"/**\r\n * Defines whether the path defined in {@link CB_Configuration.CrossBase.NOSLEEP_PATH_SCRIPT_FILE} is either absolute or relative to the CrossBrowdy script path.\r\n * @memberof CB_Configuration.CrossBase\r\n * @name NOSLEEP_PATH_ABSOLUTE\r\n *\t@constant\r\n * @type {boolean}\r\n * @default\r\n */","meta":{"filename":"CrossBase.js","lineno":1364,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase","code":{}},"description":"<p>Defines whether the path defined in {@link CB_Configuration.CrossBase.NOSLEEP_PATH_SCRIPT_FILE} is either absolute or relative to the CrossBrowdy script path.</p>","memberof":"CB_Configuration.CrossBase","name":"NOSLEEP_PATH_ABSOLUTE","kind":"constant","type":{"names":["boolean"]},"scope":"static","longname":"CB_Configuration.CrossBase.NOSLEEP_PATH_ABSOLUTE"},{"comment":"/**\r\n * Defines whether to load or not [Pressure.js]{@link https://pressurejs.com/}.\r\n * @memberof CB_Configuration.CrossBase\r\n * @name PRESSUREJS_LOAD\r\n *\t@constant\r\n * @type {boolean}\r\n * @default {@link CB_Configuration.CrossBase.needsPressureJS}()\r\n */","meta":{"filename":"CrossBase.js","lineno":1376,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase","code":{}},"description":"<p>Defines whether to load or not [Pressure.js]{@link https://pressurejs.com/}.</p>","memberof":"CB_Configuration.CrossBase","name":"PRESSUREJS_LOAD","kind":"constant","type":{"names":["boolean"]},"defaultvalue":"{@link CB_Configuration.CrossBase.needsPressureJS}()","scope":"static","longname":"CB_Configuration.CrossBase.PRESSUREJS_LOAD"},{"comment":"/**\r\n * Directory that contains the [Pressure.js]{@link https://pressurejs.com/} files.\r\n * @memberof CB_Configuration.CrossBase\r\n * @name PRESSUREJS_PATH\r\n *\t@constant\r\n * @type {string}\r\n * @default {@link CB_Configuration.CrossBase.SCRIPT_PATH} + \"input/pressure.js/\"\r\n */","meta":{"filename":"CrossBase.js","lineno":1386,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase","code":{}},"description":"<p>Directory that contains the [Pressure.js]{@link https://pressurejs.com/} files.</p>","memberof":"CB_Configuration.CrossBase","name":"PRESSUREJS_PATH","kind":"constant","type":{"names":["string"]},"defaultvalue":"{@link CB_Configuration.CrossBase.SCRIPT_PATH} + \"input/pressure.js/\"","scope":"static","longname":"CB_Configuration.CrossBase.PRESSUREJS_PATH"},{"comment":"/**\r\n * The script file path for [Pressure.js]{@link https://pressurejs.com/}.\r\n * @memberof CB_Configuration.CrossBase\r\n * @name PRESSUREJS_PATH_SCRIPT_FILE\r\n *\t@constant\r\n * @type {string}\r\n * @default {@link CB_Configuration.CrossBase.PRESSUREJS_PATH} + \"pressure.min.js\"\r\n */","meta":{"filename":"CrossBase.js","lineno":1396,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase","code":{}},"description":"<p>The script file path for [Pressure.js]{@link https://pressurejs.com/}.</p>","memberof":"CB_Configuration.CrossBase","name":"PRESSUREJS_PATH_SCRIPT_FILE","kind":"constant","type":{"names":["string"]},"defaultvalue":"{@link CB_Configuration.CrossBase.PRESSUREJS_PATH} + \"pressure.min.js\"","scope":"static","longname":"CB_Configuration.CrossBase.PRESSUREJS_PATH_SCRIPT_FILE"},{"comment":"/**\r\n * Defines whether the path defined in {@link CB_Configuration.CrossBase.PRESSUREJS_PATH_SCRIPT_FILE} is either absolute or relative to the CrossBrowdy script path.\r\n * @memberof CB_Configuration.CrossBase\r\n * @name PRESSUREJS_PATH_ABSOLUTE\r\n *\t@constant\r\n * @type {boolean}\r\n * @default\r\n */","meta":{"filename":"CrossBase.js","lineno":1406,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase","code":{}},"description":"<p>Defines whether the path defined in {@link CB_Configuration.CrossBase.PRESSUREJS_PATH_SCRIPT_FILE} is either absolute or relative to the CrossBrowdy script path.</p>","memberof":"CB_Configuration.CrossBase","name":"PRESSUREJS_PATH_ABSOLUTE","kind":"constant","type":{"names":["boolean"]},"scope":"static","longname":"CB_Configuration.CrossBase.PRESSUREJS_PATH_ABSOLUTE"},{"comment":"/**\r\n * Defines whether to load or not [Hammer.js]{@link http://hammerjs.github.io/} and [Hammer Time]{@link https://github.com/hammerjs/hammer-time}.\r\n * @memberof CB_Configuration.CrossBase\r\n * @name HAMMERJS_LOAD\r\n *\t@constant\r\n * @type {boolean}\r\n * @default {@link CB_Configuration.CrossBase.needsHammerJS}()\r\n */","meta":{"filename":"CrossBase.js","lineno":1418,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase","code":{}},"description":"<p>Defines whether to load or not [Hammer.js]{@link http://hammerjs.github.io/} and [Hammer Time]{@link https://github.com/hammerjs/hammer-time}.</p>","memberof":"CB_Configuration.CrossBase","name":"HAMMERJS_LOAD","kind":"constant","type":{"names":["boolean"]},"defaultvalue":"{@link CB_Configuration.CrossBase.needsHammerJS}()","scope":"static","longname":"CB_Configuration.CrossBase.HAMMERJS_LOAD"},{"comment":"/**\r\n * Directory that contains the [Hammer.js]{@link http://hammerjs.github.io/} and [Hammer Time]{@link https://github.com/hammerjs/hammer-time} files.\r\n * @memberof CB_Configuration.CrossBase\r\n * @name HAMMERJS_PATH\r\n *\t@constant\r\n * @type {string}\r\n * @default {@link CB_Configuration.CrossBase.SCRIPT_PATH} + \"input/hammer.js/\"\r\n */","meta":{"filename":"CrossBase.js","lineno":1428,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase","code":{}},"description":"<p>Directory that contains the [Hammer.js]{@link http://hammerjs.github.io/} and [Hammer Time]{@link https://github.com/hammerjs/hammer-time} files.</p>","memberof":"CB_Configuration.CrossBase","name":"HAMMERJS_PATH","kind":"constant","type":{"names":["string"]},"defaultvalue":"{@link CB_Configuration.CrossBase.SCRIPT_PATH} + \"input/hammer.js/\"","scope":"static","longname":"CB_Configuration.CrossBase.HAMMERJS_PATH"},{"comment":"/**\r\n * The script file path for [Hammer.js]{@link http://hammerjs.github.io/}.\r\n * @memberof CB_Configuration.CrossBase\r\n * @name HAMMERJS_PATH_SCRIPT_FILE\r\n *\t@constant\r\n * @type {string}\r\n * @default {@link CB_Configuration.CrossBase.HAMMERJS_PATH} + \"hammer.min.js\"\r\n */","meta":{"filename":"CrossBase.js","lineno":1438,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase","code":{}},"description":"<p>The script file path for [Hammer.js]{@link http://hammerjs.github.io/}.</p>","memberof":"CB_Configuration.CrossBase","name":"HAMMERJS_PATH_SCRIPT_FILE","kind":"constant","type":{"names":["string"]},"defaultvalue":"{@link CB_Configuration.CrossBase.HAMMERJS_PATH} + \"hammer.min.js\"","scope":"static","longname":"CB_Configuration.CrossBase.HAMMERJS_PATH_SCRIPT_FILE"},{"comment":"/**\r\n * The script file path for [Hammer Time]{@link https://github.com/hammerjs/hammer-time}.\r\n * @memberof CB_Configuration.CrossBase\r\n * @name HAMMERJS_HAMMER_TIME_PATH_SCRIPT_FILE\r\n *\t@constant\r\n * @type {string}\r\n * @default {@link CB_Configuration.CrossBase.HAMMERJS_PATH} + \"hammer-time/hammer-time.min.js\"\r\n */","meta":{"filename":"CrossBase.js","lineno":1448,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase","code":{}},"description":"<p>The script file path for [Hammer Time]{@link https://github.com/hammerjs/hammer-time}.</p>","memberof":"CB_Configuration.CrossBase","name":"HAMMERJS_HAMMER_TIME_PATH_SCRIPT_FILE","kind":"constant","type":{"names":["string"]},"defaultvalue":"{@link CB_Configuration.CrossBase.HAMMERJS_PATH} + \"hammer-time/hammer-time.min.js\"","scope":"static","longname":"CB_Configuration.CrossBase.HAMMERJS_HAMMER_TIME_PATH_SCRIPT_FILE"},{"comment":"/**\r\n * Defines whether the paths defined in {@link CB_Configuration.CrossBase.HAMMERJS_PATH_SCRIPT_FILE} and {@link CB_Configuration.CrossBase.HAMMERJS_HAMMER_TIME_PATH_SCRIPT_FILE} is either absolute or relative to the CrossBrowdy script path.\r\n * @memberof CB_Configuration.CrossBase\r\n * @name HAMMERJS_PATH_ABSOLUTE\r\n *\t@constant\r\n * @type {boolean}\r\n * @default\r\n */","meta":{"filename":"CrossBase.js","lineno":1458,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase","code":{}},"description":"<p>Defines whether the paths defined in {@link CB_Configuration.CrossBase.HAMMERJS_PATH_SCRIPT_FILE} and {@link CB_Configuration.CrossBase.HAMMERJS_HAMMER_TIME_PATH_SCRIPT_FILE} is either absolute or relative to the CrossBrowdy script path.</p>","memberof":"CB_Configuration.CrossBase","name":"HAMMERJS_PATH_ABSOLUTE","kind":"constant","type":{"names":["boolean"]},"scope":"static","longname":"CB_Configuration.CrossBase.HAMMERJS_PATH_ABSOLUTE"},{"comment":"/**\r\n * Defines whether to load or not [wii-js]{@link https://github.com/ryanmcgrath/wii-js}.\r\n * @memberof CB_Configuration.CrossBase\r\n * @name WII_JS_LOAD\r\n *\t@constant\r\n * @type {boolean}\r\n * @default\r\n */","meta":{"filename":"CrossBase.js","lineno":1470,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase","code":{}},"description":"<p>Defines whether to load or not [wii-js]{@link https://github.com/ryanmcgrath/wii-js}.</p>","memberof":"CB_Configuration.CrossBase","name":"WII_JS_LOAD","kind":"constant","type":{"names":["boolean"]},"scope":"static","longname":"CB_Configuration.CrossBase.WII_JS_LOAD"},{"comment":"/**\r\n * Directory that contains the [wii-js]{@link https://github.com/ryanmcgrath/wii-js} script.\r\n * @memberof CB_Configuration.CrossBase\r\n * @name WII_JS_PATH\r\n *\t@constant\r\n * @type {string}\r\n * @default {@link CB_Configuration.CrossBase.SCRIPT_PATH} + \"input/controllers/wii-js/\"\r\n */","meta":{"filename":"CrossBase.js","lineno":1480,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase","code":{}},"description":"<p>Directory that contains the [wii-js]{@link https://github.com/ryanmcgrath/wii-js} script.</p>","memberof":"CB_Configuration.CrossBase","name":"WII_JS_PATH","kind":"constant","type":{"names":["string"]},"defaultvalue":"{@link CB_Configuration.CrossBase.SCRIPT_PATH} + \"input/controllers/wii-js/\"","scope":"static","longname":"CB_Configuration.CrossBase.WII_JS_PATH"},{"comment":"/**\r\n * The script file path for [wii-js]{@link https://github.com/ryanmcgrath/wii-js}.\r\n * @memberof CB_Configuration.CrossBase\r\n * @name WII_JS_PATH_SCRIPT_FILE\r\n *\t@constant\r\n * @type {string}\r\n * @default {@link CB_Configuration.CrossBase.WII_JS_PATH} + \"wii.min.js\"\r\n */","meta":{"filename":"CrossBase.js","lineno":1490,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase","code":{}},"description":"<p>The script file path for [wii-js]{@link https://github.com/ryanmcgrath/wii-js}.</p>","memberof":"CB_Configuration.CrossBase","name":"WII_JS_PATH_SCRIPT_FILE","kind":"constant","type":{"names":["string"]},"defaultvalue":"{@link CB_Configuration.CrossBase.WII_JS_PATH} + \"wii.min.js\"","scope":"static","longname":"CB_Configuration.CrossBase.WII_JS_PATH_SCRIPT_FILE"},{"comment":"/**\r\n * Defines whether the path defined in {@link CB_Configuration.CrossBase.WII_JS_PATH_SCRIPT_FILE} is either absolute or relative to the CrossBrowdy script path.\r\n * @memberof CB_Configuration.CrossBase\r\n * @name WII_JS_PATH_ABSOLUTE\r\n *\t@constant\r\n * @type {boolean}\r\n * @default\r\n */","meta":{"filename":"CrossBase.js","lineno":1500,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase","code":{}},"description":"<p>Defines whether the path defined in {@link CB_Configuration.CrossBase.WII_JS_PATH_SCRIPT_FILE} is either absolute or relative to the CrossBrowdy script path.</p>","memberof":"CB_Configuration.CrossBase","name":"WII_JS_PATH_ABSOLUTE","kind":"constant","type":{"names":["boolean"]},"scope":"static","longname":"CB_Configuration.CrossBase.WII_JS_PATH_ABSOLUTE"},{"comment":"/**\r\n * Defines whether to load or not [gamepad-plus]{@link https://github.com/MozVR/gamepad-plus}.\r\n * @memberof CB_Configuration.CrossBase\r\n * @name GAMEPAD_PLUS_LOAD\r\n *\t@constant\r\n * @type {boolean}\r\n * @default {@link CB_Configuration.CrossBase.needsGamepadPlus}()\r\n */","meta":{"filename":"CrossBase.js","lineno":1512,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase","code":{}},"description":"<p>Defines whether to load or not [gamepad-plus]{@link https://github.com/MozVR/gamepad-plus}.</p>","memberof":"CB_Configuration.CrossBase","name":"GAMEPAD_PLUS_LOAD","kind":"constant","type":{"names":["boolean"]},"defaultvalue":"{@link CB_Configuration.CrossBase.needsGamepadPlus}()","scope":"static","longname":"CB_Configuration.CrossBase.GAMEPAD_PLUS_LOAD"},{"comment":"/**\r\n * Directory that contains the [gamepad-plus]{@link https://github.com/MozVR/gamepad-plus} files.\r\n * @memberof CB_Configuration.CrossBase\r\n * @name GAMEPAD_PLUS_PATH\r\n *\t@constant\r\n * @type {string}\r\n * @default {@link CB_Configuration.CrossBase.SCRIPT_PATH} + \"input/controllers/gamepad-plus/\"\r\n */","meta":{"filename":"CrossBase.js","lineno":1522,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase","code":{}},"description":"<p>Directory that contains the [gamepad-plus]{@link https://github.com/MozVR/gamepad-plus} files.</p>","memberof":"CB_Configuration.CrossBase","name":"GAMEPAD_PLUS_PATH","kind":"constant","type":{"names":["string"]},"defaultvalue":"{@link CB_Configuration.CrossBase.SCRIPT_PATH} + \"input/controllers/gamepad-plus/\"","scope":"static","longname":"CB_Configuration.CrossBase.GAMEPAD_PLUS_PATH"},{"comment":"/**\r\n * The script file path for [gamepad-plus]{@link https://github.com/MozVR/gamepad-plus}.\r\n * @memberof CB_Configuration.CrossBase\r\n * @name GAMEPAD_PLUS_PATH_SCRIPT_FILE\r\n *\t@constant\r\n * @type {string}\r\n * @default {@link CB_Configuration.CrossBase.GAMEPAD_PLUS_PATH} + \"gamepads.js\"\r\n */","meta":{"filename":"CrossBase.js","lineno":1532,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase","code":{}},"description":"<p>The script file path for [gamepad-plus]{@link https://github.com/MozVR/gamepad-plus}.</p>","memberof":"CB_Configuration.CrossBase","name":"GAMEPAD_PLUS_PATH_SCRIPT_FILE","kind":"constant","type":{"names":["string"]},"defaultvalue":"{@link CB_Configuration.CrossBase.GAMEPAD_PLUS_PATH} + \"gamepads.js\"","scope":"static","longname":"CB_Configuration.CrossBase.GAMEPAD_PLUS_PATH_SCRIPT_FILE"},{"comment":"/**\r\n * Defines whether the path defined in {@link CB_Configuration.CrossBase.GAMEPAD_PLUS_PATH_SCRIPT_FILE} is either absolute or relative to the CrossBrowdy script path.\r\n * @memberof CB_Configuration.CrossBase\r\n * @name GAMEPAD_PLUS_PATH_ABSOLUTE\r\n *\t@constant\r\n * @type {boolean}\r\n * @default\r\n */","meta":{"filename":"CrossBase.js","lineno":1542,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase","code":{}},"description":"<p>Defines whether the path defined in {@link CB_Configuration.CrossBase.GAMEPAD_PLUS_PATH_SCRIPT_FILE} is either absolute or relative to the CrossBrowdy script path.</p>","memberof":"CB_Configuration.CrossBase","name":"GAMEPAD_PLUS_PATH_ABSOLUTE","kind":"constant","type":{"names":["boolean"]},"scope":"static","longname":"CB_Configuration.CrossBase.GAMEPAD_PLUS_PATH_ABSOLUTE"},{"comment":"/**\r\n * Defines whether to load or not [Canbox]{@link https://github.com/robertinglin/CanBox}.\r\n * @memberof CB_Configuration.CrossBase\r\n * @name CANBOX_LOAD\r\n *\t@constant\r\n * @type {boolean}\r\n * @default {@link CB_Configuration.CrossBase.needsCanbox}()\r\n */","meta":{"filename":"CrossBase.js","lineno":1554,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase","code":{}},"description":"<p>Defines whether to load or not [Canbox]{@link https://github.com/robertinglin/CanBox}.</p>","memberof":"CB_Configuration.CrossBase","name":"CANBOX_LOAD","kind":"constant","type":{"names":["boolean"]},"defaultvalue":"{@link CB_Configuration.CrossBase.needsCanbox}()","scope":"static","longname":"CB_Configuration.CrossBase.CANBOX_LOAD"},{"comment":"/**\r\n * Directory that contains the [Canbox]{@link https://github.com/robertinglin/CanBox} files.\r\n * @memberof CB_Configuration.CrossBase\r\n * @name CANBOX_PATH\r\n *\t@constant\r\n * @type {string}\r\n * @default {@link CB_Configuration.CrossBase.SCRIPT_PATH} + \"audiovisual/image/canvas/canbox/\"\r\n */","meta":{"filename":"CrossBase.js","lineno":1564,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase","code":{}},"description":"<p>Directory that contains the [Canbox]{@link https://github.com/robertinglin/CanBox} files.</p>","memberof":"CB_Configuration.CrossBase","name":"CANBOX_PATH","kind":"constant","type":{"names":["string"]},"defaultvalue":"{@link CB_Configuration.CrossBase.SCRIPT_PATH} + \"audiovisual/image/canvas/canbox/\"","scope":"static","longname":"CB_Configuration.CrossBase.CANBOX_PATH"},{"comment":"/**\r\n * The script file path for [Canbox]{@link https://github.com/robertinglin/CanBox}.\r\n * @memberof CB_Configuration.CrossBase\r\n * @name CANBOX_PATH_SCRIPT_FILE\r\n *\t@constant\r\n * @type {string}\r\n * @default {@link CB_Configuration.CrossBase.CANBOX_PATH} + \"canbox.0.2.1.js\"\r\n */","meta":{"filename":"CrossBase.js","lineno":1574,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase","code":{}},"description":"<p>The script file path for [Canbox]{@link https://github.com/robertinglin/CanBox}.</p>","memberof":"CB_Configuration.CrossBase","name":"CANBOX_PATH_SCRIPT_FILE","kind":"constant","type":{"names":["string"]},"defaultvalue":"{@link CB_Configuration.CrossBase.CANBOX_PATH} + \"canbox.0.2.1.js\"","scope":"static","longname":"CB_Configuration.CrossBase.CANBOX_PATH_SCRIPT_FILE"},{"comment":"/**\r\n * Defines whether the path defined in {@link CB_Configuration.CrossBase.CANBOX_PATH_SCRIPT_FILE} is either absolute or relative to the CrossBrowdy script path.\r\n * @memberof CB_Configuration.CrossBase\r\n * @name CANBOX_PATH_ABSOLUTE\r\n *\t@constant\r\n * @type {boolean}\r\n * @default\r\n */","meta":{"filename":"CrossBase.js","lineno":1584,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase","code":{}},"description":"<p>Defines whether the path defined in {@link CB_Configuration.CrossBase.CANBOX_PATH_SCRIPT_FILE} is either absolute or relative to the CrossBrowdy script path.</p>","memberof":"CB_Configuration.CrossBase","name":"CANBOX_PATH_ABSOLUTE","kind":"constant","type":{"names":["boolean"]},"scope":"static","longname":"CB_Configuration.CrossBase.CANBOX_PATH_ABSOLUTE"},{"comment":"/**\r\n * Defines whether to load or not [FlashCanvas]{@link https://github.com/everlaat/flashcanvas}.\r\n * @memberof CB_Configuration.CrossBase\r\n * @name FLASHCANVAS_LOAD\r\n *\t@constant\r\n * @type {boolean}\r\n * @default {@link CB_Configuration.CrossBase.needsFlashCanvas}()\r\n */","meta":{"filename":"CrossBase.js","lineno":1596,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase","code":{}},"description":"<p>Defines whether to load or not [FlashCanvas]{@link https://github.com/everlaat/flashcanvas}.</p>","memberof":"CB_Configuration.CrossBase","name":"FLASHCANVAS_LOAD","kind":"constant","type":{"names":["boolean"]},"defaultvalue":"{@link CB_Configuration.CrossBase.needsFlashCanvas}()","scope":"static","longname":"CB_Configuration.CrossBase.FLASHCANVAS_LOAD"},{"comment":"/**\r\n * Defines whether to allow to run [FlashCanvas]{@link https://github.com/everlaat/flashcanvas} locally or not (because the \".swf\" file folder needs to be added to 'trusted files' in Flash global configuration to work locally in some operating systems).\r\n * @memberof CB_Configuration.CrossBase\r\n * @name FLASHCANVAS_ALLOW_RUN_LOCALLY_DEFAULT\r\n *\t@constant\r\n * @type {boolean}\r\n * @default\r\n */","meta":{"filename":"CrossBase.js","lineno":1606,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase","code":{}},"description":"<p>Defines whether to allow to run [FlashCanvas]{@link https://github.com/everlaat/flashcanvas} locally or not (because the &quot;.swf&quot; file folder needs to be added to 'trusted files' in Flash global configuration to work locally in some operating systems).</p>","memberof":"CB_Configuration.CrossBase","name":"FLASHCANVAS_ALLOW_RUN_LOCALLY_DEFAULT","kind":"constant","type":{"names":["boolean"]},"scope":"static","longname":"CB_Configuration.CrossBase.FLASHCANVAS_ALLOW_RUN_LOCALLY_DEFAULT"},{"comment":"/**\r\n * Directory that contains the [FlashCanvas]{@link https://github.com/everlaat/flashcanvas} files.\r\n * @memberof CB_Configuration.CrossBase\r\n * @name FLASHCANVAS_PATH\r\n *\t@constant\r\n * @type {string}\r\n * @default {@link CB_Configuration.CrossBase.SCRIPT_PATH} + \"audiovisual/image/canvas/FlashCanvas/pro/\"\r\n */","meta":{"filename":"CrossBase.js","lineno":1616,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase","code":{}},"description":"<p>Directory that contains the [FlashCanvas]{@link https://github.com/everlaat/flashcanvas} files.</p>","memberof":"CB_Configuration.CrossBase","name":"FLASHCANVAS_PATH","kind":"constant","type":{"names":["string"]},"defaultvalue":"{@link CB_Configuration.CrossBase.SCRIPT_PATH} + \"audiovisual/image/canvas/FlashCanvas/pro/\"","scope":"static","longname":"CB_Configuration.CrossBase.FLASHCANVAS_PATH"},{"comment":"/**\r\n * The script file path for [FlashCanvas]{@link https://github.com/everlaat/flashcanvas}.\r\n * @memberof CB_Configuration.CrossBase\r\n * @name FLASHCANVAS_PATH_SCRIPT_FILE\r\n *\t@constant\r\n * @type {string}\r\n * @default {@link CB_Configuration.CrossBase.FLASHCANVAS_PATH} + \"bin/flashcanvas.js\"\r\n */","meta":{"filename":"CrossBase.js","lineno":1626,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase","code":{}},"description":"<p>The script file path for [FlashCanvas]{@link https://github.com/everlaat/flashcanvas}.</p>","memberof":"CB_Configuration.CrossBase","name":"FLASHCANVAS_PATH_SCRIPT_FILE","kind":"constant","type":{"names":["string"]},"defaultvalue":"{@link CB_Configuration.CrossBase.FLASHCANVAS_PATH} + \"bin/flashcanvas.js\"","scope":"static","longname":"CB_Configuration.CrossBase.FLASHCANVAS_PATH_SCRIPT_FILE"},{"comment":"/**\r\n * Directory that contains the SWF's for [FlashCanvas]{@link https://github.com/everlaat/flashcanvas}. The value of the \"scriptPathGiven\" parameter will be attached at the beginning automatically. Belongs to the \"swfPath\" parameter of the library set on the \"window.FlashCanvasOptions\" object. More information: https://web.archive.org/web/20180604011002/http://flashcanvas.net/docs/config\r\n * @memberof CB_Configuration.CrossBase\r\n * @name FLASHCANVAS_PATH_SWF\r\n *\t@constant\r\n * @type {string}\r\n * @default {@link CB_Configuration.CrossBase.FLASHCANVAS_PATH} + \"bin/\"\r\n */","meta":{"filename":"CrossBase.js","lineno":1636,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase","code":{}},"description":"<p>Directory that contains the SWF's for [FlashCanvas]{@link https://github.com/everlaat/flashcanvas}. The value of the &quot;scriptPathGiven&quot; parameter will be attached at the beginning automatically. Belongs to the &quot;swfPath&quot; parameter of the library set on the &quot;window.FlashCanvasOptions&quot; object. More information: https://web.archive.org/web/20180604011002/http://flashcanvas.net/docs/config</p>","memberof":"CB_Configuration.CrossBase","name":"FLASHCANVAS_PATH_SWF","kind":"constant","type":{"names":["string"]},"defaultvalue":"{@link CB_Configuration.CrossBase.FLASHCANVAS_PATH} + \"bin/\"","scope":"static","longname":"CB_Configuration.CrossBase.FLASHCANVAS_PATH_SWF"},{"comment":"/**\r\n * Defines whether the path defined in {@link CB_Configuration.CrossBase.FLASHCANVAS_PATH_SCRIPT_FILE} is either absolute or relative to the CrossBrowdy script path.\r\n * @memberof CB_Configuration.CrossBase\r\n * @name FLASHCANVAS_PATH_ABSOLUTE\r\n *\t@constant\r\n * @type {boolean}\r\n * @default\r\n */","meta":{"filename":"CrossBase.js","lineno":1646,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase","code":{}},"description":"<p>Defines whether the path defined in {@link CB_Configuration.CrossBase.FLASHCANVAS_PATH_SCRIPT_FILE} is either absolute or relative to the CrossBrowdy script path.</p>","memberof":"CB_Configuration.CrossBase","name":"FLASHCANVAS_PATH_ABSOLUTE","kind":"constant","type":{"names":["boolean"]},"scope":"static","longname":"CB_Configuration.CrossBase.FLASHCANVAS_PATH_ABSOLUTE"},{"comment":"/**\r\n * Disables the context menu when the right mouse button is clicked on any canvas using [FlashCanvas]{@link https://github.com/everlaat/flashcanvas}' SWF. Belongs to the \"disableContextMenu\" parameter of the library set on the \"window.FlashCanvasOptions\" object. More information: https://web.archive.org/web/20180604011002/http://flashcanvas.net/docs/config\r\n * @memberof CB_Configuration.CrossBase\r\n * @name FLASHCANVAS_DISABLE_CONTEXT_MENU\r\n *\t@constant\r\n * @type {boolean}\r\n * @default\r\n */","meta":{"filename":"CrossBase.js","lineno":1656,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase","code":{}},"description":"<p>Disables the context menu when the right mouse button is clicked on any canvas using [FlashCanvas]{@link https://github.com/everlaat/flashcanvas}' SWF. Belongs to the &quot;disableContextMenu&quot; parameter of the library set on the &quot;window.FlashCanvasOptions&quot; object. More information: https://web.archive.org/web/20180604011002/http://flashcanvas.net/docs/config</p>","memberof":"CB_Configuration.CrossBase","name":"FLASHCANVAS_DISABLE_CONTEXT_MENU","kind":"constant","type":{"names":["boolean"]},"scope":"static","longname":"CB_Configuration.CrossBase.FLASHCANVAS_DISABLE_CONTEXT_MENU"},{"comment":"/**\r\n * Uses turbo mode to speed up [FlashCanvas]{@link https://github.com/everlaat/flashcanvas}. Belongs to the \"turbo\" parameter of the library set on the \"window.FlashCanvasOptions\" object. More information: https://web.archive.org/web/20180604011002/http://flashcanvas.net/docs/config\r\n * @memberof CB_Configuration.CrossBase\r\n * @name FLASHCANVAS_TURBO_MODE\r\n *\t@constant\r\n * @type {boolean}\r\n * @default\r\n */","meta":{"filename":"CrossBase.js","lineno":1666,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase","code":{}},"description":"<p>Uses turbo mode to speed up [FlashCanvas]{@link https://github.com/everlaat/flashcanvas}. Belongs to the &quot;turbo&quot; parameter of the library set on the &quot;window.FlashCanvasOptions&quot; object. More information: https://web.archive.org/web/20180604011002/http://flashcanvas.net/docs/config</p>","memberof":"CB_Configuration.CrossBase","name":"FLASHCANVAS_TURBO_MODE","kind":"constant","type":{"names":["boolean"]},"scope":"static","longname":"CB_Configuration.CrossBase.FLASHCANVAS_TURBO_MODE"},{"comment":"/**\r\n * Maximum size for the image cache used by [FlashCanvas]{@link https://github.com/everlaat/flashcanvas}. Belongs to the \"imageCacheSize\" parameter of the library set on the \"window.FlashCanvasOptions\" object. More information: https://web.archive.org/web/20180604011002/http://flashcanvas.net/docs/config\r\n * @memberof CB_Configuration.CrossBase\r\n * @name FLASHCANVAS_IMAGE_CACHE_SIZE\r\n *\t@constant\r\n * @type {integer}\r\n * @default\r\n */","meta":{"filename":"CrossBase.js","lineno":1676,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase","code":{}},"description":"<p>Maximum size for the image cache used by [FlashCanvas]{@link https://github.com/everlaat/flashcanvas}. Belongs to the &quot;imageCacheSize&quot; parameter of the library set on the &quot;window.FlashCanvasOptions&quot; object. More information: https://web.archive.org/web/20180604011002/http://flashcanvas.net/docs/config</p>","memberof":"CB_Configuration.CrossBase","name":"FLASHCANVAS_IMAGE_CACHE_SIZE","kind":"constant","type":{"names":["integer"]},"scope":"static","longname":"CB_Configuration.CrossBase.FLASHCANVAS_IMAGE_CACHE_SIZE"},{"comment":"/**\r\n * Defines whether to load or not [SLCanvas]{@link https://slcanvas.codeplex.com/}.\r\n * @memberof CB_Configuration.CrossBase\r\n * @name SLCANVAS_LOAD\r\n *\t@constant\r\n * @type {boolean}\r\n * @default {@link CB_Configuration.CrossBase.needsSLCanvas}()\r\n */","meta":{"filename":"CrossBase.js","lineno":1688,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase","code":{}},"description":"<p>Defines whether to load or not [SLCanvas]{@link https://slcanvas.codeplex.com/}.</p>","memberof":"CB_Configuration.CrossBase","name":"SLCANVAS_LOAD","kind":"constant","type":{"names":["boolean"]},"defaultvalue":"{@link CB_Configuration.CrossBase.needsSLCanvas}()","scope":"static","longname":"CB_Configuration.CrossBase.SLCANVAS_LOAD"},{"comment":"/**\r\n * Directory that contains the [SLCanvas]{@link https://slcanvas.codeplex.com/} files.\r\n * @memberof CB_Configuration.CrossBase\r\n * @name SLCANVAS_PATH\r\n *\t@constant\r\n * @type {string}\r\n * @default {@link CB_Configuration.CrossBase.SCRIPT_PATH} + \"audiovisual/image/canvas/slcanvas/\"\r\n */","meta":{"filename":"CrossBase.js","lineno":1698,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase","code":{}},"description":"<p>Directory that contains the [SLCanvas]{@link https://slcanvas.codeplex.com/} files.</p>","memberof":"CB_Configuration.CrossBase","name":"SLCANVAS_PATH","kind":"constant","type":{"names":["string"]},"defaultvalue":"{@link CB_Configuration.CrossBase.SCRIPT_PATH} + \"audiovisual/image/canvas/slcanvas/\"","scope":"static","longname":"CB_Configuration.CrossBase.SLCANVAS_PATH"},{"comment":"/**\r\n * The script file path for [SLCanvas]{@link https://slcanvas.codeplex.com/}.\r\n * @memberof CB_Configuration.CrossBase\r\n * @name SLCANVAS_PATH_SCRIPT_FILE\r\n *\t@constant\r\n * @type {string}\r\n * @default {@link CB_Configuration.CrossBase.SLCANVAS_PATH} + \"slcanvas.js\"\r\n */","meta":{"filename":"CrossBase.js","lineno":1708,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase","code":{}},"description":"<p>The script file path for [SLCanvas]{@link https://slcanvas.codeplex.com/}.</p>","memberof":"CB_Configuration.CrossBase","name":"SLCANVAS_PATH_SCRIPT_FILE","kind":"constant","type":{"names":["string"]},"defaultvalue":"{@link CB_Configuration.CrossBase.SLCANVAS_PATH} + \"slcanvas.js\"","scope":"static","longname":"CB_Configuration.CrossBase.SLCANVAS_PATH_SCRIPT_FILE"},{"comment":"/**\r\n * Defines whether the path defined in {@link CB_Configuration.CrossBase.SLCANVAS_PATH_SCRIPT_FILE} is either absolute or relative to the CrossBrowdy script path.\r\n * @memberof CB_Configuration.CrossBase\r\n * @name SLCANVAS_PATH_ABSOLUTE\r\n *\t@constant\r\n * @type {boolean}\r\n * @default\r\n */","meta":{"filename":"CrossBase.js","lineno":1718,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase","code":{}},"description":"<p>Defines whether the path defined in {@link CB_Configuration.CrossBase.SLCANVAS_PATH_SCRIPT_FILE} is either absolute or relative to the CrossBrowdy script path.</p>","memberof":"CB_Configuration.CrossBase","name":"SLCANVAS_PATH_ABSOLUTE","kind":"constant","type":{"names":["boolean"]},"scope":"static","longname":"CB_Configuration.CrossBase.SLCANVAS_PATH_ABSOLUTE"},{"comment":"/**\r\n * Defines whether to load or not [ExplorerCanvas]{@link https://github.com/arv/explorercanvas}.\r\n * @memberof CB_Configuration.CrossBase\r\n * @name EXCANVAS_LOAD\r\n *\t@constant\r\n * @type {boolean}\r\n * @default {@link CB_Configuration.CrossBase.needsExplorerCanvas}()\r\n */","meta":{"filename":"CrossBase.js","lineno":1730,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase","code":{}},"description":"<p>Defines whether to load or not [ExplorerCanvas]{@link https://github.com/arv/explorercanvas}.</p>","memberof":"CB_Configuration.CrossBase","name":"EXCANVAS_LOAD","kind":"constant","type":{"names":["boolean"]},"defaultvalue":"{@link CB_Configuration.CrossBase.needsExplorerCanvas}()","scope":"static","longname":"CB_Configuration.CrossBase.EXCANVAS_LOAD"},{"comment":"/**\r\n * Directory that contains the [ExplorerCanvas]{@link https://github.com/arv/explorercanvas} files.\r\n * @memberof CB_Configuration.CrossBase\r\n * @name EXCANVAS_PATH\r\n *\t@constant\r\n * @type {string}\r\n * @default {@link CB_Configuration.CrossBase.SCRIPT_PATH} + \"audiovisual/image/canvas/excanvas_with_canvas_text/\"\r\n */","meta":{"filename":"CrossBase.js","lineno":1740,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase","code":{}},"description":"<p>Directory that contains the [ExplorerCanvas]{@link https://github.com/arv/explorercanvas} files.</p>","memberof":"CB_Configuration.CrossBase","name":"EXCANVAS_PATH","kind":"constant","type":{"names":["string"]},"defaultvalue":"{@link CB_Configuration.CrossBase.SCRIPT_PATH} + \"audiovisual/image/canvas/excanvas_with_canvas_text/\"","scope":"static","longname":"CB_Configuration.CrossBase.EXCANVAS_PATH"},{"comment":"/**\r\n * The script file path for [ExplorerCanvas]{@link https://github.com/arv/explorercanvas}.\r\n * @memberof CB_Configuration.CrossBase\r\n * @name EXCANVAS_PATH_SCRIPT_FILE\r\n *\t@constant\r\n * @type {string}\r\n * @default {@link CB_Configuration.CrossBase.EXCANVAS_PATH} + \"excanvas.js\"\r\n */","meta":{"filename":"CrossBase.js","lineno":1750,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase","code":{}},"description":"<p>The script file path for [ExplorerCanvas]{@link https://github.com/arv/explorercanvas}.</p>","memberof":"CB_Configuration.CrossBase","name":"EXCANVAS_PATH_SCRIPT_FILE","kind":"constant","type":{"names":["string"]},"defaultvalue":"{@link CB_Configuration.CrossBase.EXCANVAS_PATH} + \"excanvas.js\"","scope":"static","longname":"CB_Configuration.CrossBase.EXCANVAS_PATH_SCRIPT_FILE"},{"comment":"/**\r\n * Defines whether the path defined in {@link CB_Configuration.CrossBase.EXCANVAS_PATH_SCRIPT_FILE} is either absolute or relative to the CrossBrowdy script path.\r\n * @memberof CB_Configuration.CrossBase\r\n * @name EXCANVAS_PATH_ABSOLUTE\r\n *\t@constant\r\n * @type {boolean}\r\n * @default\r\n */","meta":{"filename":"CrossBase.js","lineno":1760,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase","code":{}},"description":"<p>Defines whether the path defined in {@link CB_Configuration.CrossBase.EXCANVAS_PATH_SCRIPT_FILE} is either absolute or relative to the CrossBrowdy script path.</p>","memberof":"CB_Configuration.CrossBase","name":"EXCANVAS_PATH_ABSOLUTE","kind":"constant","type":{"names":["boolean"]},"scope":"static","longname":"CB_Configuration.CrossBase.EXCANVAS_PATH_ABSOLUTE"},{"comment":"/**\r\n * Defines whether to load or not [canvas-text]{@link https://github.com/PhenX/canvas-text}.\r\n * @memberof CB_Configuration.CrossBase\r\n * @name CANVAS_TEXT_LOAD\r\n *\t@constant\r\n * @type {boolean}\r\n * @default {@link CB_Configuration.CrossBase.needsCanvasText}()\r\n */","meta":{"filename":"CrossBase.js","lineno":1772,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase","code":{}},"description":"<p>Defines whether to load or not [canvas-text]{@link https://github.com/PhenX/canvas-text}.</p>","memberof":"CB_Configuration.CrossBase","name":"CANVAS_TEXT_LOAD","kind":"constant","type":{"names":["boolean"]},"defaultvalue":"{@link CB_Configuration.CrossBase.needsCanvasText}()","scope":"static","longname":"CB_Configuration.CrossBase.CANVAS_TEXT_LOAD"},{"comment":"/**\r\n * Directory that contains the [canvas-text]{@link https://github.com/PhenX/canvas-text} files.\r\n * @memberof CB_Configuration.CrossBase\r\n * @name CANVAS_TEXT_PATH\r\n *\t@constant\r\n * @type {string}\r\n * @default {@link CB_Configuration.CrossBase.SCRIPT_PATH} + \"audiovisual/image/canvas/excanvas_with_canvas_text/\"\r\n */","meta":{"filename":"CrossBase.js","lineno":1782,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase","code":{}},"description":"<p>Directory that contains the [canvas-text]{@link https://github.com/PhenX/canvas-text} files.</p>","memberof":"CB_Configuration.CrossBase","name":"CANVAS_TEXT_PATH","kind":"constant","type":{"names":["string"]},"defaultvalue":"{@link CB_Configuration.CrossBase.SCRIPT_PATH} + \"audiovisual/image/canvas/excanvas_with_canvas_text/\"","scope":"static","longname":"CB_Configuration.CrossBase.CANVAS_TEXT_PATH"},{"comment":"/**\r\n * The script file path for [canvas-text]{@link https://github.com/PhenX/canvas-text}.\r\n * @memberof CB_Configuration.CrossBase\r\n * @name CANVAS_TEXT_PATH_SCRIPT_FILE\r\n *\t@constant\r\n * @type {string}\r\n * @default {@link CB_Configuration.CrossBase.CANVAS_TEXT_PATH} + \"canvas.text.js\"\r\n */","meta":{"filename":"CrossBase.js","lineno":1792,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase","code":{}},"description":"<p>The script file path for [canvas-text]{@link https://github.com/PhenX/canvas-text}.</p>","memberof":"CB_Configuration.CrossBase","name":"CANVAS_TEXT_PATH_SCRIPT_FILE","kind":"constant","type":{"names":["string"]},"defaultvalue":"{@link CB_Configuration.CrossBase.CANVAS_TEXT_PATH} + \"canvas.text.js\"","scope":"static","longname":"CB_Configuration.CrossBase.CANVAS_TEXT_PATH_SCRIPT_FILE"},{"comment":"/**\r\n * Defines whether the path defined in {@link CB_Configuration.CrossBase.CANVAS_TEXT_PATH_SCRIPT_FILE} is either absolute or relative to the CrossBrowdy script path.\r\n * @memberof CB_Configuration.CrossBase\r\n * @name CANVAS_TEXT_PATH_ABSOLUTE\r\n *\t@constant\r\n * @type {boolean}\r\n * @default\r\n */","meta":{"filename":"CrossBase.js","lineno":1802,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase","code":{}},"description":"<p>Defines whether the path defined in {@link CB_Configuration.CrossBase.CANVAS_TEXT_PATH_SCRIPT_FILE} is either absolute or relative to the CrossBrowdy script path.</p>","memberof":"CB_Configuration.CrossBase","name":"CANVAS_TEXT_PATH_ABSOLUTE","kind":"constant","type":{"names":["boolean"]},"scope":"static","longname":"CB_Configuration.CrossBase.CANVAS_TEXT_PATH_ABSOLUTE"},{"comment":"/**\r\n * @file Device management. Contains the {@link CB_Device} static class.\r\n * @author Joan Alba Maldonado <workindalian@gmail.com>\r\n */","meta":{"filename":"CB_Device.js","lineno":1,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\device","code":{}},"name":"CrossBase/device/CB_Device.js","kind":"file","description":"<p>Device management. Contains the {@link CB_Device} static class.</p>","preserveName":true,"author":["Joan Alba Maldonado <workindalian@gmail.com>"],"longname":"CrossBase/device/CB_Device.js","scope":"global"},{"comment":"/**\r\n * Static class to manage the device. It will return itself if it is tried to be instantiated.\r\n * @namespace\r\n * @todo Think about defining a parameter on many of the events to disable automatic normalization of the event object.\r\n */","meta":{"range":[393,437],"filename":"CB_Device.js","lineno":12,"columnno":4,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\device","code":{"id":"astnode100058468","name":"CB_Device","type":"FunctionExpression"}},"description":"<p>Static class to manage the device. It will return itself if it is tried to be instantiated.</p>","kind":"namespace","todo":["Think about defining a parameter on many of the events to disable automatic normalization of the event object."],"name":"CB_Device","longname":"CB_Device","scope":"global","params":[]},{"comment":"/**\r\n\t * Gets a timestamp in milliseconds (elapsed since 1st of January 1970 00:00:00 UTC) representing the current time. Using high precision if the {@link CB_Configuration.CrossBase.CB_Device_getTime_HIGH_PRECISION} option is true (it would return '[window.performance.timing.navigationStart]{@link https://developer.mozilla.org/en-US/docs/Web/API/PerformanceTiming/navigationStart} + [window.performance.now]{@link https://developer.mozilla.org/en-US/docs/Web/API/Performance/now}()', where '[window.performance.now]{@link https://developer.mozilla.org/en-US/docs/Web/API/Performance/now}' could be polyfilled) or normal precision otherwise (it would return '[Date.now]{@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/now}()', where '[Date.now]{@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/now}' could be polyfilled).\r\n\t * @function\r\n\t * @returns {integer} Returns a timestamp in milliseconds (elapsed since 1st of January 1970 00:00:00 UTC) representing the current time or zero (0) if it was not possible.\r\n\t */","meta":{"range":[2556,2675],"filename":"CB_Device.js","lineno":46,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\device","code":{"id":"astnode100058582","name":"CB_Device.getTime","type":"FunctionExpression","paramnames":[]}},"description":"<p>Gets a timestamp in milliseconds (elapsed since 1st of January 1970 00:00:00 UTC) representing the current time. Using high precision if the {@link CB_Configuration.CrossBase.CB_Device_getTime_HIGH_PRECISION} option is true (it would return '[window.performance.timing.navigationStart]{@link https://developer.mozilla.org/en-US/docs/Web/API/PerformanceTiming/navigationStart} + [window.performance.now]{@link https://developer.mozilla.org/en-US/docs/Web/API/Performance/now}()', where '[window.performance.now]{@link https://developer.mozilla.org/en-US/docs/Web/API/Performance/now}' could be polyfilled) or normal precision otherwise (it would return '[Date.now]{@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/now}()', where '[Date.now]{@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/now}' could be polyfilled).</p>","kind":"function","returns":[{"type":{"names":["integer"]},"description":"<p>Returns a timestamp in milliseconds (elapsed since 1st of January 1970 00:00:00 UTC) representing the current time or zero (0) if it was not possible.</p>"}],"name":"getTime","longname":"CB_Device.getTime","memberof":"CB_Device","scope":"static"},{"comment":"/**\r\n\t * Gets the time elapsed since the [time origin]{@link https://developer.mozilla.org/en-US/docs/Web/API/DOMHighResTimeStamp#The_time_origin}. If possible, it uses [window.performance.now]{@link https://developer.mozilla.org/en-US/docs/Web/API/Performance/now}, which could be polyfilled (if it is polyfilled it will not have high precision timing but, if it is not, time precision/resolution will depend on the client).\r\n\t * @function\r\n\t * @returns {number} Returns the time elapsed since the [time origin]{@link https://developer.mozilla.org/en-US/docs/Web/API/DOMHighResTimeStamp#The_time_origin}. If possible, it uses [window.performance.now]{@link https://developer.mozilla.org/en-US/docs/Web/API/Performance/now}, which could be polyfilled (if it is polyfilled it will not have high precision timing but, if it is not, time precision/resolution will depend on the client).\r\n\t */","meta":{"range":[3578,3713],"filename":"CB_Device.js","lineno":57,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\device","code":{"id":"astnode100058594","name":"CB_Device.getTiming","type":"FunctionExpression","paramnames":[]}},"description":"<p>Gets the time elapsed since the [time origin]{@link https://developer.mozilla.org/en-US/docs/Web/API/DOMHighResTimeStamp#The_time_origin}. If possible, it uses [window.performance.now]{@link https://developer.mozilla.org/en-US/docs/Web/API/Performance/now}, which could be polyfilled (if it is polyfilled it will not have high precision timing but, if it is not, time precision/resolution will depend on the client).</p>","kind":"function","returns":[{"type":{"names":["number"]},"description":"<p>Returns the time elapsed since the [time origin]{@link https://developer.mozilla.org/en-US/docs/Web/API/DOMHighResTimeStamp#The_time_origin}. If possible, it uses [window.performance.now]{@link https://developer.mozilla.org/en-US/docs/Web/API/Performance/now}, which could be polyfilled (if it is polyfilled it will not have high precision timing but, if it is not, time precision/resolution will depend on the client).</p>"}],"name":"getTiming","longname":"CB_Device.getTiming","memberof":"CB_Device","scope":"static"},{"comment":"/**\r\n * Static class to manage the device's location. It will return itself if it is tried to be instantiated.\r\n * @namespace\r\n * @todo Normalize more differences between web clients.\r\n */","meta":{"range":[4830,4892],"filename":"CB_Device.js","lineno":95,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\device","code":{"id":"astnode100058677","name":"CB_Device.Location","type":"FunctionExpression","paramnames":[]}},"description":"<p>Static class to manage the device's location. It will return itself if it is tried to be instantiated.</p>","kind":"namespace","todo":["Normalize more differences between web clients."],"name":"Location","longname":"CB_Device.Location","memberof":"CB_Device","scope":"static"},{"comment":"/**\r\n\t * Tells whether the [Geolocation API]{@link https://developer.mozilla.org/docs/Web/API/Geolocation} (or compatible one as [Apache Cordova's Geolocation plugin]{@link https://github.com/apache/cordova-plugin-geolocation}) is supported or not.\r\n\t * @function\r\n\t * @returns {boolean}\r\n\t */","meta":{"range":[7408,7587],"filename":"CB_Device.js","lineno":182,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\device","code":{"id":"astnode100058753","name":"CB_Device.Location.isSupported","type":"FunctionExpression","paramnames":[]}},"description":"<p>Tells whether the [Geolocation API]{@link https://developer.mozilla.org/docs/Web/API/Geolocation} (or compatible one as [Apache Cordova's Geolocation plugin]{@link https://github.com/apache/cordova-plugin-geolocation}) is supported or not.</p>","kind":"function","returns":[{"type":{"names":["boolean"]}}],"name":"isSupported","longname":"CB_Device.Location.isSupported","memberof":"CB_Device.Location","scope":"static"},{"comment":"/**\r\n\t * Gets the current position. Uses the [Geolocation API]{@link https://developer.mozilla.org/docs/Web/API/Geolocation} (or compatible one as [Apache Cordova's Geolocation plugin]{@link https://github.com/apache/cordova-plugin-geolocation}).\r\n\t * @function\r\n\t * @param {function} [callbackOk] - Callback that will be called if it gets the location successfully. Following the same rules as the first parameter of the native [getCurrentPosition]{@link https://developer.mozilla.org/docs/Web/API/Geolocation/getCurrentPosition} function.\r\n\t * @param {function} [callbackError] - Callback that will be called if there is any error getting the location. Following the same rules as the second parameter of the native [getCurrentPosition]{@link https://developer.mozilla.org/docs/Web/API/Geolocation/getCurrentPosition} function.\r\n\t * @param {Object} [options] - Object that represents the desired options. This parameter will be ignored if \"keepOldOptions\" is set to true. Following the same rules as the third parameter of the native [getCurrentPosition]{@link https://developer.mozilla.org/docs/Web/API/Geolocation/getCurrentPosition} function.\r\n\t * @param {boolean} [keepOldCallbackOk=true] - If it is set to false, it will not keep the old previous \"callbackOk\" (if any) which was/were set in previous calls to this function.\r\n\t * @param {boolean} [keepOldCallbackError=true] - If it is set to false, it will not keep the old previous \"callbackError\" (if any) which was/were set in previous calls to this function.\r\n\t * @param {boolean} [keepOldOptions=false] - If it is set to true, it will ignore the given options and it will try to use the old previous options (if any) which were set in previous calls to this function.\r\n\t * @returns {undefined|false} Returns false in the case that [Geolocation API]{@link https://developer.mozilla.org/docs/Web/API/Geolocation} (or compatible one as [Apache Cordova's Geolocation plugin]{@link https://github.com/apache/cordova-plugin-geolocation}) is not supported or undefined otherwise.\r\n\t */","meta":{"range":[9691,11719],"filename":"CB_Device.js","lineno":200,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\device","code":{"id":"astnode100058787","name":"CB_Device.Location.get","type":"FunctionExpression","paramnames":["callbackOk","callbackError","options","keepOldCallbackOk","keepOldCallbackError","keepOldOptions"]},"vars":{"keepOldCallbackOk":"CB_Device.Location.get~keepOldCallbackOk","keepOldCallbackError":"CB_Device.Location.get~keepOldCallbackError","CB_Device.Location.get_callbackOk":"CB_Device.Location.get_callbackOk","callbackOkOld":"CB_Device.Location.get~callbackOkOld","":null,"CB_Device.Location.get_callbackError":"CB_Device.Location.get_callbackError","callbackErrorOld":"CB_Device.Location.get~callbackErrorOld","CB_Device.Location.get_options":"CB_Device.Location.get_options","CB_Device.Location._getFirstTime":"CB_Device.Location._getFirstTime"}},"description":"<p>Gets the current position. Uses the [Geolocation API]{@link https://developer.mozilla.org/docs/Web/API/Geolocation} (or compatible one as [Apache Cordova's Geolocation plugin]{@link https://github.com/apache/cordova-plugin-geolocation}).</p>","kind":"function","params":[{"type":{"names":["function"]},"optional":true,"description":"<p>Callback that will be called if it gets the location successfully. Following the same rules as the first parameter of the native [getCurrentPosition]{@link https://developer.mozilla.org/docs/Web/API/Geolocation/getCurrentPosition} function.</p>","name":"callbackOk"},{"type":{"names":["function"]},"optional":true,"description":"<p>Callback that will be called if there is any error getting the location. Following the same rules as the second parameter of the native [getCurrentPosition]{@link https://developer.mozilla.org/docs/Web/API/Geolocation/getCurrentPosition} function.</p>","name":"callbackError"},{"type":{"names":["Object"]},"optional":true,"description":"<p>Object that represents the desired options. This parameter will be ignored if &quot;keepOldOptions&quot; is set to true. Following the same rules as the third parameter of the native [getCurrentPosition]{@link https://developer.mozilla.org/docs/Web/API/Geolocation/getCurrentPosition} function.</p>","name":"options"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":true,"description":"<p>If it is set to false, it will not keep the old previous &quot;callbackOk&quot; (if any) which was/were set in previous calls to this function.</p>","name":"keepOldCallbackOk"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":true,"description":"<p>If it is set to false, it will not keep the old previous &quot;callbackError&quot; (if any) which was/were set in previous calls to this function.</p>","name":"keepOldCallbackError"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If it is set to true, it will ignore the given options and it will try to use the old previous options (if any) which were set in previous calls to this function.</p>","name":"keepOldOptions"}],"returns":[{"type":{"names":["undefined","false"]},"description":"<p>Returns false in the case that [Geolocation API]{@link https://developer.mozilla.org/docs/Web/API/Geolocation} (or compatible one as [Apache Cordova's Geolocation plugin]{@link https://github.com/apache/cordova-plugin-geolocation}) is not supported or undefined otherwise.</p>"}],"name":"get","longname":"CB_Device.Location.get","memberof":"CB_Device.Location","scope":"static"},{"comment":"/**\r\n\t * Starts or stops getting the current position constantly (real-time) every time it changes. Uses the [Geolocation API]{@link https://developer.mozilla.org/docs/Web/API/Geolocation} (or compatible one as [Apache Cordova's Geolocation plugin]{@link https://github.com/apache/cordova-plugin-geolocation}).\r\n\t * @function\r\n\t * @param {function|integer} [callbackOkOrId={@link CB_Device.Location.getConstantly_lastId}] - In the case that we want to start getting the position, use a function callback that will be called every time it gets the location successfully (using the native [watchPosition]{@link https://developer.mozilla.org/docs/Web/API/Geolocation/watchPosition} function). To stop getting the position, use the watch ID that we want to stop (using the native [clearWatch]{@link https://developer.mozilla.org/docs/Web/API/Geolocation/clearWatch} function). Following the same rules as the first parameter of the native [watchPosition]{@link https://developer.mozilla.org/docs/Web/API/Geolocation/watchPosition} function (when we want to start watching) or the first parameter of [clearWatch]{@link https://developer.mozilla.org/docs/Web/API/Geolocation/clearWatch} function (when we want to stop watching).\r\n\t * @param {function} [callbackError] - Callback that will be called if there is any error getting the location. Only used when we want to start getting the current position (\"callbackOkOrId\" is a function). Following the same rules as the second parameter of the native [watchPosition]{@link https://developer.mozilla.org/docs/Web/API/Geolocation/watchPosition} function.\r\n\t * @param {Object} [options] - Object that represents the desired options. This parameter will be ignored if \"keepOldOptions\" is set to true. Only used when we want to start getting the current position (\"callbackOkOrId\" is a function). Following the same rules as the third parameter of the native [watchPosition]{@link https://developer.mozilla.org/docs/Web/API/Geolocation/watchPosition} function.\r\n\t * @param {boolean} [keepOldCallbackOk=true] - If it is set to false, it will not keep the old previous \"callbackOk\" (if any) which was/were set in previous calls to this function. Only used when we want to start getting the current position (\"callbackOkOrId\" is a function).\r\n\t * @param {boolean} [keepOldCallbackError=true] - If it is set to false, it will not keep the old previous \"callbackError\" (if any) which was/were set in previous calls to this function. Only used when we want to start getting the current position (\"callbackOkOrId\" is a function).\r\n\t * @param {boolean} [keepOldOptions=false] - If it is set to true, it will ignore the given options and it will try to use the old previous options (if any) which were set in previous calls to this function. Only used when we want to start getting the current position (\"callbackOkOrId\" is a function).\r\n\t * @returns {integer|undefined|false} Returns false in the case that [Geolocation API]{@link https://developer.mozilla.org/docs/Web/API/Geolocation} (or compatible one as [Apache Cordova's Geolocation plugin]{@link https://github.com/apache/cordova-plugin-geolocation}) is not supported. In the case that we want to start getting the current position (\"callbackOkOrId\" is a function), it will return the watch ID that has been created. In the case that we want to stop getting the position (\"callbackOkOrId\" is a watch ID), it will return undefined.\r\n\t */","meta":{"range":[15214,18214],"filename":"CB_Device.js","lineno":264,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\device","code":{"id":"astnode100059018","name":"CB_Device.Location.getConstantly","type":"FunctionExpression","paramnames":["callbackOkOrId","callbackError","options","keepOldCallbackOk","keepOldCallbackError","keepOldOptions"]},"vars":{"keepOldCallbackOk":"CB_Device.Location.getConstantly~keepOldCallbackOk","keepOldCallbackError":"CB_Device.Location.getConstantly~keepOldCallbackError","CB_Device.Location.getConstantly_callbackOk":"CB_Device.Location.getConstantly_callbackOk","callbackOkOld":"CB_Device.Location.getConstantly~callbackOkOld","":null,"CB_Device.Location.getConstantly_callbackError":"CB_Device.Location.getConstantly_callbackError","callbackErrorOld":"CB_Device.Location.getConstantly~callbackErrorOld","CB_Device.Location.getConstantly_options":"CB_Device.Location.getConstantly_options","CB_Device.Location._getConstantlyFirstTime":"CB_Device.Location._getConstantlyFirstTime","CB_Device.Location.getConstantly_lastId":"CB_Device.Location.getConstantly_lastId","callbackOkOrId":"CB_Device.Location.getConstantly~callbackOkOrId"}},"description":"<p>Starts or stops getting the current position constantly (real-time) every time it changes. Uses the [Geolocation API]{@link https://developer.mozilla.org/docs/Web/API/Geolocation} (or compatible one as [Apache Cordova's Geolocation plugin]{@link https://github.com/apache/cordova-plugin-geolocation}).</p>","kind":"function","params":[{"type":{"names":["function","integer"]},"optional":true,"defaultvalue":"{@link CB_Device.Location.getConstantly_lastId}","description":"<p>In the case that we want to start getting the position, use a function callback that will be called every time it gets the location successfully (using the native [watchPosition]{@link https://developer.mozilla.org/docs/Web/API/Geolocation/watchPosition} function). To stop getting the position, use the watch ID that we want to stop (using the native [clearWatch]{@link https://developer.mozilla.org/docs/Web/API/Geolocation/clearWatch} function). Following the same rules as the first parameter of the native [watchPosition]{@link https://developer.mozilla.org/docs/Web/API/Geolocation/watchPosition} function (when we want to start watching) or the first parameter of [clearWatch]{@link https://developer.mozilla.org/docs/Web/API/Geolocation/clearWatch} function (when we want to stop watching).</p>","name":"callbackOkOrId"},{"type":{"names":["function"]},"optional":true,"description":"<p>Callback that will be called if there is any error getting the location. Only used when we want to start getting the current position (&quot;callbackOkOrId&quot; is a function). Following the same rules as the second parameter of the native [watchPosition]{@link https://developer.mozilla.org/docs/Web/API/Geolocation/watchPosition} function.</p>","name":"callbackError"},{"type":{"names":["Object"]},"optional":true,"description":"<p>Object that represents the desired options. This parameter will be ignored if &quot;keepOldOptions&quot; is set to true. Only used when we want to start getting the current position (&quot;callbackOkOrId&quot; is a function). Following the same rules as the third parameter of the native [watchPosition]{@link https://developer.mozilla.org/docs/Web/API/Geolocation/watchPosition} function.</p>","name":"options"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":true,"description":"<p>If it is set to false, it will not keep the old previous &quot;callbackOk&quot; (if any) which was/were set in previous calls to this function. Only used when we want to start getting the current position (&quot;callbackOkOrId&quot; is a function).</p>","name":"keepOldCallbackOk"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":true,"description":"<p>If it is set to false, it will not keep the old previous &quot;callbackError&quot; (if any) which was/were set in previous calls to this function. Only used when we want to start getting the current position (&quot;callbackOkOrId&quot; is a function).</p>","name":"keepOldCallbackError"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If it is set to true, it will ignore the given options and it will try to use the old previous options (if any) which were set in previous calls to this function. Only used when we want to start getting the current position (&quot;callbackOkOrId&quot; is a function).</p>","name":"keepOldOptions"}],"returns":[{"type":{"names":["integer","undefined","false"]},"description":"<p>Returns false in the case that [Geolocation API]{@link https://developer.mozilla.org/docs/Web/API/Geolocation} (or compatible one as [Apache Cordova's Geolocation plugin]{@link https://github.com/apache/cordova-plugin-geolocation}) is not supported. In the case that we want to start getting the current position (&quot;callbackOkOrId&quot; is a function), it will return the watch ID that has been created. In the case that we want to stop getting the position (&quot;callbackOkOrId&quot; is a watch ID), it will return undefined.</p>"}],"name":"getConstantly","longname":"CB_Device.Location.getConstantly","memberof":"CB_Device.Location","scope":"static"},{"comment":"/**\r\n\t * Stops getting the current position constantly (real-time) every time it changes. Uses the [Geolocation API]{@link https://developer.mozilla.org/docs/Web/API/Geolocation} (or compatible one as [Apache Cordova's Geolocation plugin]{@link https://github.com/apache/cordova-plugin-geolocation}).\r\n\t * @function\r\n\t * @param {integer} [id={@link CB_Device.Location.getConstantly_lastId}] - The watch ID that we want to stop. Following the same rules as the first parameter of the native [clearWatch]{@link https://developer.mozilla.org/docs/Web/API/Geolocation/clearWatch} function.\r\n\t * @param {boolean} [keepOldCallbackOk=false] - If it is set to false, it will not remove the current \"callbackOk\" (if any) which was/were set previously.\r\n\t * @param {boolean} [keepOldCallbackError=false] - If it is set to false, it will remove the current \"callbackError\" (if any) which was/were set previously.\r\n\t * @param {boolean} [keepOldOptions=false] - If it is set to false, it will remove the current \"options\" (if any) which were set previously.\r\n\t * @returns {undefined|false} Returns false in the case that [Geolocation API]{@link https://developer.mozilla.org/docs/Web/API/Geolocation} (or compatible one as [Apache Cordova's Geolocation plugin]{@link https://github.com/apache/cordova-plugin-geolocation}) is not supported or undefined otherwise.\r\n\t */","meta":{"range":[19585,20349],"filename":"CB_Device.js","lineno":341,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\device","code":{"id":"astnode100059309","name":"CB_Device.Location.getConstantlyDisable","type":"FunctionExpression","paramnames":["id","keepOldCallbackOk","keepOldCallbackError","keepOldOptions"]},"vars":{"id":"CB_Device.Location.getConstantlyDisable~id","CB_Device.Location.getConstantly_callbackOk":"CB_Device.Location.getConstantly_callbackOk","CB_Device.Location.getConstantly_callbackError":"CB_Device.Location.getConstantly_callbackError","CB_Device.Location.getConstantly_options":"CB_Device.Location.getConstantly_options"}},"description":"<p>Stops getting the current position constantly (real-time) every time it changes. Uses the [Geolocation API]{@link https://developer.mozilla.org/docs/Web/API/Geolocation} (or compatible one as [Apache Cordova's Geolocation plugin]{@link https://github.com/apache/cordova-plugin-geolocation}).</p>","kind":"function","params":[{"type":{"names":["integer"]},"optional":true,"defaultvalue":"{@link CB_Device.Location.getConstantly_lastId}","description":"<p>The watch ID that we want to stop. Following the same rules as the first parameter of the native [clearWatch]{@link https://developer.mozilla.org/docs/Web/API/Geolocation/clearWatch} function.</p>","name":"id"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If it is set to false, it will not remove the current &quot;callbackOk&quot; (if any) which was/were set previously.</p>","name":"keepOldCallbackOk"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If it is set to false, it will remove the current &quot;callbackError&quot; (if any) which was/were set previously.</p>","name":"keepOldCallbackError"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If it is set to false, it will remove the current &quot;options&quot; (if any) which were set previously.</p>","name":"keepOldOptions"}],"returns":[{"type":{"names":["undefined","false"]},"description":"<p>Returns false in the case that [Geolocation API]{@link https://developer.mozilla.org/docs/Web/API/Geolocation} (or compatible one as [Apache Cordova's Geolocation plugin]{@link https://github.com/apache/cordova-plugin-geolocation}) is not supported or undefined otherwise.</p>"}],"name":"getConstantlyDisable","longname":"CB_Device.Location.getConstantlyDisable","memberof":"CB_Device.Location","scope":"static"},{"comment":"/**\r\n\t * Keeps or stops keeping the application getting the position, even when the application is invisible or screen is locked, by using [requestWakeLock]{@link https://developer.mozilla.org/docs/Web/API/Navigator/requestWakeLock} (so far, only works in Firefox/Firefox OS).\r\n\t * @function\r\n\t * @param {boolean} [keepAwake=true] - Defines whether we want to keep it awake or stop doing it.\r\n\t * @param {Object} [lock={@link CB_Device.Location.keepAwake_locationLockGPS}] - The \"WakeLock\" ([MozWakeLock]{@link https://developer.mozilla.org/docs/Web/API/MozWakeLock}) object that we want to unlock. It will be used only when \"keepAwake\" is set to false.\r\n\t * @returns {undefined|Object|false} Returns false in the case that \"WakeLock\" ([MozWakeLock]{@link https://developer.mozilla.org/docs/Web/API/MozWakeLock}) is not supported or something went wrong. Returns the \"WakeLock\" ([MozWakeLock]{@link https://developer.mozilla.org/docs/Web/API/MozWakeLock}) object in the case that we wanted to keep it awake (\"keepAwake\" is set to true). Returns undefined in the case that we do not want it to keep it awake (\"keepAwake\" is set to false and the lock is a valid \"WakeLock\" object).\r\n\t */","meta":{"range":[21549,22594],"filename":"CB_Device.js","lineno":359,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\device","code":{"id":"astnode100059378","name":"CB_Device.Location.keepAwake","type":"FunctionExpression","paramnames":["keepAwake","lock"]},"vars":{"keepAwake":"CB_Device.Location.keepAwake~keepAwake","CB_Device.Location.keepAwake_locationLockGPS":"CB_Device.Location.keepAwake_locationLockGPS","lock":"CB_Device.Location.keepAwake~lock"}},"description":"<p>Keeps or stops keeping the application getting the position, even when the application is invisible or screen is locked, by using [requestWakeLock]{@link https://developer.mozilla.org/docs/Web/API/Navigator/requestWakeLock} (so far, only works in Firefox/Firefox OS).</p>","kind":"function","params":[{"type":{"names":["boolean"]},"optional":true,"defaultvalue":true,"description":"<p>Defines whether we want to keep it awake or stop doing it.</p>","name":"keepAwake"},{"type":{"names":["Object"]},"optional":true,"defaultvalue":"{@link CB_Device.Location.keepAwake_locationLockGPS}","description":"<p>The &quot;WakeLock&quot; ([MozWakeLock]{@link https://developer.mozilla.org/docs/Web/API/MozWakeLock}) object that we want to unlock. It will be used only when &quot;keepAwake&quot; is set to false.</p>","name":"lock"}],"returns":[{"type":{"names":["undefined","Object","false"]},"description":"<p>Returns false in the case that &quot;WakeLock&quot; ([MozWakeLock]{@link https://developer.mozilla.org/docs/Web/API/MozWakeLock}) is not supported or something went wrong. Returns the &quot;WakeLock&quot; ([MozWakeLock]{@link https://developer.mozilla.org/docs/Web/API/MozWakeLock}) object in the case that we wanted to keep it awake (&quot;keepAwake&quot; is set to true). Returns undefined in the case that we do not want it to keep it awake (&quot;keepAwake&quot; is set to false and the lock is a valid &quot;WakeLock&quot; object).</p>"}],"name":"keepAwake","longname":"CB_Device.Location.keepAwake","memberof":"CB_Device.Location","scope":"static"},{"comment":"/**\r\n * Static class to manage the device's orientation. It will return itself if it is tried to be instantiated.\r\n * @namespace\r\n * @todo Normalize more differences between web clients.\r\n */","meta":{"range":[22844,22912],"filename":"CB_Device.js","lineno":393,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\device","code":{"id":"astnode100059495","name":"CB_Device.Orientation","type":"FunctionExpression","paramnames":[]}},"description":"<p>Static class to manage the device's orientation. It will return itself if it is tried to be instantiated.</p>","kind":"namespace","todo":["Normalize more differences between web clients."],"name":"Orientation","longname":"CB_Device.Orientation","memberof":"CB_Device","scope":"static"},{"comment":"/**\r\n\t * Tells whether the [Device Orientation Event]{@link https://developer.mozilla.org/docs/Web/API/DeviceOrientationEvent} (used by the [Device Orientation API]{@link https://developer.mozilla.org/docs/Web/API/Detecting_device_orientation} or compatible one) is supported or not.\r\n\t * @function\r\n\t * @returns {boolean}\r\n\t * @todo Think about using the \"ondeviceorientationabsolute\" event.\r\n\t */","meta":{"range":[23750,23887],"filename":"CB_Device.js","lineno":411,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\device","code":{"id":"astnode100059515","name":"CB_Device.Orientation.isSupported","type":"FunctionExpression","paramnames":[]}},"description":"<p>Tells whether the [Device Orientation Event]{@link https://developer.mozilla.org/docs/Web/API/DeviceOrientationEvent} (used by the [Device Orientation API]{@link https://developer.mozilla.org/docs/Web/API/Detecting_device_orientation} or compatible one) is supported or not.</p>","kind":"function","returns":[{"type":{"names":["boolean"]}}],"todo":["Think about using the \"ondeviceorientationabsolute\" event."],"name":"isSupported","longname":"CB_Device.Orientation.isSupported","memberof":"CB_Device.Orientation","scope":"static"},{"comment":"/**\r\n\t * Tells whether the [MozOrientation API]{@link https://developer.mozilla.org/docs/Web/Events/MozOrientation} is supported or not.\r\n\t * @function\r\n\t * @returns {boolean}\r\n\t */","meta":{"range":[24081,24189],"filename":"CB_Device.js","lineno":422,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\device","code":{"id":"astnode100059532","name":"CB_Device.Orientation.isMozOrientationSupported","type":"FunctionExpression","paramnames":[]}},"description":"<p>Tells whether the [MozOrientation API]{@link https://developer.mozilla.org/docs/Web/Events/MozOrientation} is supported or not.</p>","kind":"function","returns":[{"type":{"names":["boolean"]}}],"name":"isMozOrientationSupported","longname":"CB_Device.Orientation.isMozOrientationSupported","memberof":"CB_Device.Orientation","scope":"static"},{"comment":"/**\r\n\t * Sets a function to execute for the [Device Orientation Event]{@link https://developer.mozilla.org/docs/Web/API/DeviceOrientationEvent} (used by the [Device Orientation API]{@link https://developer.mozilla.org/docs/Web/API/Detecting_device_orientation} or compatible one) or removes it. Falls back to the [MozOrientation API]{@link https://developer.mozilla.org/docs/Web/Events/MozOrientation} if possible.\r\n\t * @function\r\n\t * @param {function|null} eventFunction - The function that will be called when the event is fired. The event object received will already be normalized by the {@link CB_Device.Orientation.normalizeEvent} function automatically. Following the same rules as in {@link https://developer.mozilla.org/docs/Web/API/DeviceOrientationEvent}. If a null value is used, the event will be removed.\r\n\t * @param {boolean} [keepOldFunction=true] - Defines whether we want to keep any possible previous event listener or not.\r\n\t * @param {float} [useCapture=false] - Defines whether the event we want to add will use capture or not. This parameter will be effective only if the current client supports the [addEventListener]{@link https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener} method and will be used as its third parameter.\r\n\t * @returns {undefined|false} Returns false in the case that neither the [Device Orientation API]{@link https://developer.mozilla.org/docs/Web/API/Detecting_device_orientation} (or compatible one) nor the [MozOrientation API]{@link https://developer.mozilla.org/docs/Web/Events/MozOrientation} are supported or undefined otherwise.\r\n\t * @todo Think about using the \"deviceorientationabsolute\" event.\r\n\t */","meta":{"range":[25889,26366],"filename":"CB_Device.js","lineno":437,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\device","code":{"id":"astnode100059545","name":"CB_Device.Orientation.onChange","type":"FunctionExpression","paramnames":["eventFunction","keepOldFunction","useCapture"]}},"description":"<p>Sets a function to execute for the [Device Orientation Event]{@link https://developer.mozilla.org/docs/Web/API/DeviceOrientationEvent} (used by the [Device Orientation API]{@link https://developer.mozilla.org/docs/Web/API/Detecting_device_orientation} or compatible one) or removes it. Falls back to the [MozOrientation API]{@link https://developer.mozilla.org/docs/Web/Events/MozOrientation} if possible.</p>","kind":"function","params":[{"type":{"names":["function","null"]},"description":"<p>The function that will be called when the event is fired. The event object received will already be normalized by the {@link CB_Device.Orientation.normalizeEvent} function automatically. Following the same rules as in {@link https://developer.mozilla.org/docs/Web/API/DeviceOrientationEvent}. If a null value is used, the event will be removed.</p>","name":"eventFunction"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":true,"description":"<p>Defines whether we want to keep any possible previous event listener or not.</p>","name":"keepOldFunction"},{"type":{"names":["float"]},"optional":true,"defaultvalue":false,"description":"<p>Defines whether the event we want to add will use capture or not. This parameter will be effective only if the current client supports the [addEventListener]{@link https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener} method and will be used as its third parameter.</p>","name":"useCapture"}],"returns":[{"type":{"names":["undefined","false"]},"description":"<p>Returns false in the case that neither the [Device Orientation API]{@link https://developer.mozilla.org/docs/Web/API/Detecting_device_orientation} (or compatible one) nor the [MozOrientation API]{@link https://developer.mozilla.org/docs/Web/Events/MozOrientation} are supported or undefined otherwise.</p>"}],"todo":["Think about using the \"deviceorientationabsolute\" event."],"name":"onChange","longname":"CB_Device.Orientation.onChange","memberof":"CB_Device.Orientation","scope":"static"},{"comment":"/**\r\n\t * Normalizes the data gotten from the [Device Orientation Event]{@link https://developer.mozilla.org/docs/Web/API/DeviceOrientationEvent} produced by different clients to try to match the [Device Orientation API]{@link https://developer.mozilla.org/docs/Web/API/Detecting_device_orientation} and follow always the same rules as much as possible.\r\n\t * @function\r\n\t * @param {Event} e - The event object that we want to normalize.\r\n\t * @param {('deviceorientation'|'MozOrientation')} eventName - The name of the event that we want to normalize. Case sensitive.\r\n\t * @returns {Event} Returns the given event object again but normalized (if possible).\r\n\t * @todo Think about using the \"deviceorientationabsolute\" event.\r\n\t * @todo Normalize more differences between web clients.\r\n\t */","meta":{"range":[27675,28481],"filename":"CB_Device.js","lineno":476,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\device","code":{"id":"astnode100059655","name":"CB_Device.Orientation.normalizeEvent","type":"FunctionExpression","paramnames":["e","eventName"]},"vars":{"e":"CB_Device.Orientation.normalizeEvent~e","e.alpha":"CB_Device.Orientation.normalizeEvent~e.alpha","e.gamma":"CB_Device.Orientation.normalizeEvent~e.gamma","e.beta":"CB_Device.Orientation.normalizeEvent~e.beta"}},"description":"<p>Normalizes the data gotten from the [Device Orientation Event]{@link https://developer.mozilla.org/docs/Web/API/DeviceOrientationEvent} produced by different clients to try to match the [Device Orientation API]{@link https://developer.mozilla.org/docs/Web/API/Detecting_device_orientation} and follow always the same rules as much as possible.</p>","kind":"function","params":[{"type":{"names":["Event"]},"description":"<p>The event object that we want to normalize.</p>","name":"e"},{"type":{"names":["'deviceorientation'","'MozOrientation'"]},"description":"<p>The name of the event that we want to normalize. Case sensitive.</p>","name":"eventName"}],"returns":[{"type":{"names":["Event"]},"description":"<p>Returns the given event object again but normalized (if possible).</p>"}],"todo":["Think about using the \"deviceorientationabsolute\" event.","Normalize more differences between web clients."],"name":"normalizeEvent","longname":"CB_Device.Orientation.normalizeEvent","memberof":"CB_Device.Orientation","scope":"static"},{"comment":"/**\r\n\t * Tells whether the [Compass Needs Calibration Event]{@link https://w3c.github.io/deviceorientation/spec-source-orientation.html#compassneedscalibration} (used by the [Device Orientation API]{@link https://developer.mozilla.org/docs/Web/API/Detecting_device_orientation} or compatible one) is supported or not.\r\n\t * @function\r\n\t * @returns {boolean}\r\n\t */","meta":{"range":[28857,29096],"filename":"CB_Device.js","lineno":504,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\device","code":{"id":"astnode100059750","name":"CB_Device.Orientation.isCompassNeedsCalibrationSupported","type":"FunctionExpression","paramnames":[]}},"description":"<p>Tells whether the [Compass Needs Calibration Event]{@link https://w3c.github.io/deviceorientation/spec-source-orientation.html#compassneedscalibration} (used by the [Device Orientation API]{@link https://developer.mozilla.org/docs/Web/API/Detecting_device_orientation} or compatible one) is supported or not.</p>","kind":"function","returns":[{"type":{"names":["boolean"]}}],"name":"isCompassNeedsCalibrationSupported","longname":"CB_Device.Orientation.isCompassNeedsCalibrationSupported","memberof":"CB_Device.Orientation","scope":"static"},{"comment":"/**\r\n\t * Sets a function to execute for the [Compass Needs Calibration Event]{@link https://w3c.github.io/deviceorientation/spec-source-orientation.html#compassneedscalibration} (used by the [Device Orientation API]{@link https://developer.mozilla.org/docs/Web/API/Detecting_device_orientation} or compatible one) or removes it.\r\n\t * @function\r\n\t * @param {function|null} eventFunction - The function that will be called when the event is fired. Following the same rules as in {@link https://w3c.github.io/deviceorientation/spec-source-orientation.html#compassneedscalibration}. If a null value is used, the event will be removed.\r\n\t * @param {boolean} [keepOldFunction=true] - Defines whether we want to keep any possible previous event listener or not.\r\n\t * @param {float} [useCapture=false] - Defines whether the event we want to add will use capture or not. This parameter will be effective only if the current client supports the [addEventListener]{@link https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener} method and will be used as its third parameter.\r\n\t * @returns {undefined|false} Returns false in the case that the [Compass Needs Calibration Event]{@link https://w3c.github.io/deviceorientation/spec-source-orientation.html#compassneedscalibration} is not supported or undefined otherwise.\r\n\t */","meta":{"range":[30446,30752],"filename":"CB_Device.js","lineno":518,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\device","code":{"id":"astnode100059767","name":"CB_Device.Orientation.onCompassNeedsCalibration","type":"FunctionExpression","paramnames":["eventFunction","keepOldFunction","useCapture"]}},"description":"<p>Sets a function to execute for the [Compass Needs Calibration Event]{@link https://w3c.github.io/deviceorientation/spec-source-orientation.html#compassneedscalibration} (used by the [Device Orientation API]{@link https://developer.mozilla.org/docs/Web/API/Detecting_device_orientation} or compatible one) or removes it.</p>","kind":"function","params":[{"type":{"names":["function","null"]},"description":"<p>The function that will be called when the event is fired. Following the same rules as in {@link https://w3c.github.io/deviceorientation/spec-source-orientation.html#compassneedscalibration}. If a null value is used, the event will be removed.</p>","name":"eventFunction"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":true,"description":"<p>Defines whether we want to keep any possible previous event listener or not.</p>","name":"keepOldFunction"},{"type":{"names":["float"]},"optional":true,"defaultvalue":false,"description":"<p>Defines whether the event we want to add will use capture or not. This parameter will be effective only if the current client supports the [addEventListener]{@link https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener} method and will be used as its third parameter.</p>","name":"useCapture"}],"returns":[{"type":{"names":["undefined","false"]},"description":"<p>Returns false in the case that the [Compass Needs Calibration Event]{@link https://w3c.github.io/deviceorientation/spec-source-orientation.html#compassneedscalibration} is not supported or undefined otherwise.</p>"}],"name":"onCompassNeedsCalibration","longname":"CB_Device.Orientation.onCompassNeedsCalibration","memberof":"CB_Device.Orientation","scope":"static"},{"comment":"/**\r\n\t * Tells whether the [Apache Cordova's Device Orientation plugin]{@link https://github.com/apache/cordova-plugin-device-orientation} is available or not.\r\n\t * @function\r\n\t * @returns {boolean}\r\n\t */","meta":{"range":[30970,31234],"filename":"CB_Device.js","lineno":530,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\device","code":{"id":"astnode100059800","name":"CB_Device.Orientation.cordova_isCompassSupported","type":"FunctionExpression","paramnames":[]}},"description":"<p>Tells whether the [Apache Cordova's Device Orientation plugin]{@link https://github.com/apache/cordova-plugin-device-orientation} is available or not.</p>","kind":"function","returns":[{"type":{"names":["boolean"]}}],"name":"cordova_isCompassSupported","longname":"CB_Device.Orientation.cordova_isCompassSupported","memberof":"CB_Device.Orientation","scope":"static"},{"comment":"/**\r\n\t * Gets the compass heading using the [Apache Cordova's Device Orientation plugin]{@link https://github.com/apache/cordova-plugin-device-orientation}. Uses \"navigator.compass.getCurrentHeading\" internally.\r\n\t * @function\r\n\t * @param {function} callbackOk - The function that will be called when it succeeds getting the compass heading. Following the same rules as in {@link https://github.com/apache/cordova-plugin-device-orientation} (\"navigator.compass.getCurrentHeading\" function).\r\n\t * @param {function} callbackError - The function that will be called if there is any error getting the compass heading. Following the same rules as in {@link https://github.com/apache/cordova-plugin-device-orientation} (\"navigator.compass.getCurrentHeading\" function).\r\n\t * @returns {undefined|false} Returns false in the case that the [Apache Cordova's Device Orientation plugin]{@link https://github.com/apache/cordova-plugin-device-orientation} is not supported or undefined otherwise.\r\n\t * @todo Add a function to normalize the event and call it automatically.\r\n\t */","meta":{"range":[32315,32546],"filename":"CB_Device.js","lineno":544,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\device","code":{"id":"astnode100059840","name":"CB_Device.Orientation.cordova_getCompass","type":"FunctionExpression","paramnames":["callbackOk","callbackError"]}},"description":"<p>Gets the compass heading using the [Apache Cordova's Device Orientation plugin]{@link https://github.com/apache/cordova-plugin-device-orientation}. Uses &quot;navigator.compass.getCurrentHeading&quot; internally.</p>","kind":"function","params":[{"type":{"names":["function"]},"description":"<p>The function that will be called when it succeeds getting the compass heading. Following the same rules as in {@link https://github.com/apache/cordova-plugin-device-orientation} (&quot;navigator.compass.getCurrentHeading&quot; function).</p>","name":"callbackOk"},{"type":{"names":["function"]},"description":"<p>The function that will be called if there is any error getting the compass heading. Following the same rules as in {@link https://github.com/apache/cordova-plugin-device-orientation} (&quot;navigator.compass.getCurrentHeading&quot; function).</p>","name":"callbackError"}],"returns":[{"type":{"names":["undefined","false"]},"description":"<p>Returns false in the case that the [Apache Cordova's Device Orientation plugin]{@link https://github.com/apache/cordova-plugin-device-orientation} is not supported or undefined otherwise.</p>"}],"todo":["Add a function to normalize the event and call it automatically."],"name":"cordova_getCompass","longname":"CB_Device.Orientation.cordova_getCompass","memberof":"CB_Device.Orientation","scope":"static"},{"comment":"/**\r\n\t * Starts or stops getting the compass heading constantly at a regular interval. Uses the [Apache Cordova's Device Orientation plugin]{@link https://github.com/apache/cordova-plugin-device-orientation} (\"navigator.compass.watchHeading\" and \"navigator.compass.clearWatch\" functions).\r\n\t * @function\r\n\t * @param {function|integer} [callbackOkOrId={@link CB_Device.Orientation.cordova_getCompassConstantly_lastId}] - In the case that we want to start getting the compass heading, use a function callback that will be called regularly when the compass heading is gotten successfully (using the \"navigator.compass.watchHeading\" function). To stop getting the compass heading, use the watch ID that we want to stop (using the \"navigator.compass.clearWatch\" function). Following the same rules as the first parameter of the \"navigator.compass.watchHeading\" function (when we want to start watching) or the first parameter of \"navigator.compass.clearWatch\" function (when we want to stop watching) described in {@link https://github.com/apache/cordova-plugin-device-orientation}.\r\n\t * @param {function} [callbackError] - Callback that will be called if there is any error getting the compass heading. Only used when we want to start getting the compass heading (\"callbackOkOrId\" is a function). Following the same rules as the second parameter of the \"navigator.compass.watchHeading\" function described in {@link https://github.com/apache/cordova-plugin-device-orientation}.\r\n\t * @param {Object} [options] - Object that represents the desired options. Only used when we want to start getting the compass heading (\"callbackOkOrId\" is a function). Following the same rules as the third parameter of the \"navigator.compass.watchHeading\" function described in {@link https://github.com/apache/cordova-plugin-device-orientation}.\r\n\t * @returns {integer|undefined|false} Returns false in the case that [Apache Cordova's Device Orientation plugin]{@link https://github.com/apache/cordova-plugin-device-orientation} is not supported. In the case that we want to start getting the compass heading (\"callbackOkOrId\" is a function), it will return the watch ID that has been created. In the case that we want to stop getting the compass heading (\"callbackOkOrId\" is a watch ID), it will return undefined.\r\n\t * @todo Add a function to normalize the event and call it automatically.\r\n\t * @todo Add parameters to keep old callbacks and options.\r\n\t */","meta":{"range":[34997,36100],"filename":"CB_Device.js","lineno":561,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\device","code":{"id":"astnode100059871","name":"CB_Device.Orientation.cordova_getCompassConstantly","type":"FunctionExpression","paramnames":["callbackOkOrId","callbackError","options"]},"vars":{"CB_Device.Orientation.cordova_getCompassConstantly_lastId":"CB_Device.Orientation.cordova_getCompassConstantly_lastId","callbackOkOrId":"CB_Device.Orientation.cordova_getCompassConstantly~callbackOkOrId"}},"description":"<p>Starts or stops getting the compass heading constantly at a regular interval. Uses the [Apache Cordova's Device Orientation plugin]{@link https://github.com/apache/cordova-plugin-device-orientation} (&quot;navigator.compass.watchHeading&quot; and &quot;navigator.compass.clearWatch&quot; functions).</p>","kind":"function","params":[{"type":{"names":["function","integer"]},"optional":true,"defaultvalue":"{@link CB_Device.Orientation.cordova_getCompassConstantly_lastId}","description":"<p>In the case that we want to start getting the compass heading, use a function callback that will be called regularly when the compass heading is gotten successfully (using the &quot;navigator.compass.watchHeading&quot; function). To stop getting the compass heading, use the watch ID that we want to stop (using the &quot;navigator.compass.clearWatch&quot; function). Following the same rules as the first parameter of the &quot;navigator.compass.watchHeading&quot; function (when we want to start watching) or the first parameter of &quot;navigator.compass.clearWatch&quot; function (when we want to stop watching) described in {@link https://github.com/apache/cordova-plugin-device-orientation}.</p>","name":"callbackOkOrId"},{"type":{"names":["function"]},"optional":true,"description":"<p>Callback that will be called if there is any error getting the compass heading. Only used when we want to start getting the compass heading (&quot;callbackOkOrId&quot; is a function). Following the same rules as the second parameter of the &quot;navigator.compass.watchHeading&quot; function described in {@link https://github.com/apache/cordova-plugin-device-orientation}.</p>","name":"callbackError"},{"type":{"names":["Object"]},"optional":true,"description":"<p>Object that represents the desired options. Only used when we want to start getting the compass heading (&quot;callbackOkOrId&quot; is a function). Following the same rules as the third parameter of the &quot;navigator.compass.watchHeading&quot; function described in {@link https://github.com/apache/cordova-plugin-device-orientation}.</p>","name":"options"}],"returns":[{"type":{"names":["integer","undefined","false"]},"description":"<p>Returns false in the case that [Apache Cordova's Device Orientation plugin]{@link https://github.com/apache/cordova-plugin-device-orientation} is not supported. In the case that we want to start getting the compass heading (&quot;callbackOkOrId&quot; is a function), it will return the watch ID that has been created. In the case that we want to stop getting the compass heading (&quot;callbackOkOrId&quot; is a watch ID), it will return undefined.</p>"}],"todo":["Add a function to normalize the event and call it automatically.","Add parameters to keep old callbacks and options."],"name":"cordova_getCompassConstantly","longname":"CB_Device.Orientation.cordova_getCompassConstantly","memberof":"CB_Device.Orientation","scope":"static"},{"comment":"/**\r\n\t * Stops getting the compass heading constantly at a regular interval. Uses the [Apache Cordova's Device Orientation plugin]{@link https://github.com/apache/cordova-plugin-device-orientation} (\"navigator.compass.clearWatch\" function).\r\n\t * @function\r\n\t * @param {integer} [id={@link CB_Device.Orientation.cordova_getCompassConstantly_lastId}] - The watch ID that we want to stop. Following the same rules as the first parameter of the \"navigator.compass.clearWatch\" function described in {@link https://github.com/apache/cordova-plugin-device-orientation}.\r\n\t * @returns {undefined|false} Returns false in the case that [Apache Cordova's Device Orientation plugin]{@link https://github.com/apache/cordova-plugin-device-orientation} is not supported or undefined otherwise.\r\n\t * @todo Add parameters to keep old callbacks and options.\r\n\t */","meta":{"range":[36959,37298],"filename":"CB_Device.js","lineno":590,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\device","code":{"id":"astnode100059953","name":"CB_Device.Orientation.cordova_getCompassConstantlyDisable","type":"FunctionExpression","paramnames":["id"]},"vars":{"id":"CB_Device.Orientation.cordova_getCompassConstantlyDisable~id"}},"description":"<p>Stops getting the compass heading constantly at a regular interval. Uses the [Apache Cordova's Device Orientation plugin]{@link https://github.com/apache/cordova-plugin-device-orientation} (&quot;navigator.compass.clearWatch&quot; function).</p>","kind":"function","params":[{"type":{"names":["integer"]},"optional":true,"defaultvalue":"{@link CB_Device.Orientation.cordova_getCompassConstantly_lastId}","description":"<p>The watch ID that we want to stop. Following the same rules as the first parameter of the &quot;navigator.compass.clearWatch&quot; function described in {@link https://github.com/apache/cordova-plugin-device-orientation}.</p>","name":"id"}],"returns":[{"type":{"names":["undefined","false"]},"description":"<p>Returns false in the case that [Apache Cordova's Device Orientation plugin]{@link https://github.com/apache/cordova-plugin-device-orientation} is not supported or undefined otherwise.</p>"}],"todo":["Add parameters to keep old callbacks and options."],"name":"cordova_getCompassConstantlyDisable","longname":"CB_Device.Orientation.cordova_getCompassConstantlyDisable","memberof":"CB_Device.Orientation","scope":"static"},{"comment":"/**\r\n * Static class to manage the device's motion. It will return itself if it is tried to be instantiated.\r\n * @namespace\r\n * @todo Normalize more differences between web clients.\r\n */","meta":{"range":[37546,37604],"filename":"CB_Device.js","lineno":604,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\device","code":{"id":"astnode100059981","name":"CB_Device.Motion","type":"FunctionExpression","paramnames":[]}},"description":"<p>Static class to manage the device's motion. It will return itself if it is tried to be instantiated.</p>","kind":"namespace","todo":["Normalize more differences between web clients."],"name":"Motion","longname":"CB_Device.Motion","memberof":"CB_Device","scope":"static"},{"comment":"/**\r\n\t * Tells whether the [Device Motion Event]{@link https://developer.mozilla.org/docs/Web/API/DeviceMotionEvent} (used by the [Device Orientation API]{@link https://developer.mozilla.org/docs/Web/API/Detecting_device_orientation} or compatible one) is supported or not.\r\n\t * @function\r\n\t * @returns {boolean}\r\n\t */","meta":{"range":[38348,38470],"filename":"CB_Device.js","lineno":621,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\device","code":{"id":"astnode100060001","name":"CB_Device.Motion.isSupported","type":"FunctionExpression","paramnames":[]}},"description":"<p>Tells whether the [Device Motion Event]{@link https://developer.mozilla.org/docs/Web/API/DeviceMotionEvent} (used by the [Device Orientation API]{@link https://developer.mozilla.org/docs/Web/API/Detecting_device_orientation} or compatible one) is supported or not.</p>","kind":"function","returns":[{"type":{"names":["boolean"]}}],"name":"isSupported","longname":"CB_Device.Motion.isSupported","memberof":"CB_Device.Motion","scope":"static"},{"comment":"/**\r\n\t * Sets a function to execute for the [Device Motion Event]{@link https://developer.mozilla.org/docs/Web/API/DeviceMotionEvent} (used by the [Device Orientation API]{@link https://developer.mozilla.org/docs/Web/API/Detecting_device_orientation} or compatible one) or removes it.\r\n\t * @function\r\n\t * @param {function|null} eventFunction - The function that will be called when the event is fired. Following the same rules as in {@link https://developer.mozilla.org/docs/Web/API/DeviceMotionEvent}. If a null value is used, the event will be removed.\r\n\t * @param {boolean} [keepOldFunction=true] - Defines whether we want to keep any possible previous event listener or not.\r\n\t * @param {float} [useCapture=false] - Defines whether the event we want to add will use capture or not. This parameter will be effective only if the current client supports the [addEventListener]{@link https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener} method and will be used as its third parameter.\r\n\t * @returns {undefined|false} Returns false in the case that the [Device Motion Event]{@link https://developer.mozilla.org/docs/Web/API/DeviceMotionEvent} is not supported or undefined otherwise.\r\n\t */","meta":{"range":[39700,39945],"filename":"CB_Device.js","lineno":635,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\device","code":{"id":"astnode100060018","name":"CB_Device.Motion.onChange","type":"FunctionExpression","paramnames":["eventFunction","keepOldFunction","useCapture"]}},"description":"<p>Sets a function to execute for the [Device Motion Event]{@link https://developer.mozilla.org/docs/Web/API/DeviceMotionEvent} (used by the [Device Orientation API]{@link https://developer.mozilla.org/docs/Web/API/Detecting_device_orientation} or compatible one) or removes it.</p>","kind":"function","params":[{"type":{"names":["function","null"]},"description":"<p>The function that will be called when the event is fired. Following the same rules as in {@link https://developer.mozilla.org/docs/Web/API/DeviceMotionEvent}. If a null value is used, the event will be removed.</p>","name":"eventFunction"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":true,"description":"<p>Defines whether we want to keep any possible previous event listener or not.</p>","name":"keepOldFunction"},{"type":{"names":["float"]},"optional":true,"defaultvalue":false,"description":"<p>Defines whether the event we want to add will use capture or not. This parameter will be effective only if the current client supports the [addEventListener]{@link https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener} method and will be used as its third parameter.</p>","name":"useCapture"}],"returns":[{"type":{"names":["undefined","false"]},"description":"<p>Returns false in the case that the [Device Motion Event]{@link https://developer.mozilla.org/docs/Web/API/DeviceMotionEvent} is not supported or undefined otherwise.</p>"}],"name":"onChange","longname":"CB_Device.Motion.onChange","memberof":"CB_Device.Motion","scope":"static"},{"comment":"/**\r\n\t * Tells whether the [Apache Cordova's Device Motion plugin]{@link https://github.com/apache/cordova-plugin-device-motion} is available or not.\r\n\t * @function\r\n\t * @returns {boolean}\r\n\t */","meta":{"range":[40151,40449],"filename":"CB_Device.js","lineno":647,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\device","code":{"id":"astnode100060051","name":"CB_Device.Motion.cordova_isAccelerationSupported","type":"FunctionExpression","paramnames":[]}},"description":"<p>Tells whether the [Apache Cordova's Device Motion plugin]{@link https://github.com/apache/cordova-plugin-device-motion} is available or not.</p>","kind":"function","returns":[{"type":{"names":["boolean"]}}],"name":"cordova_isAccelerationSupported","longname":"CB_Device.Motion.cordova_isAccelerationSupported","memberof":"CB_Device.Motion","scope":"static"},{"comment":"/**\r\n\t * Gets the acceleration using the [Apache Cordova's Device Motion plugin]{@link https://github.com/apache/cordova-plugin-device-motion}. Uses \"navigator.accelerometer.getCurrentAcceleration\" internally.\r\n\t * @function\r\n\t * @param {function} callbackOk - The function that will be called when it succeeds getting the acceleration. The event object received will already be normalized by the {@link CB_Device.Motion.cordova_getAccelerationNormalized} function automatically. Following the same rules as in {@link https://github.com/apache/cordova-plugin-device-motion} (\"navigator.accelerometer.getCurrentAcceleration\" function).\r\n\t * @param {function} callbackError - The function that will be called if there is any error getting the acceleration. Following the same rules as in {@link https://github.com/apache/cordova-plugin-device-motion} (\"navigator.accelerometer.getCurrentAcceleration\" function).\r\n\t * @returns {undefined|false} Returns false in the case that the [Apache Cordova's Device Motion plugin]{@link https://github.com/apache/cordova-plugin-device-motion} is not supported or undefined otherwise.\r\n\t */","meta":{"range":[41589,42022],"filename":"CB_Device.js","lineno":660,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\device","code":{"id":"astnode100060091","name":"CB_Device.Motion.cordova_getAcceleration","type":"FunctionExpression","paramnames":["callbackOk","callbackError"]},"vars":{"callbackOkWrapper":"CB_Device.Motion.cordova_getAcceleration~callbackOkWrapper","":null}},"description":"<p>Gets the acceleration using the [Apache Cordova's Device Motion plugin]{@link https://github.com/apache/cordova-plugin-device-motion}. Uses &quot;navigator.accelerometer.getCurrentAcceleration&quot; internally.</p>","kind":"function","params":[{"type":{"names":["function"]},"description":"<p>The function that will be called when it succeeds getting the acceleration. The event object received will already be normalized by the {@link CB_Device.Motion.cordova_getAccelerationNormalized} function automatically. Following the same rules as in {@link https://github.com/apache/cordova-plugin-device-motion} (&quot;navigator.accelerometer.getCurrentAcceleration&quot; function).</p>","name":"callbackOk"},{"type":{"names":["function"]},"description":"<p>The function that will be called if there is any error getting the acceleration. Following the same rules as in {@link https://github.com/apache/cordova-plugin-device-motion} (&quot;navigator.accelerometer.getCurrentAcceleration&quot; function).</p>","name":"callbackError"}],"returns":[{"type":{"names":["undefined","false"]},"description":"<p>Returns false in the case that the [Apache Cordova's Device Motion plugin]{@link https://github.com/apache/cordova-plugin-device-motion} is not supported or undefined otherwise.</p>"}],"name":"cordova_getAcceleration","longname":"CB_Device.Motion.cordova_getAcceleration","memberof":"CB_Device.Motion","scope":"static"},{"comment":"/**\r\n\t * Starts or stops getting the acceleration constantly at a regular interval. Uses the [Apache Cordova's Device Motion plugin]{@link https://github.com/apache/cordova-plugin-device-motion} (\"navigator.accelerometer.watchAcceleration\" and \"navigator.accelerometer.clearWatch\" functions).\r\n\t * @function\r\n\t * @param {function|integer} [callbackOkOrId={@link CB_Device.Motion.cordova_getAccelerationConstantly_lastId}] - In the case that we want to start getting the acceleration, use a function callback that will be called regularly when the acceleration is gotten successfully (using the \"navigator.accelerometer.watchAcceleration\" function) and the event object received will already be normalized by the {@link CB_Device.Motion.cordova_getAccelerationNormalized} function automatically. To stop getting the acceleration, use the watch ID that we want to stop (using the \"navigator.accelerometer.clearWatch\" function). Following the same rules as the first parameter of the \"navigator.accelerometer.watchAcceleration\" function (when we want to start watching) or the first parameter of \"navigator.accelerometer.clearWatch\" function (when we want to stop watching) described in {@link https://github.com/apache/cordova-plugin-device-motion}.\r\n\t * @param {function} [callbackError] - Callback that will be called if there is any error getting the acceleration. Only used when we want to start getting the acceleration (\"callbackOkOrId\" is a function). Following the same rules as the second parameter of the \"navigator.accelerometer.watchAcceleration\" function described in {@link https://github.com/apache/cordova-plugin-device-motion}.\r\n\t * @param {Object} [options] - Object that represents the desired options. Only used when we want to start getting the acceleration (\"callbackOkOrId\" is a function). Following the same rules as the third parameter of the \"navigator.accelerometer.watchAcceleration\" function described in {@link https://github.com/apache/cordova-plugin-device-motion}.\r\n\t * @returns {integer|undefined|false} Returns false in the case that [Apache Cordova's Device Motion plugin]{@link https://github.com/apache/cordova-plugin-device-motion} is not supported. In the case that we want to start getting the acceleration (\"callbackOkOrId\" is a function), it will return the watch ID that has been created. In the case that we want to stop getting the acceleration (\"callbackOkOrId\" is a watch ID), it will return undefined.\r\n\t * @todo Add parameters to keep old callbacks and options.\r\n\t */","meta":{"range":[44553,45855],"filename":"CB_Device.js","lineno":677,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\device","code":{"id":"astnode100060148","name":"CB_Device.Motion.cordova_getAccelerationConstantly","type":"FunctionExpression","paramnames":["callbackOkOrId","callbackError","options"]},"vars":{"callbackOkOrIdWrapper":"CB_Device.Motion.cordova_getAccelerationConstantly~callbackOkOrIdWrapper","":null,"CB_Device.Motion.cordova_getAccelerationConstantly_lastId":"CB_Device.Motion.cordova_getAccelerationConstantly_lastId","callbackOkOrId":"CB_Device.Motion.cordova_getAccelerationConstantly~callbackOkOrId"}},"description":"<p>Starts or stops getting the acceleration constantly at a regular interval. Uses the [Apache Cordova's Device Motion plugin]{@link https://github.com/apache/cordova-plugin-device-motion} (&quot;navigator.accelerometer.watchAcceleration&quot; and &quot;navigator.accelerometer.clearWatch&quot; functions).</p>","kind":"function","params":[{"type":{"names":["function","integer"]},"optional":true,"defaultvalue":"{@link CB_Device.Motion.cordova_getAccelerationConstantly_lastId}","description":"<p>In the case that we want to start getting the acceleration, use a function callback that will be called regularly when the acceleration is gotten successfully (using the &quot;navigator.accelerometer.watchAcceleration&quot; function) and the event object received will already be normalized by the {@link CB_Device.Motion.cordova_getAccelerationNormalized} function automatically. To stop getting the acceleration, use the watch ID that we want to stop (using the &quot;navigator.accelerometer.clearWatch&quot; function). Following the same rules as the first parameter of the &quot;navigator.accelerometer.watchAcceleration&quot; function (when we want to start watching) or the first parameter of &quot;navigator.accelerometer.clearWatch&quot; function (when we want to stop watching) described in {@link https://github.com/apache/cordova-plugin-device-motion}.</p>","name":"callbackOkOrId"},{"type":{"names":["function"]},"optional":true,"description":"<p>Callback that will be called if there is any error getting the acceleration. Only used when we want to start getting the acceleration (&quot;callbackOkOrId&quot; is a function). Following the same rules as the second parameter of the &quot;navigator.accelerometer.watchAcceleration&quot; function described in {@link https://github.com/apache/cordova-plugin-device-motion}.</p>","name":"callbackError"},{"type":{"names":["Object"]},"optional":true,"description":"<p>Object that represents the desired options. Only used when we want to start getting the acceleration (&quot;callbackOkOrId&quot; is a function). Following the same rules as the third parameter of the &quot;navigator.accelerometer.watchAcceleration&quot; function described in {@link https://github.com/apache/cordova-plugin-device-motion}.</p>","name":"options"}],"returns":[{"type":{"names":["integer","undefined","false"]},"description":"<p>Returns false in the case that [Apache Cordova's Device Motion plugin]{@link https://github.com/apache/cordova-plugin-device-motion} is not supported. In the case that we want to start getting the acceleration (&quot;callbackOkOrId&quot; is a function), it will return the watch ID that has been created. In the case that we want to stop getting the acceleration (&quot;callbackOkOrId&quot; is a watch ID), it will return undefined.</p>"}],"todo":["Add parameters to keep old callbacks and options."],"name":"cordova_getAccelerationConstantly","longname":"CB_Device.Motion.cordova_getAccelerationConstantly","memberof":"CB_Device.Motion","scope":"static"},{"comment":"/**\r\n\t * Stops getting the acceleration constantly at a regular interval. Uses the [Apache Cordova's Device Motion plugin]{@link https://github.com/apache/cordova-plugin-device-motion} (\"navigator.accelerometer.clearWatch\" function).\r\n\t * @function\r\n\t * @param {integer} [id={@link CB_Device.Motion.cordova_getAccelerationConstantly_lastId}] - The watch ID that we want to stop. Following the same rules as the first parameter of the \"navigator.accelerometer.clearWatch\" function described in {@link https://github.com/apache/cordova-plugin-device-motion}.\r\n\t * @returns {undefined|false} Returns false in the case that [Apache Cordova's Device Motion plugin]{@link https://github.com/apache/cordova-plugin-device-motion} is not supported or undefined otherwise.\r\n\t * @todo Add parameters to keep old callbacks and options.\r\n\t */","meta":{"range":[46698,47037],"filename":"CB_Device.js","lineno":707,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\device","code":{"id":"astnode100060256","name":"CB_Device.Motion.cordova_getAccelerationConstantlyDisable","type":"FunctionExpression","paramnames":["id"]},"vars":{"id":"CB_Device.Motion.cordova_getAccelerationConstantlyDisable~id"}},"description":"<p>Stops getting the acceleration constantly at a regular interval. Uses the [Apache Cordova's Device Motion plugin]{@link https://github.com/apache/cordova-plugin-device-motion} (&quot;navigator.accelerometer.clearWatch&quot; function).</p>","kind":"function","params":[{"type":{"names":["integer"]},"optional":true,"defaultvalue":"{@link CB_Device.Motion.cordova_getAccelerationConstantly_lastId}","description":"<p>The watch ID that we want to stop. Following the same rules as the first parameter of the &quot;navigator.accelerometer.clearWatch&quot; function described in {@link https://github.com/apache/cordova-plugin-device-motion}.</p>","name":"id"}],"returns":[{"type":{"names":["undefined","false"]},"description":"<p>Returns false in the case that [Apache Cordova's Device Motion plugin]{@link https://github.com/apache/cordova-plugin-device-motion} is not supported or undefined otherwise.</p>"}],"todo":["Add parameters to keep old callbacks and options."],"name":"cordova_getAccelerationConstantlyDisable","longname":"CB_Device.Motion.cordova_getAccelerationConstantlyDisable","memberof":"CB_Device.Motion","scope":"static"},{"comment":"/**\r\n\t * Normalizes the data gotten from the [Apache Cordova's Device Motion plugin]{@link https://github.com/apache/cordova-plugin-device-motion} to try to match the [Device Motion Event]{@link https://developer.mozilla.org/docs/Web/API/DeviceMotionEvent} and follow always the same rules as much as possible.\r\n\t * @function\r\n\t * @param {Object} accelerometerData - The acceleration object that we want to normalize.\r\n\t * @returns {Event} Returns the given acceleration object again but normalized (if possible).\r\n\t * @todo Normalize the values without gravity too (accelerometerData.acceleration.x, accelerometerData.acceleration.y, accelerometerData.acceleration.z) if possible (needs gyroscope probably) and maybe more properties.\r\n\t */","meta":{"range":[47793,48821],"filename":"CB_Device.js","lineno":721,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\device","code":{"id":"astnode100060284","name":"CB_Device.Motion.cordova_getAccelerationNormalized","type":"FunctionExpression","paramnames":["accelerometerData"]},"vars":{"accelerometerData.accelerationIncludingGravity":"accelerometerData.accelerationIncludingGravity","accelerometerData.accelerationIncludingGravity.x":"accelerometerData.accelerationIncludingGravity.x","accelerometerData.accelerationIncludingGravity.y":"accelerometerData.accelerationIncludingGravity.y","accelerometerData.accelerationIncludingGravity.z":"accelerometerData.accelerationIncludingGravity.z"}},"description":"<p>Normalizes the data gotten from the [Apache Cordova's Device Motion plugin]{@link https://github.com/apache/cordova-plugin-device-motion} to try to match the [Device Motion Event]{@link https://developer.mozilla.org/docs/Web/API/DeviceMotionEvent} and follow always the same rules as much as possible.</p>","kind":"function","params":[{"type":{"names":["Object"]},"description":"<p>The acceleration object that we want to normalize.</p>","name":"accelerometerData"}],"returns":[{"type":{"names":["Event"]},"description":"<p>Returns the given acceleration object again but normalized (if possible).</p>"}],"todo":["Normalize the values without gravity too (accelerometerData.acceleration.x, accelerometerData.acceleration.y, accelerometerData.acceleration.z) if possible (needs gyroscope probably) and maybe more properties."],"name":"cordova_getAccelerationNormalized","longname":"CB_Device.Motion.cordova_getAccelerationNormalized","memberof":"CB_Device.Motion","scope":"static"},{"comment":"/**\r\n * Static class to manage the device's battery. It will return itself if it is tried to be instantiated.\r\n * @namespace\r\n * @todo Normalize more differences between web clients.\r\n */","meta":{"range":[49065,49125],"filename":"CB_Device.js","lineno":745,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\device","code":{"id":"astnode100060380","name":"CB_Device.Battery","type":"FunctionExpression","paramnames":[]}},"description":"<p>Static class to manage the device's battery. It will return itself if it is tried to be instantiated.</p>","kind":"namespace","todo":["Normalize more differences between web clients."],"name":"Battery","longname":"CB_Device.Battery","memberof":"CB_Device","scope":"static"},{"comment":"/**\r\n\t * Tells whether the [Battery Status API]{@link https://developer.mozilla.org/docs/Web/API/Battery_Status_API} (or compatible one) is available or not.\r\n\t * @function\r\n\t * @returns {boolean}\r\n\t */","meta":{"range":[49913,50139],"filename":"CB_Device.js","lineno":764,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\device","code":{"id":"astnode100060450","name":"CB_Device.Battery.isSupported","type":"FunctionExpression","paramnames":[]}},"description":"<p>Tells whether the [Battery Status API]{@link https://developer.mozilla.org/docs/Web/API/Battery_Status_API} (or compatible one) is available or not.</p>","kind":"function","returns":[{"type":{"names":["boolean"]}}],"name":"isSupported","longname":"CB_Device.Battery.isSupported","memberof":"CB_Device.Battery","scope":"static"},{"comment":"/**\r\n\t * Gets the battery object ([BatteryManager]{@link https://developer.mozilla.org/docs/Web/API/BatteryManager}) using the [Battery Status API]{@link https://developer.mozilla.org/docs/Web/API/Battery_Status_API} (or compatible one) if available or falling back to [Apache Cordova's Battery Status plugin]{@link https://github.com/apache/cordova-plugin-battery-status} emulating the object if possible or a fake object otherwise. It could be synchronous or asynchronous depending on the client.\r\n\t <br />\r\n\t When the [Battery Status API]{@link https://developer.mozilla.org/docs/Web/API/Battery_Status_API} (or compatible one) is not available, the generated object will always contain null values for the \"onchargingchange\", \"onchargingtimechage\", \"ondischargingtimechange\" and \"onlevelchange\" properties. The \"charging\" and \"level\" properties will be tried to be calculated by using [Apache Cordova's Battery Status plugin]{@link https://github.com/apache/cordova-plugin-battery-status} if possible.\r\n\t <br />\r\n\t The return will be synchronous only when [getBattery]{@link https://developer.mozilla.org/docs/Web/API/Navigator/getBattery} function is not available. The best practice is to ignore the immediate return value and just trust the first parameter passed to the \"callbackOk\" function once it is called, since this one will be the final battery object (real or fake).\r\n\t * @function\r\n\t * @param {function} [callbackOk] - The callback function that will be called once the final battery object (real or fake one) is gotten (passed as the first and unique parameter). Highly recommended since it is the unique way to always get the final battery object (due the fact that some clients will execute the function asynchronously).\r\n\t * @param {boolean} [chargingOnFail] - Desired value for the \"charging\" property of the fake battery object when neither the [Battery Status API]{@link https://developer.mozilla.org/docs/Web/API/Battery_Status_API} (or compatible one) nor [Apache Cordova's Battery Status plugin]{@link https://github.com/apache/cordova-plugin-battery-status} are available. It should follow the same rules as the real property of the [BatteryManager]{@link https://developer.mozilla.org/docs/Web/API/BatteryManager} object.\r\n\t * @param {float} [levelOnFail] - Desired value for the \"level\" property of the fake battery object when neither the [Battery Status API]{@link https://developer.mozilla.org/docs/Web/API/Battery_Status_API} (or compatible one) nor [Apache Cordova's Battery Status plugin]{@link https://github.com/apache/cordova-plugin-battery-status} are available. It should follow the same rules as the real property of the [BatteryManager]{@link https://developer.mozilla.org/docs/Web/API/BatteryManager} object.\r\n\t * @param {integer} [chargingTimeOnFail] - Desired value for the \"chargingTime\" property of the fake battery object when the [Battery Status API]{@link https://developer.mozilla.org/docs/Web/API/Battery_Status_API} (or compatible one) is not available. It should follow the same rules as the real property of the [BatteryManager]{@link https://developer.mozilla.org/docs/Web/API/BatteryManager} object.\r\n\t * @param {integer} [dischargingTimeOnFail] - Desired value for the \"dischargingTime\" property of the fake battery object when the [Battery Status API]{@link https://developer.mozilla.org/docs/Web/API/Battery_Status_API} (or compatible one) is not available. It should follow the same rules as the real property of the [BatteryManager]{@link https://developer.mozilla.org/docs/Web/API/BatteryManager} object.\r\n\t * @returns {Object|Promise} Returns the battery object (fake or real) synchronously only when the native [getBattery]{@link https://developer.mozilla.org/docs/Web/API/Navigator/getBattery} function is not available. Otherwise it returns a [Promise]{@link https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise} (the result of calling [navigator.getBattery()]{@link https://developer.mozilla.org/en-US/docs/Web/API/Navigator/getBattery}.then(callbackOk)). It is highly recommended to ignore this returned value.\r\n\t */","meta":{"range":[54281,55826],"filename":"CB_Device.js","lineno":784,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\device","code":{"id":"astnode100060488","name":"CB_Device.Battery.get","type":"FunctionExpression","paramnames":["callbackOk","chargingOnFail","levelOnFail","chargingTimeOnFail","dischargingTimeOnFail"]},"vars":{"batteryObject":"CB_Device.Battery.get~batteryObject"}},"description":"<p>Gets the battery object ([BatteryManager]{@link https://developer.mozilla.org/docs/Web/API/BatteryManager}) using the [Battery Status API]{@link https://developer.mozilla.org/docs/Web/API/Battery_Status_API} (or compatible one) if available or falling back to [Apache Cordova's Battery Status plugin]{@link https://github.com/apache/cordova-plugin-battery-status} emulating the object if possible or a fake object otherwise. It could be synchronous or asynchronous depending on the client.<br> <br /><br> When the [Battery Status API]{@link https://developer.mozilla.org/docs/Web/API/Battery_Status_API} (or compatible one) is not available, the generated object will always contain null values for the &quot;onchargingchange&quot;, &quot;onchargingtimechage&quot;, &quot;ondischargingtimechange&quot; and &quot;onlevelchange&quot; properties. The &quot;charging&quot; and &quot;level&quot; properties will be tried to be calculated by using [Apache Cordova's Battery Status plugin]{@link https://github.com/apache/cordova-plugin-battery-status} if possible.<br> <br /><br> The return will be synchronous only when [getBattery]{@link https://developer.mozilla.org/docs/Web/API/Navigator/getBattery} function is not available. The best practice is to ignore the immediate return value and just trust the first parameter passed to the &quot;callbackOk&quot; function once it is called, since this one will be the final battery object (real or fake).</p>","kind":"function","params":[{"type":{"names":["function"]},"optional":true,"description":"<p>The callback function that will be called once the final battery object (real or fake one) is gotten (passed as the first and unique parameter). Highly recommended since it is the unique way to always get the final battery object (due the fact that some clients will execute the function asynchronously).</p>","name":"callbackOk"},{"type":{"names":["boolean"]},"optional":true,"description":"<p>Desired value for the &quot;charging&quot; property of the fake battery object when neither the [Battery Status API]{@link https://developer.mozilla.org/docs/Web/API/Battery_Status_API} (or compatible one) nor [Apache Cordova's Battery Status plugin]{@link https://github.com/apache/cordova-plugin-battery-status} are available. It should follow the same rules as the real property of the [BatteryManager]{@link https://developer.mozilla.org/docs/Web/API/BatteryManager} object.</p>","name":"chargingOnFail"},{"type":{"names":["float"]},"optional":true,"description":"<p>Desired value for the &quot;level&quot; property of the fake battery object when neither the [Battery Status API]{@link https://developer.mozilla.org/docs/Web/API/Battery_Status_API} (or compatible one) nor [Apache Cordova's Battery Status plugin]{@link https://github.com/apache/cordova-plugin-battery-status} are available. It should follow the same rules as the real property of the [BatteryManager]{@link https://developer.mozilla.org/docs/Web/API/BatteryManager} object.</p>","name":"levelOnFail"},{"type":{"names":["integer"]},"optional":true,"description":"<p>Desired value for the &quot;chargingTime&quot; property of the fake battery object when the [Battery Status API]{@link https://developer.mozilla.org/docs/Web/API/Battery_Status_API} (or compatible one) is not available. It should follow the same rules as the real property of the [BatteryManager]{@link https://developer.mozilla.org/docs/Web/API/BatteryManager} object.</p>","name":"chargingTimeOnFail"},{"type":{"names":["integer"]},"optional":true,"description":"<p>Desired value for the &quot;dischargingTime&quot; property of the fake battery object when the [Battery Status API]{@link https://developer.mozilla.org/docs/Web/API/Battery_Status_API} (or compatible one) is not available. It should follow the same rules as the real property of the [BatteryManager]{@link https://developer.mozilla.org/docs/Web/API/BatteryManager} object.</p>","name":"dischargingTimeOnFail"}],"returns":[{"type":{"names":["Object","Promise"]},"description":"<p>Returns the battery object (fake or real) synchronously only when the native [getBattery]{@link https://developer.mozilla.org/docs/Web/API/Navigator/getBattery} function is not available. Otherwise it returns a [Promise]{@link https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise} (the result of calling [navigator.getBattery()]{@link https://developer.mozilla.org/en-US/docs/Web/API/Navigator/getBattery}.then(callbackOk)). It is highly recommended to ignore this returned value.</p>"}],"name":"get","longname":"CB_Device.Battery.get","memberof":"CB_Device.Battery","scope":"static"},{"comment":"/**\r\n\t * Returns whether the battery is charging or not. Using the {@link CB_Device.Battery.get} function internally. It could be synchronous or asynchronous depending on the client.\r\n\t <br />\r\n\t The return will be synchronous only sometimes (when it is asynchronous it will just return a [Promise]{@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise}), following the same rules as the {@link CB_Device.Battery.get} function which is called internally. The best practice is to ignore the immediate return value and just trust the first parameter passed to the \"callbackOk\" function once it is called, since this one will be the final value that we want to get (real or fake).\r\n\t * @function\r\n\t * @param {function} [callbackOk] - The callback function that will be called once the final value (real or fake one) is gotten (passed as the first and unique parameter). Highly recommended since it is the unique way to always get the final value (due the fact that some clients will execute the function asynchronously).\r\n\t * @param {boolean} [valueOnFail] - Desired value to use when it fails getting the real one. It should follow the same rules as the real \"charging\" property of the [BatteryManager]{@link https://developer.mozilla.org/docs/Web/API/BatteryManager} object.\r\n\t * @returns {boolean|Promise} Returns the desired value only when the function is executed synchronously (following the same rules as the {@link CB_Device.Battery.get} function which is called internally). It is highly recommended to ignore this returned value.\r\n\t */","meta":{"range":[57430,57863],"filename":"CB_Device.js","lineno":823,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\device","code":{"id":"astnode100060681","name":"CB_Device.Battery.isCharging","type":"FunctionExpression","paramnames":["callbackOk","valueOnFail"]},"vars":{"objectOrPromise":"CB_Device.Battery.isCharging~objectOrPromise","":null}},"description":"<p>Returns whether the battery is charging or not. Using the {@link CB_Device.Battery.get} function internally. It could be synchronous or asynchronous depending on the client.<br> <br /><br> The return will be synchronous only sometimes (when it is asynchronous it will just return a [Promise]{@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise}), following the same rules as the {@link CB_Device.Battery.get} function which is called internally. The best practice is to ignore the immediate return value and just trust the first parameter passed to the &quot;callbackOk&quot; function once it is called, since this one will be the final value that we want to get (real or fake).</p>","kind":"function","params":[{"type":{"names":["function"]},"optional":true,"description":"<p>The callback function that will be called once the final value (real or fake one) is gotten (passed as the first and unique parameter). Highly recommended since it is the unique way to always get the final value (due the fact that some clients will execute the function asynchronously).</p>","name":"callbackOk"},{"type":{"names":["boolean"]},"optional":true,"description":"<p>Desired value to use when it fails getting the real one. It should follow the same rules as the real &quot;charging&quot; property of the [BatteryManager]{@link https://developer.mozilla.org/docs/Web/API/BatteryManager} object.</p>","name":"valueOnFail"}],"returns":[{"type":{"names":["boolean","Promise"]},"description":"<p>Returns the desired value only when the function is executed synchronously (following the same rules as the {@link CB_Device.Battery.get} function which is called internally). It is highly recommended to ignore this returned value.</p>"}],"name":"isCharging","longname":"CB_Device.Battery.isCharging","memberof":"CB_Device.Battery","scope":"static"},{"comment":"/**\r\n\t * Returns tha current charging level of the battery. Using the {@link CB_Device.Battery.get} function internally. It could be synchronous or asynchronous depending on the client.\r\n\t <br />\r\n\t The return will be synchronous only sometimes (when it is asynchronous it will just return a [Promise]{@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise}), following the same rules as the {@link CB_Device.Battery.get} function which is called internally. The best practice is to ignore the immediate return value and just trust the first parameter passed to the \"callbackOk\" function once it is called, since this one will be the final value that we want to get (real or fake).\r\n\t * @function\r\n\t * @param {function} [callbackOk] - The callback function that will be called once the final value (real or fake one) is gotten (passed as the first and unique parameter). Highly recommended since it is the unique way to always get the final value (due the fact that some clients will execute the function asynchronously).\r\n\t * @param {float} [valueOnFail] - Desired value to use when it fails getting the real one. It should follow the same rules as the real \"level\" property of the [BatteryManager]{@link https://developer.mozilla.org/docs/Web/API/BatteryManager} object.\r\n\t * @returns {float|Promise} Returns the desired value only when the function is executed synchronously (following the same rules as the {@link CB_Device.Battery.get} function which is called internally). It is highly recommended to ignore this returned value.\r\n\t */","meta":{"range":[59461,59900],"filename":"CB_Device.js","lineno":840,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\device","code":{"id":"astnode100060740","name":"CB_Device.Battery.getLevel","type":"FunctionExpression","paramnames":["callbackOk","valueOnFail"]},"vars":{"objectOrPromise":"CB_Device.Battery.getLevel~objectOrPromise","":null}},"description":"<p>Returns tha current charging level of the battery. Using the {@link CB_Device.Battery.get} function internally. It could be synchronous or asynchronous depending on the client.<br> <br /><br> The return will be synchronous only sometimes (when it is asynchronous it will just return a [Promise]{@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise}), following the same rules as the {@link CB_Device.Battery.get} function which is called internally. The best practice is to ignore the immediate return value and just trust the first parameter passed to the &quot;callbackOk&quot; function once it is called, since this one will be the final value that we want to get (real or fake).</p>","kind":"function","params":[{"type":{"names":["function"]},"optional":true,"description":"<p>The callback function that will be called once the final value (real or fake one) is gotten (passed as the first and unique parameter). Highly recommended since it is the unique way to always get the final value (due the fact that some clients will execute the function asynchronously).</p>","name":"callbackOk"},{"type":{"names":["float"]},"optional":true,"description":"<p>Desired value to use when it fails getting the real one. It should follow the same rules as the real &quot;level&quot; property of the [BatteryManager]{@link https://developer.mozilla.org/docs/Web/API/BatteryManager} object.</p>","name":"valueOnFail"}],"returns":[{"type":{"names":["float","Promise"]},"description":"<p>Returns the desired value only when the function is executed synchronously (following the same rules as the {@link CB_Device.Battery.get} function which is called internally). It is highly recommended to ignore this returned value.</p>"}],"name":"getLevel","longname":"CB_Device.Battery.getLevel","memberof":"CB_Device.Battery","scope":"static"},{"comment":"/**\r\n\t * Returns the time (in seconds) that the battery needs to be completely charged. Using the {@link CB_Device.Battery.get} function internally. It could be synchronous or asynchronous depending on the client.\r\n\t <br />\r\n\t The return will be synchronous only sometimes (when it is asynchronous it will just return a [Promise]{@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise}), following the same rules as the {@link CB_Device.Battery.get} function which is called internally. The best practice is to ignore the immediate return value and just trust the first parameter passed to the \"callbackOk\" function once it is called, since this one will be the final value that we want to get (real or fake).\r\n\t * @function\r\n\t * @param {function} [callbackOk] - The callback function that will be called once the final value (real or fake one) is gotten (passed as the first and unique parameter). Highly recommended since it is the unique way to always get the final value (due the fact that some clients will execute the function asynchronously).\r\n\t * @param {integer} [valueOnFail] - Desired value to use when it fails getting the real one. It should follow the same rules as the real \"chargingTime\" property of the [BatteryManager]{@link https://developer.mozilla.org/docs/Web/API/BatteryManager} object.\r\n\t * @returns {integer|Promise} Returns the desired value only when the function is executed synchronously (following the same rules as the {@link CB_Device.Battery.get} function which is called internally). It is highly recommended to ignore this returned value.\r\n\t */","meta":{"range":[61537,62022],"filename":"CB_Device.js","lineno":857,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\device","code":{"id":"astnode100060802","name":"CB_Device.Battery.getChargingTime","type":"FunctionExpression","paramnames":["callbackOk","valueOnFail"]},"vars":{"objectOrPromise":"CB_Device.Battery.getChargingTime~objectOrPromise","":null}},"description":"<p>Returns the time (in seconds) that the battery needs to be completely charged. Using the {@link CB_Device.Battery.get} function internally. It could be synchronous or asynchronous depending on the client.<br> <br /><br> The return will be synchronous only sometimes (when it is asynchronous it will just return a [Promise]{@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise}), following the same rules as the {@link CB_Device.Battery.get} function which is called internally. The best practice is to ignore the immediate return value and just trust the first parameter passed to the &quot;callbackOk&quot; function once it is called, since this one will be the final value that we want to get (real or fake).</p>","kind":"function","params":[{"type":{"names":["function"]},"optional":true,"description":"<p>The callback function that will be called once the final value (real or fake one) is gotten (passed as the first and unique parameter). Highly recommended since it is the unique way to always get the final value (due the fact that some clients will execute the function asynchronously).</p>","name":"callbackOk"},{"type":{"names":["integer"]},"optional":true,"description":"<p>Desired value to use when it fails getting the real one. It should follow the same rules as the real &quot;chargingTime&quot; property of the [BatteryManager]{@link https://developer.mozilla.org/docs/Web/API/BatteryManager} object.</p>","name":"valueOnFail"}],"returns":[{"type":{"names":["integer","Promise"]},"description":"<p>Returns the desired value only when the function is executed synchronously (following the same rules as the {@link CB_Device.Battery.get} function which is called internally). It is highly recommended to ignore this returned value.</p>"}],"name":"getChargingTime","longname":"CB_Device.Battery.getChargingTime","memberof":"CB_Device.Battery","scope":"static"},{"comment":"/**\r\n\t * Returns the time (in seconds) that the battery needs to be completely discharged (or when the device will shutdown, depending on the client). Using the {@link CB_Device.Battery.get} function internally. It could be synchronous or asynchronous depending on the client.\r\n\t <br />\r\n\t The return will be synchronous only sometimes (when it is asynchronous it will just return a [Promise]{@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise}), following the same rules as the {@link CB_Device.Battery.get} function which is called internally. The best practice is to ignore the immediate return value and just trust the first parameter passed to the \"callbackOk\" function once it is called, since this one will be the final value that we want to get (real or fake).\r\n\t * @function\r\n\t * @param {function} [callbackOk] - The callback function that will be called once the final value (real or fake one) is gotten (passed as the first and unique parameter). Highly recommended since it is the unique way to always get the final value (due the fact that some clients will execute the function asynchronously).\r\n\t * @param {integer} [valueOnFail] - Desired value to use when it fails getting the real one. It should follow the same rules as the real \"dischargingTime\" property of the [BatteryManager]{@link https://developer.mozilla.org/docs/Web/API/BatteryManager} object.\r\n\t * @returns {integer|Promise} Returns the desired value only when the function is executed synchronously (following the same rules as the {@link CB_Device.Battery.get} function which is called internally). It is highly recommended to ignore this returned value.\r\n\t */","meta":{"range":[63725,64236],"filename":"CB_Device.js","lineno":874,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\device","code":{"id":"astnode100060865","name":"CB_Device.Battery.getDischargingTime","type":"FunctionExpression","paramnames":["callbackOk","valueOnFail"]},"vars":{"objectOrPromise":"CB_Device.Battery.getDischargingTime~objectOrPromise","":null}},"description":"<p>Returns the time (in seconds) that the battery needs to be completely discharged (or when the device will shutdown, depending on the client). Using the {@link CB_Device.Battery.get} function internally. It could be synchronous or asynchronous depending on the client.<br> <br /><br> The return will be synchronous only sometimes (when it is asynchronous it will just return a [Promise]{@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise}), following the same rules as the {@link CB_Device.Battery.get} function which is called internally. The best practice is to ignore the immediate return value and just trust the first parameter passed to the &quot;callbackOk&quot; function once it is called, since this one will be the final value that we want to get (real or fake).</p>","kind":"function","params":[{"type":{"names":["function"]},"optional":true,"description":"<p>The callback function that will be called once the final value (real or fake one) is gotten (passed as the first and unique parameter). Highly recommended since it is the unique way to always get the final value (due the fact that some clients will execute the function asynchronously).</p>","name":"callbackOk"},{"type":{"names":["integer"]},"optional":true,"description":"<p>Desired value to use when it fails getting the real one. It should follow the same rules as the real &quot;dischargingTime&quot; property of the [BatteryManager]{@link https://developer.mozilla.org/docs/Web/API/BatteryManager} object.</p>","name":"valueOnFail"}],"returns":[{"type":{"names":["integer","Promise"]},"description":"<p>Returns the desired value only when the function is executed synchronously (following the same rules as the {@link CB_Device.Battery.get} function which is called internally). It is highly recommended to ignore this returned value.</p>"}],"name":"getDischargingTime","longname":"CB_Device.Battery.getDischargingTime","memberof":"CB_Device.Battery","scope":"static"},{"comment":"/**\r\n\t * Sets a function to execute when the \"onchargingchange\" event of the battery is fired or removes it. This should happen whenever the charging status changes (is charging now but before it was not or vice versa). Using the [Battery Status API]{@link https://developer.mozilla.org/docs/Web/API/Battery_Status_API} (or compatible one).\r\n\t * @function\r\n\t * @param {function|null} eventFunction - The function that will be called when the event is fired. Following the same rules as in {@link https://developer.mozilla.org/docs/Web/Events/chargingchange}. If a null value is used, the event will be removed.\r\n\t * @param {boolean} [keepOldFunction=true] - Defines whether we want to keep any possible previous event listener or not.\r\n\t * @param {float} [useCapture=false] - Defines whether the event we want to add will use capture or not. This parameter will be effective only if the current client supports the [addEventListener]{@link https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener} method and will be used as its third parameter.\r\n\t * @returns {undefined|false|Promise} Returns false when the [Battery Status API]{@link https://developer.mozilla.org/docs/Web/API/Battery_Status_API} (or compatible one) is not available. Returns a [Promise]{@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise} when the native [getBattery]{@link https://developer.mozilla.org/docs/Web/API/Navigator/getBattery} function is available. Otherwise, it returns undefined.\r\n\t */","meta":{"range":[65789,65986],"filename":"CB_Device.js","lineno":890,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\device","code":{"id":"astnode100060929","name":"CB_Device.Battery.onChargingChange","type":"FunctionExpression","paramnames":["eventFunction","keepOldFunction","useCapture"]}},"description":"<p>Sets a function to execute when the &quot;onchargingchange&quot; event of the battery is fired or removes it. This should happen whenever the charging status changes (is charging now but before it was not or vice versa). Using the [Battery Status API]{@link https://developer.mozilla.org/docs/Web/API/Battery_Status_API} (or compatible one).</p>","kind":"function","params":[{"type":{"names":["function","null"]},"description":"<p>The function that will be called when the event is fired. Following the same rules as in {@link https://developer.mozilla.org/docs/Web/Events/chargingchange}. If a null value is used, the event will be removed.</p>","name":"eventFunction"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":true,"description":"<p>Defines whether we want to keep any possible previous event listener or not.</p>","name":"keepOldFunction"},{"type":{"names":["float"]},"optional":true,"defaultvalue":false,"description":"<p>Defines whether the event we want to add will use capture or not. This parameter will be effective only if the current client supports the [addEventListener]{@link https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener} method and will be used as its third parameter.</p>","name":"useCapture"}],"returns":[{"type":{"names":["undefined","false","Promise"]},"description":"<p>Returns false when the [Battery Status API]{@link https://developer.mozilla.org/docs/Web/API/Battery_Status_API} (or compatible one) is not available. Returns a [Promise]{@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise} when the native [getBattery]{@link https://developer.mozilla.org/docs/Web/API/Navigator/getBattery} function is available. Otherwise, it returns undefined.</p>"}],"name":"onChargingChange","longname":"CB_Device.Battery.onChargingChange","memberof":"CB_Device.Battery","scope":"static"},{"comment":"/**\r\n\t * Sets a function to execute when the \"onchargingtimechage\" event of the battery is fired or removes it. This should happen whenever the charging time changes. Using the [Battery Status API]{@link https://developer.mozilla.org/docs/Web/API/Battery_Status_API} (or compatible one).\r\n\t * @function\r\n\t * @param {function|null} eventFunction - The function that will be called when the event is fired. Following the same rules as in {@link https://developer.mozilla.org/docs/Web/Events/chargingtimechange}. If a null value is used, the event will be removed.\r\n\t * @param {boolean} [keepOldFunction=true] - Defines whether we want to keep any possible previous event listener or not.\r\n\t * @param {float} [useCapture=false] - Defines whether the event we want to add will use capture or not. This parameter will be effective only if the current client supports the [addEventListener]{@link https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener} method and will be used as its third parameter.\r\n\t * @returns {undefined|false|Promise} Returns false when the [Battery Status API]{@link https://developer.mozilla.org/docs/Web/API/Battery_Status_API} (or compatible one) is not available. Returns a [Promise]{@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise} when the native [getBattery]{@link https://developer.mozilla.org/docs/Web/API/Navigator/getBattery} function is available. Otherwise, it returns undefined.\r\n\t */","meta":{"range":[67488,67692],"filename":"CB_Device.js","lineno":904,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\device","code":{"id":"astnode100060952","name":"CB_Device.Battery.onChargingTimeChange","type":"FunctionExpression","paramnames":["eventFunction","keepOldFunction","useCapture"]}},"description":"<p>Sets a function to execute when the &quot;onchargingtimechage&quot; event of the battery is fired or removes it. This should happen whenever the charging time changes. Using the [Battery Status API]{@link https://developer.mozilla.org/docs/Web/API/Battery_Status_API} (or compatible one).</p>","kind":"function","params":[{"type":{"names":["function","null"]},"description":"<p>The function that will be called when the event is fired. Following the same rules as in {@link https://developer.mozilla.org/docs/Web/Events/chargingtimechange}. If a null value is used, the event will be removed.</p>","name":"eventFunction"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":true,"description":"<p>Defines whether we want to keep any possible previous event listener or not.</p>","name":"keepOldFunction"},{"type":{"names":["float"]},"optional":true,"defaultvalue":false,"description":"<p>Defines whether the event we want to add will use capture or not. This parameter will be effective only if the current client supports the [addEventListener]{@link https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener} method and will be used as its third parameter.</p>","name":"useCapture"}],"returns":[{"type":{"names":["undefined","false","Promise"]},"description":"<p>Returns false when the [Battery Status API]{@link https://developer.mozilla.org/docs/Web/API/Battery_Status_API} (or compatible one) is not available. Returns a [Promise]{@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise} when the native [getBattery]{@link https://developer.mozilla.org/docs/Web/API/Navigator/getBattery} function is available. Otherwise, it returns undefined.</p>"}],"name":"onChargingTimeChange","longname":"CB_Device.Battery.onChargingTimeChange","memberof":"CB_Device.Battery","scope":"static"},{"comment":"/**\r\n\t * Sets a function to execute when the \"ondischargingtimechange\" event of the battery is fired or removes it. This should happen whenever the discharging time changes. Using the [Battery Status API]{@link https://developer.mozilla.org/docs/Web/API/Battery_Status_API} (or compatible one).\r\n\t * @function\r\n\t * @param {function|null} eventFunction - The function that will be called when the event is fired. Following the same rules as in {@link https://developer.mozilla.org/docs/Web/Events/dischargingtimechange}. If a null value is used, the event will be removed.\r\n\t * @param {boolean} [keepOldFunction=true] - Defines whether we want to keep any possible previous event listener or not.\r\n\t * @param {float} [useCapture=false] - Defines whether the event we want to add will use capture or not. This parameter will be effective only if the current client supports the [addEventListener]{@link https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener} method and will be used as its third parameter.\r\n\t * @returns {undefined|false|Promise} Returns false when the [Battery Status API]{@link https://developer.mozilla.org/docs/Web/API/Battery_Status_API} (or compatible one) is not available. Returns a [Promise]{@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise} when the native [getBattery]{@link https://developer.mozilla.org/docs/Web/API/Navigator/getBattery} function is available. Otherwise, it returns undefined.\r\n\t */","meta":{"range":[69205,69416],"filename":"CB_Device.js","lineno":918,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\device","code":{"id":"astnode100060975","name":"CB_Device.Battery.onDischargingTimeChange","type":"FunctionExpression","paramnames":["eventFunction","keepOldFunction","useCapture"]}},"description":"<p>Sets a function to execute when the &quot;ondischargingtimechange&quot; event of the battery is fired or removes it. This should happen whenever the discharging time changes. Using the [Battery Status API]{@link https://developer.mozilla.org/docs/Web/API/Battery_Status_API} (or compatible one).</p>","kind":"function","params":[{"type":{"names":["function","null"]},"description":"<p>The function that will be called when the event is fired. Following the same rules as in {@link https://developer.mozilla.org/docs/Web/Events/dischargingtimechange}. If a null value is used, the event will be removed.</p>","name":"eventFunction"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":true,"description":"<p>Defines whether we want to keep any possible previous event listener or not.</p>","name":"keepOldFunction"},{"type":{"names":["float"]},"optional":true,"defaultvalue":false,"description":"<p>Defines whether the event we want to add will use capture or not. This parameter will be effective only if the current client supports the [addEventListener]{@link https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener} method and will be used as its third parameter.</p>","name":"useCapture"}],"returns":[{"type":{"names":["undefined","false","Promise"]},"description":"<p>Returns false when the [Battery Status API]{@link https://developer.mozilla.org/docs/Web/API/Battery_Status_API} (or compatible one) is not available. Returns a [Promise]{@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise} when the native [getBattery]{@link https://developer.mozilla.org/docs/Web/API/Navigator/getBattery} function is available. Otherwise, it returns undefined.</p>"}],"name":"onDischargingTimeChange","longname":"CB_Device.Battery.onDischargingTimeChange","memberof":"CB_Device.Battery","scope":"static"},{"comment":"/**\r\n\t * Sets a function to execute when the \"onlevelchange\" event of the battery is fired or removes it. This should happen when the battery level changes. Using the [Battery Status API]{@link https://developer.mozilla.org/docs/Web/API/Battery_Status_API} (or compatible one).\r\n\t * @function\r\n\t * @param {function|null} eventFunction - The function that will be called when the event is fired. Following the same rules as in {@link https://developer.mozilla.org/docs/Web/Events/levelchange}. If a null value is used, the event will be removed.\r\n\t * @param {boolean} [keepOldFunction=true] - Defines whether we want to keep any possible previous event listener or not.\r\n\t * @param {float} [useCapture=false] - Defines whether the event we want to add will use capture or not. This parameter will be effective only if the current client supports the [addEventListener]{@link https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener} method and will be used as its third parameter.\r\n\t * @returns {undefined|false|Promise} Returns false when the [Battery Status API]{@link https://developer.mozilla.org/docs/Web/API/Battery_Status_API} (or compatible one) is not available. Returns a [Promise]{@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise} when the native [getBattery]{@link https://developer.mozilla.org/docs/Web/API/Navigator/getBattery} function is available. Otherwise, it returns undefined.\r\n\t */","meta":{"range":[70901,71092],"filename":"CB_Device.js","lineno":932,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\device","code":{"id":"astnode100060998","name":"CB_Device.Battery.onLevelChange","type":"FunctionExpression","paramnames":["eventFunction","keepOldFunction","useCapture"]}},"description":"<p>Sets a function to execute when the &quot;onlevelchange&quot; event of the battery is fired or removes it. This should happen when the battery level changes. Using the [Battery Status API]{@link https://developer.mozilla.org/docs/Web/API/Battery_Status_API} (or compatible one).</p>","kind":"function","params":[{"type":{"names":["function","null"]},"description":"<p>The function that will be called when the event is fired. Following the same rules as in {@link https://developer.mozilla.org/docs/Web/Events/levelchange}. If a null value is used, the event will be removed.</p>","name":"eventFunction"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":true,"description":"<p>Defines whether we want to keep any possible previous event listener or not.</p>","name":"keepOldFunction"},{"type":{"names":["float"]},"optional":true,"defaultvalue":false,"description":"<p>Defines whether the event we want to add will use capture or not. This parameter will be effective only if the current client supports the [addEventListener]{@link https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener} method and will be used as its third parameter.</p>","name":"useCapture"}],"returns":[{"type":{"names":["undefined","false","Promise"]},"description":"<p>Returns false when the [Battery Status API]{@link https://developer.mozilla.org/docs/Web/API/Battery_Status_API} (or compatible one) is not available. Returns a [Promise]{@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise} when the native [getBattery]{@link https://developer.mozilla.org/docs/Web/API/Navigator/getBattery} function is available. Otherwise, it returns undefined.</p>"}],"name":"onLevelChange","longname":"CB_Device.Battery.onLevelChange","memberof":"CB_Device.Battery","scope":"static"},{"comment":"/**\r\n\t * Sets a function to execute when the \"batterystatus\" event of the battery is fired or removes it. Using the [Apache Cordova's Battery Status plugin]{@link https://github.com/apache/cordova-plugin-battery-status}.\r\n\t * @function\r\n\t * @param {function|null} eventFunction - The function that will be called when the event is fired. Following the same rules as in {@link https://github.com/apache/cordova-plugin-battery-status}. If a null value is used, the event will be removed.\r\n\t * @param {boolean} [keepOldFunction=true] - Defines whether we want to keep any possible previous event listener or not.\r\n\t * @param {float} [useCapture=false] - Defines whether the event we want to add will use capture or not. This parameter will be effective only if the current client supports the [addEventListener]{@link https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener} method and will be used as its third parameter.\r\n\t */","meta":{"range":[73083,73280],"filename":"CB_Device.js","lineno":975,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\device","code":{"id":"astnode100061143","name":"CB_Device.Battery.cordova_onChange","type":"FunctionExpression","paramnames":["eventFunction","keepOldFunction","useCapture"]}},"description":"<p>Sets a function to execute when the &quot;batterystatus&quot; event of the battery is fired or removes it. Using the [Apache Cordova's Battery Status plugin]{@link https://github.com/apache/cordova-plugin-battery-status}.</p>","kind":"function","params":[{"type":{"names":["function","null"]},"description":"<p>The function that will be called when the event is fired. Following the same rules as in {@link https://github.com/apache/cordova-plugin-battery-status}. If a null value is used, the event will be removed.</p>","name":"eventFunction"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":true,"description":"<p>Defines whether we want to keep any possible previous event listener or not.</p>","name":"keepOldFunction"},{"type":{"names":["float"]},"optional":true,"defaultvalue":false,"description":"<p>Defines whether the event we want to add will use capture or not. This parameter will be effective only if the current client supports the [addEventListener]{@link https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener} method and will be used as its third parameter.</p>","name":"useCapture"}],"name":"cordova_onChange","longname":"CB_Device.Battery.cordova_onChange","memberof":"CB_Device.Battery","scope":"static"},{"comment":"/**\r\n\t * Sets a function to execute when the \"batterylow\" event of the battery is fired or removes it. Using the [Apache Cordova's Battery Status plugin]{@link https://github.com/apache/cordova-plugin-battery-status}.\r\n\t * @function\r\n\t * @param {function|null} eventFunction - The function that will be called when the event is fired. Following the same rules as in {@link https://github.com/apache/cordova-plugin-battery-status}. If a null value is used, the event will be removed.\r\n\t * @param {boolean} [keepOldFunction=true] - Defines whether we want to keep any possible previous event listener or not.\r\n\t * @param {float} [useCapture=false] - Defines whether the event we want to add will use capture or not. This parameter will be effective only if the current client supports the [addEventListener]{@link https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener} method and will be used as its third parameter.\r\n\t */","meta":{"range":[74239,74430],"filename":"CB_Device.js","lineno":988,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\device","code":{"id":"astnode100061165","name":"CB_Device.Battery.cordova_onLow","type":"FunctionExpression","paramnames":["eventFunction","keepOldFunction","useCapture"]}},"description":"<p>Sets a function to execute when the &quot;batterylow&quot; event of the battery is fired or removes it. Using the [Apache Cordova's Battery Status plugin]{@link https://github.com/apache/cordova-plugin-battery-status}.</p>","kind":"function","params":[{"type":{"names":["function","null"]},"description":"<p>The function that will be called when the event is fired. Following the same rules as in {@link https://github.com/apache/cordova-plugin-battery-status}. If a null value is used, the event will be removed.</p>","name":"eventFunction"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":true,"description":"<p>Defines whether we want to keep any possible previous event listener or not.</p>","name":"keepOldFunction"},{"type":{"names":["float"]},"optional":true,"defaultvalue":false,"description":"<p>Defines whether the event we want to add will use capture or not. This parameter will be effective only if the current client supports the [addEventListener]{@link https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener} method and will be used as its third parameter.</p>","name":"useCapture"}],"name":"cordova_onLow","longname":"CB_Device.Battery.cordova_onLow","memberof":"CB_Device.Battery","scope":"static"},{"comment":"/**\r\n\t * Sets a function to execute when the \"batterycritical\" event of the battery is fired or removes it. Using the [Apache Cordova's Battery Status plugin]{@link https://github.com/apache/cordova-plugin-battery-status}.\r\n\t * @function\r\n\t * @param {function|null} eventFunction - The function that will be called when the event is fired. Following the same rules as in {@link https://github.com/apache/cordova-plugin-battery-status}. If a null value is used, the event will be removed.\r\n\t * @param {boolean} [keepOldFunction=true] - Defines whether we want to keep any possible previous event listener or not.\r\n\t * @param {float} [useCapture=false] - Defines whether the event we want to add will use capture or not. This parameter will be effective only if the current client supports the [addEventListener]{@link https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener} method and will be used as its third parameter.\r\n\t */","meta":{"range":[75394,75595],"filename":"CB_Device.js","lineno":1001,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\device","code":{"id":"astnode100061187","name":"CB_Device.Battery.cordova_onCritical","type":"FunctionExpression","paramnames":["eventFunction","keepOldFunction","useCapture"]}},"description":"<p>Sets a function to execute when the &quot;batterycritical&quot; event of the battery is fired or removes it. Using the [Apache Cordova's Battery Status plugin]{@link https://github.com/apache/cordova-plugin-battery-status}.</p>","kind":"function","params":[{"type":{"names":["function","null"]},"description":"<p>The function that will be called when the event is fired. Following the same rules as in {@link https://github.com/apache/cordova-plugin-battery-status}. If a null value is used, the event will be removed.</p>","name":"eventFunction"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":true,"description":"<p>Defines whether we want to keep any possible previous event listener or not.</p>","name":"keepOldFunction"},{"type":{"names":["float"]},"optional":true,"defaultvalue":false,"description":"<p>Defines whether the event we want to add will use capture or not. This parameter will be effective only if the current client supports the [addEventListener]{@link https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener} method and will be used as its third parameter.</p>","name":"useCapture"}],"name":"cordova_onCritical","longname":"CB_Device.Battery.cordova_onCritical","memberof":"CB_Device.Battery","scope":"static"},{"comment":"/**\r\n * Static class to manage the device's vibration. It will return itself if it is tried to be instantiated.\r\n * @namespace\r\n */","meta":{"range":[75784,75848],"filename":"CB_Device.js","lineno":1013,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\device","code":{"id":"astnode100061209","name":"CB_Device.Vibration","type":"FunctionExpression","paramnames":[]}},"description":"<p>Static class to manage the device's vibration. It will return itself if it is tried to be instantiated.</p>","kind":"namespace","name":"Vibration","longname":"CB_Device.Vibration","memberof":"CB_Device","scope":"static"},{"comment":"/**\r\n\t * Tells whether the [Vibration API]{@link https://developer.mozilla.org/docs/Web/API/Vibration_API} (or compatible one as [Apache Cordova's Vibration plugin]{@link https://github.com/apache/cordova-plugin-vibration}) is available or not.\r\n\t * @function\r\n\t * @returns {boolean}\r\n\t */","meta":{"range":[76149,76301],"filename":"CB_Device.js","lineno":1020,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\device","code":{"id":"astnode100061221","name":"CB_Device.Vibration.isSupported","type":"FunctionExpression","paramnames":[]}},"description":"<p>Tells whether the [Vibration API]{@link https://developer.mozilla.org/docs/Web/API/Vibration_API} (or compatible one as [Apache Cordova's Vibration plugin]{@link https://github.com/apache/cordova-plugin-vibration}) is available or not.</p>","kind":"function","returns":[{"type":{"names":["boolean"]}}],"name":"isSupported","longname":"CB_Device.Vibration.isSupported","memberof":"CB_Device.Vibration","scope":"static"},{"comment":"/**\r\n\t * Makes the device vibrate using the [Vibration API]{@link https://developer.mozilla.org/docs/Web/API/Vibration_API} (or compatible one as [Apache Cordova's Vibration plugin]{@link https://github.com/apache/cordova-plugin-vibration}).\r\n\t * @function\r\n\t * @param {integer|array} [vibration] - The vibration pattern which can be either a single integer value or an array of integers. Following the same rules as the first parameter of the native [vibrate]{@link https://developer.mozilla.org/docs/Web/API/Navigator/vibrate} function.\r\n\t * @returns {undefined|false} Returns false in the case that [Vibration API]{@link https://developer.mozilla.org/docs/Web/API/Vibration_API} (or compatible one as [Apache Cordova's Vibration plugin]{@link https://github.com/apache/cordova-plugin-vibration}) cannot be used or undefined otherwise.\r\n\t */","meta":{"range":[77159,77424],"filename":"CB_Device.js","lineno":1032,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\device","code":{"id":"astnode100061245","name":"CB_Device.Vibration.start","type":"FunctionExpression","paramnames":["vibration"]},"vars":{"navigator.vibrate":"navigator.vibrate"}},"description":"<p>Makes the device vibrate using the [Vibration API]{@link https://developer.mozilla.org/docs/Web/API/Vibration_API} (or compatible one as [Apache Cordova's Vibration plugin]{@link https://github.com/apache/cordova-plugin-vibration}).</p>","kind":"function","params":[{"type":{"names":["integer","array"]},"optional":true,"description":"<p>The vibration pattern which can be either a single integer value or an array of integers. Following the same rules as the first parameter of the native [vibrate]{@link https://developer.mozilla.org/docs/Web/API/Navigator/vibrate} function.</p>","name":"vibration"}],"returns":[{"type":{"names":["undefined","false"]},"description":"<p>Returns false in the case that [Vibration API]{@link https://developer.mozilla.org/docs/Web/API/Vibration_API} (or compatible one as [Apache Cordova's Vibration plugin]{@link https://github.com/apache/cordova-plugin-vibration}) cannot be used or undefined otherwise.</p>"}],"name":"start","longname":"CB_Device.Vibration.start","memberof":"CB_Device.Vibration","scope":"static"},{"comment":"/**\r\n\t * Makes the device stop vibrating using the [Vibration API]{@link https://developer.mozilla.org/docs/Web/API/Vibration_API} (or compatible one as [Apache Cordova's Vibration plugin]{@link https://github.com/apache/cordova-plugin-vibration}).\r\n\t * @function\r\n\t * @returns {undefined|false} Returns false in the case that [Vibration API]{@link https://developer.mozilla.org/docs/Web/API/Vibration_API} (or compatible one as [Apache Cordova's Vibration plugin]{@link https://github.com/apache/cordova-plugin-vibration}) cannot be used or undefined otherwise.\r\n\t */","meta":{"range":[78006,78091],"filename":"CB_Device.js","lineno":1048,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\device","code":{"id":"astnode100061288","name":"CB_Device.Vibration.stop","type":"FunctionExpression","paramnames":[]}},"description":"<p>Makes the device stop vibrating using the [Vibration API]{@link https://developer.mozilla.org/docs/Web/API/Vibration_API} (or compatible one as [Apache Cordova's Vibration plugin]{@link https://github.com/apache/cordova-plugin-vibration}).</p>","kind":"function","returns":[{"type":{"names":["undefined","false"]},"description":"<p>Returns false in the case that [Vibration API]{@link https://developer.mozilla.org/docs/Web/API/Vibration_API} (or compatible one as [Apache Cordova's Vibration plugin]{@link https://github.com/apache/cordova-plugin-vibration}) cannot be used or undefined otherwise.</p>"}],"name":"stop","longname":"CB_Device.Vibration.stop","memberof":"CB_Device.Vibration","scope":"static"},{"comment":"/**\r\n * Static class to manage the device's ambient light sensor. It will return itself if it is tried to be instantiated.\r\n * @namespace\r\n * @todo Normalize more differences between web clients.\r\n */","meta":{"range":[78353,78423],"filename":"CB_Device.js","lineno":1062,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\device","code":{"id":"astnode100061305","name":"CB_Device.AmbientLight","type":"FunctionExpression","paramnames":[]}},"description":"<p>Static class to manage the device's ambient light sensor. It will return itself if it is tried to be instantiated.</p>","kind":"namespace","todo":["Normalize more differences between web clients."],"name":"AmbientLight","longname":"CB_Device.AmbientLight","memberof":"CB_Device","scope":"static"},{"comment":"/**\r\n\t * Tells whether the [Ambient Light Sensor API]{@link https://w3.org/TR/ambient-light/} or the [Ambient Light Sensor Events (\"ondevicelight\")]{@link https://developer.mozilla.org/en-US/docs/Web/API/Ambient_Light_Events} or [\"onlightlevel\" event]{@link https://modernweb.com/introduction-to-the-ambient-light-api/} are supported or not.\r\n\t * @function\r\n\t * @returns {boolean}\r\n\t */","meta":{"range":[78821,78989],"filename":"CB_Device.js","lineno":1069,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\device","code":{"id":"astnode100061317","name":"CB_Device.AmbientLight.isSupported","type":"FunctionExpression","paramnames":[]}},"description":"<p>Tells whether the [Ambient Light Sensor API]{@link https://w3.org/TR/ambient-light/} or the [Ambient Light Sensor Events (&quot;ondevicelight&quot;)]{@link https://developer.mozilla.org/en-US/docs/Web/API/Ambient_Light_Events} or [&quot;onlightlevel&quot; event]{@link https://modernweb.com/introduction-to-the-ambient-light-api/} are supported or not.</p>","kind":"function","returns":[{"type":{"names":["boolean"]}}],"name":"isSupported","longname":"CB_Device.AmbientLight.isSupported","memberof":"CB_Device.AmbientLight","scope":"static"},{"comment":"/**\r\n\t * Sets the event to get the ambient light or removes it. Uses the [Ambient Light Sensor API]{@link https://w3.org/TR/ambient-light/} or the [Ambient Light Sensor Events (\"ondevicelight\")]{@link https://developer.mozilla.org/en-US/docs/Web/API/Ambient_Light_Events} or [\"onlightlevel\" event]{@link https://modernweb.com/introduction-to-the-ambient-light-api/}.\r\n\t\t<br/>\r\n\t\tThe given \"eventFunction\" will receive the event object as the first parameter but this event object will vary depending on the way to get the ambient light which is supported by the client (if any):\r\n\t\t<br />\r\n\t\tFirst choice, if available, uses the [Ambient Light Sensor API]{@link https://w3.org/TR/ambient-light/} and \"event.value\" will contain the units in lux.\r\n\t\t<br />\r\n\t\tSecond choice, if available, uses the [Ambient Light Sensor Events (\"ondevicelight\")]{@link https://developer.mozilla.org/en-US/docs/Web/API/Ambient_Light_Events} and \"event.value\" will contain the units in lux.\r\n\t\t<br />\r\n\t\tThird choice, if available, uses the [\"onlightlevel\" event]{@link https://modernweb.com/introduction-to-the-ambient-light-api/} and \"event.value\" will be \"\" (an empty string), \"dim\", \"normal\" or \"bright\" instead of a number.\r\n\t * @function\r\n\t * @param {function|null} eventFunction - The function that will be called when the event is fired. The event object received will already be normalized by the {@link CB_Device.AmbientLight.normalizeEvent} function automatically. Despite of this, due to the big differences between different clients, the event object received as the first parameter will vary depending on the way to get the ambient light which is supported by the client (if any). If a null value is used, the event will be removed.\r\n\t * @param {boolean} [keepOldFunction=true] - Defines whether we want to keep any possible previous event listener or not.\r\n\t * @param {float} [useCapture=false] - Defines whether the event we want to add will use capture or not. This parameter will be effective only if the current client supports the [addEventListener]{@link https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener} method and will be used as its third parameter.\r\n\t * @param {function} [callbackError] - Callback that will be called if there is any error getting the ambient light. Only used by the [Ambient Light Sensor API]{@link https://w3.org/TR/ambient-light/} (if available).\r\n\t * @returns {undefined|false} Returns false in the case that no way to get the ambient light is available or undefined otherwise.\r\n\t */","meta":{"range":[81547,83431],"filename":"CB_Device.js","lineno":1092,"columnno":4,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\device","code":{"id":"astnode100061339","name":"CB_Device.AmbientLight.get","type":"FunctionExpression","paramnames":["eventFunction","keepOldFunction","useCapture","callbackError"]},"vars":{"sensor":"CB_Device.AmbientLight.get~sensor","sensor.onerror":"CB_Device.AmbientLight.get~sensor.onerror"}},"description":"<p>Sets the event to get the ambient light or removes it. Uses the [Ambient Light Sensor API]{@link https://w3.org/TR/ambient-light/} or the [Ambient Light Sensor Events (&quot;ondevicelight&quot;)]{@link https://developer.mozilla.org/en-US/docs/Web/API/Ambient_Light_Events} or [&quot;onlightlevel&quot; event]{@link https://modernweb.com/introduction-to-the-ambient-light-api/}.<br> <br/><br> The given &quot;eventFunction&quot; will receive the event object as the first parameter but this event object will vary depending on the way to get the ambient light which is supported by the client (if any):<br> <br /><br> First choice, if available, uses the [Ambient Light Sensor API]{@link https://w3.org/TR/ambient-light/} and &quot;event.value&quot; will contain the units in lux.<br> <br /><br> Second choice, if available, uses the [Ambient Light Sensor Events (&quot;ondevicelight&quot;)]{@link https://developer.mozilla.org/en-US/docs/Web/API/Ambient_Light_Events} and &quot;event.value&quot; will contain the units in lux.<br> <br /><br> Third choice, if available, uses the [&quot;onlightlevel&quot; event]{@link https://modernweb.com/introduction-to-the-ambient-light-api/} and &quot;event.value&quot; will be &quot;&quot; (an empty string), &quot;dim&quot;, &quot;normal&quot; or &quot;bright&quot; instead of a number.</p>","kind":"function","params":[{"type":{"names":["function","null"]},"description":"<p>The function that will be called when the event is fired. The event object received will already be normalized by the {@link CB_Device.AmbientLight.normalizeEvent} function automatically. Despite of this, due to the big differences between different clients, the event object received as the first parameter will vary depending on the way to get the ambient light which is supported by the client (if any). If a null value is used, the event will be removed.</p>","name":"eventFunction"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":true,"description":"<p>Defines whether we want to keep any possible previous event listener or not.</p>","name":"keepOldFunction"},{"type":{"names":["float"]},"optional":true,"defaultvalue":false,"description":"<p>Defines whether the event we want to add will use capture or not. This parameter will be effective only if the current client supports the [addEventListener]{@link https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener} method and will be used as its third parameter.</p>","name":"useCapture"},{"type":{"names":["function"]},"optional":true,"description":"<p>Callback that will be called if there is any error getting the ambient light. Only used by the [Ambient Light Sensor API]{@link https://w3.org/TR/ambient-light/} (if available).</p>","name":"callbackError"}],"returns":[{"type":{"names":["undefined","false"]},"description":"<p>Returns false in the case that no way to get the ambient light is available or undefined otherwise.</p>"}],"name":"get","longname":"CB_Device.AmbientLight.get","memberof":"CB_Device.AmbientLight","scope":"static"},{"comment":"/**\r\n\t * Normalizes the data gotten from the the [Ambient Light Sensor API]{@link https://w3.org/TR/ambient-light/} or the [Ambient Light Sensor Events (\"ondevicelight\")]{@link https://developer.mozilla.org/en-US/docs/Web/API/Ambient_Light_Events} or [\"onlightlevel\" event]{@link https://modernweb.com/introduction-to-the-ambient-light-api/} to try to match the [Ambient Light Sensor API]{@link https://w3.org/TR/ambient-light/} and follow always the same rules as much as possible.\r\n\t * @function\r\n\t * @param {Event} e - The event object that we want to normalize.\r\n\t * @param {('change'|'reading'|'devicelight'|'lightlevel')} eventName - The name of the event that we want to normalize. Case sensitive.\r\n\t * @param {AmbientLightSensor} [sensor] - [AmbientLightSensor]{@link https://w3.org/TR/ambient-light/#ambient-light-sensor-interface} object used by the [Ambient Light Sensor API]{@link https://w3.org/TR/ambient-light/}.\r\n \t * @returns {Event} Returns the given event object again but normalized (if possible).\r\n\t * @todo Normalize more differences between web clients.\r\n\t */","meta":{"range":[85054,86134],"filename":"CB_Device.js","lineno":1143,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\device","code":{"id":"astnode100061499","name":"CB_Device.AmbientLight.normalizeEvent","type":"FunctionExpression","paramnames":["e","eventName","sensor"]},"vars":{"e":"CB_Device.AmbientLight.normalizeEvent~e","e.value":"CB_Device.AmbientLight.normalizeEvent~e.value"}},"description":"<p>Normalizes the data gotten from the the [Ambient Light Sensor API]{@link https://w3.org/TR/ambient-light/} or the [Ambient Light Sensor Events (&quot;ondevicelight&quot;)]{@link https://developer.mozilla.org/en-US/docs/Web/API/Ambient_Light_Events} or [&quot;onlightlevel&quot; event]{@link https://modernweb.com/introduction-to-the-ambient-light-api/} to try to match the [Ambient Light Sensor API]{@link https://w3.org/TR/ambient-light/} and follow always the same rules as much as possible.</p>","kind":"function","params":[{"type":{"names":["Event"]},"description":"<p>The event object that we want to normalize.</p>","name":"e"},{"type":{"names":["'change'","'reading'","'devicelight'","'lightlevel'"]},"description":"<p>The name of the event that we want to normalize. Case sensitive.</p>","name":"eventName"},{"type":{"names":["AmbientLightSensor"]},"optional":true,"description":"<p>[AmbientLightSensor]{@link https://w3.org/TR/ambient-light/#ambient-light-sensor-interface} object used by the [Ambient Light Sensor API]{@link https://w3.org/TR/ambient-light/}.</p>","name":"sensor"}],"returns":[{"type":{"names":["Event"]},"description":"<p>Returns the given event object again but normalized (if possible).</p>"}],"todo":["Normalize more differences between web clients."],"name":"normalizeEvent","longname":"CB_Device.AmbientLight.normalizeEvent","memberof":"CB_Device.AmbientLight","scope":"static"},{"comment":"/**\r\n * Static class to manage the device's proximity sensor. It will return itself if it is tried to be instantiated.\r\n * @namespace\r\n * @todo Normalize more differences between web clients.\r\n */","meta":{"range":[86395,86459],"filename":"CB_Device.js","lineno":1180,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\device","code":{"id":"astnode100061585","name":"CB_Device.Proximity","type":"FunctionExpression","paramnames":[]}},"description":"<p>Static class to manage the device's proximity sensor. It will return itself if it is tried to be instantiated.</p>","kind":"namespace","todo":["Normalize more differences between web clients."],"name":"Proximity","longname":"CB_Device.Proximity","memberof":"CB_Device","scope":"static"},{"comment":"/**\r\n\t * Tells whether the [Proximity Sensor API]{@link https://w3.org/TR/proximity/} or the Proximity Sensor Events as [\"ondeviceproximity\"]{@link https://developer.mozilla.org/en-US/docs/Web/API/Ambient_Light_Events} or [\"onuserproximity\"]{@link https://developer.mozilla.org/en-US/docs/Web/API/UserProximityEvent} are supported or not.\r\n\t * @function\r\n\t * @returns {boolean}\r\n\t */","meta":{"range":[86854,87023],"filename":"CB_Device.js","lineno":1187,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\device","code":{"id":"astnode100061597","name":"CB_Device.Proximity.isSupported","type":"FunctionExpression","paramnames":[]}},"description":"<p>Tells whether the [Proximity Sensor API]{@link https://w3.org/TR/proximity/} or the Proximity Sensor Events as [&quot;ondeviceproximity&quot;]{@link https://developer.mozilla.org/en-US/docs/Web/API/Ambient_Light_Events} or [&quot;onuserproximity&quot;]{@link https://developer.mozilla.org/en-US/docs/Web/API/UserProximityEvent} are supported or not.</p>","kind":"function","returns":[{"type":{"names":["boolean"]}}],"name":"isSupported","longname":"CB_Device.Proximity.isSupported","memberof":"CB_Device.Proximity","scope":"static"},{"comment":"/**\r\n\t * Sets the event to get the proximity or removes it. Uses the [Proximity Sensor API]{@link https://w3.org/TR/proximity/} or the Proximity Sensor Events as [\"ondeviceproximity\"]{@link https://developer.mozilla.org/en-US/docs/Web/API/Window/ondeviceproximity} or [\"onuserproximity\"]{@link https://developer.mozilla.org/en-US/docs/Web/API/UserProximityEvent}.\r\n\t\t<br/>\r\n\t\tThe given \"eventFunction\" will receive the event object as the first parameter but this event object will vary depending on the way to get the proximity which is supported by the client (if any) and the \"detectNear\" parameter. It will use the following logic order:\r\n\t\t<br />\r\n\t\tIf \"detectNear\" is not set to true, [Proximity Sensor API]{@link https://w3.org/TR/proximity/} is used as the first option (if available) and \"event.value\" will contain the units in centimeters (depending on the implementation, \"event.near\" will also be present, containing a boolean depending on whether an object is near or not).\r\n\t\t<br />\r\n\t\tIf \"detectNear\" is not set to true, [Proximity Sensor Events (\"ondeviceproximity\")]{@link https://developer.mozilla.org/en-US/docs/Web/API/Window/ondeviceproximity} is used as the second option (if available) and \"event.value\" will contain the units in centimeters.\r\n\t\t<br />\r\n\t\tIf \"detectNear\" is set to true, [\"onuserproximity\" event]{@link https://developer.mozilla.org/en-US/docs/Web/API/UserProximityEvent} is the unique option used (if available) and \"event.near\" will be a boolean which tell us whether something is near or not.\r\n\t * @function\r\n\t * @param {function|null} eventFunction - The function that will be called when the event is fired. The event object received will already be normalized by the {@link CB_Device.Proximity.normalizeEvent} function automatically. Despite of this, due to the big differences between different clients, the event object received as the first parameter will vary depending on the way to get the proximity which is supported by the client (if any). If a null value is used, the event will be removed.\r\n\t * @param {boolean} [detectNear=false] - Defines whether we want to detect when a physical object is nearby. If it is set to true, it will use the [\"onuserproximity\" event]{@link https://developer.mozilla.org/en-US/docs/Web/API/UserProximityEvent}.\r\n\t * @param {boolean} [keepOldFunction=true] - Defines whether we want to keep any possible previous event listener or not.\r\n\t * @param {float} [useCapture=false] - Defines whether the event we want to add will use capture or not. This parameter will be effective only if the current client supports the [addEventListener]{@link https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener} method and will be used as its third parameter.\r\n\t * @param {function} [callbackError] - Callback that will be called if there is any error getting the proximity. Only used by the [Proximity Sensor API]{@link https://w3.org/TR/proximity/} (if available).\r\n\t * @returns {undefined|false} Returns false in the case that no way to get the proximity is available or undefined otherwise.\r\n\t */","meta":{"range":[90135,92216],"filename":"CB_Device.js","lineno":1211,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\device","code":{"id":"astnode100061619","name":"CB_Device.Proximity.get","type":"FunctionExpression","paramnames":["eventFunction","detectNear","keepOldFunction","useCapture","callbackError"]},"vars":{"sensor":"CB_Device.Proximity.get~sensor","sensor.onerror":"CB_Device.Proximity.get~sensor.onerror"}},"description":"<p>Sets the event to get the proximity or removes it. Uses the [Proximity Sensor API]{@link https://w3.org/TR/proximity/} or the Proximity Sensor Events as [&quot;ondeviceproximity&quot;]{@link https://developer.mozilla.org/en-US/docs/Web/API/Window/ondeviceproximity} or [&quot;onuserproximity&quot;]{@link https://developer.mozilla.org/en-US/docs/Web/API/UserProximityEvent}.<br> <br/><br> The given &quot;eventFunction&quot; will receive the event object as the first parameter but this event object will vary depending on the way to get the proximity which is supported by the client (if any) and the &quot;detectNear&quot; parameter. It will use the following logic order:<br> <br /><br> If &quot;detectNear&quot; is not set to true, [Proximity Sensor API]{@link https://w3.org/TR/proximity/} is used as the first option (if available) and &quot;event.value&quot; will contain the units in centimeters (depending on the implementation, &quot;event.near&quot; will also be present, containing a boolean depending on whether an object is near or not).<br> <br /><br> If &quot;detectNear&quot; is not set to true, [Proximity Sensor Events (&quot;ondeviceproximity&quot;)]{@link https://developer.mozilla.org/en-US/docs/Web/API/Window/ondeviceproximity} is used as the second option (if available) and &quot;event.value&quot; will contain the units in centimeters.<br> <br /><br> If &quot;detectNear&quot; is set to true, [&quot;onuserproximity&quot; event]{@link https://developer.mozilla.org/en-US/docs/Web/API/UserProximityEvent} is the unique option used (if available) and &quot;event.near&quot; will be a boolean which tell us whether something is near or not.</p>","kind":"function","params":[{"type":{"names":["function","null"]},"description":"<p>The function that will be called when the event is fired. The event object received will already be normalized by the {@link CB_Device.Proximity.normalizeEvent} function automatically. Despite of this, due to the big differences between different clients, the event object received as the first parameter will vary depending on the way to get the proximity which is supported by the client (if any). If a null value is used, the event will be removed.</p>","name":"eventFunction"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>Defines whether we want to detect when a physical object is nearby. If it is set to true, it will use the [&quot;onuserproximity&quot; event]{@link https://developer.mozilla.org/en-US/docs/Web/API/UserProximityEvent}.</p>","name":"detectNear"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":true,"description":"<p>Defines whether we want to keep any possible previous event listener or not.</p>","name":"keepOldFunction"},{"type":{"names":["float"]},"optional":true,"defaultvalue":false,"description":"<p>Defines whether the event we want to add will use capture or not. This parameter will be effective only if the current client supports the [addEventListener]{@link https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener} method and will be used as its third parameter.</p>","name":"useCapture"},{"type":{"names":["function"]},"optional":true,"description":"<p>Callback that will be called if there is any error getting the proximity. Only used by the [Proximity Sensor API]{@link https://w3.org/TR/proximity/} (if available).</p>","name":"callbackError"}],"returns":[{"type":{"names":["undefined","false"]},"description":"<p>Returns false in the case that no way to get the proximity is available or undefined otherwise.</p>"}],"name":"get","longname":"CB_Device.Proximity.get","memberof":"CB_Device.Proximity","scope":"static"},{"comment":"/**\r\n\t * Normalizes the data gotten from the the [Proximity Sensor API]{@link https://w3.org/TR/proximity/} or the Proximity Sensor Events as [\"ondeviceproximity\"]{@link https://developer.mozilla.org/en-US/docs/Web/API/Window/ondeviceproximity} or [\"onuserproximity\"]{@link https://developer.mozilla.org/en-US/docs/Web/API/UserProximityEvent} to try to match the [Proximity Sensor API]{@link https://w3.org/TR/proximity/} and follow always the same rules as much as possible.\r\n\t * @function\r\n\t * @param {Event} e - The event object that we want to normalize.\r\n\t * @param {('change'|'reading'|'deviceproximity'|'userproximity')} eventName - The name of the event that we want to normalize. Case sensitive.\r\n\t * @param {ProximitySensor} [sensor] - [ProximitySensor]{@link https://w3.org/TR/proximity/#proximity-sensor-interface} object used by the [Proximity Sensor API]{@link https://w3.org/TR/proximity/}.\r\n\t * @returns {Event} Returns the given event object again but normalized (if possible).\r\n\t * @todo Normalize more differences between web clients.\r\n\t */","meta":{"range":[93809,95005],"filename":"CB_Device.js","lineno":1268,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\device","code":{"id":"astnode100061785","name":"CB_Device.Proximity.normalizeEvent","type":"FunctionExpression","paramnames":["e","eventName","sensor"]},"vars":{"e":"CB_Device.Proximity.normalizeEvent~e","e.value":"CB_Device.Proximity.normalizeEvent~e.value","e.near":"CB_Device.Proximity.normalizeEvent~e.near"}},"description":"<p>Normalizes the data gotten from the the [Proximity Sensor API]{@link https://w3.org/TR/proximity/} or the Proximity Sensor Events as [&quot;ondeviceproximity&quot;]{@link https://developer.mozilla.org/en-US/docs/Web/API/Window/ondeviceproximity} or [&quot;onuserproximity&quot;]{@link https://developer.mozilla.org/en-US/docs/Web/API/UserProximityEvent} to try to match the [Proximity Sensor API]{@link https://w3.org/TR/proximity/} and follow always the same rules as much as possible.</p>","kind":"function","params":[{"type":{"names":["Event"]},"description":"<p>The event object that we want to normalize.</p>","name":"e"},{"type":{"names":["'change'","'reading'","'deviceproximity'","'userproximity'"]},"description":"<p>The name of the event that we want to normalize. Case sensitive.</p>","name":"eventName"},{"type":{"names":["ProximitySensor"]},"optional":true,"description":"<p>[ProximitySensor]{@link https://w3.org/TR/proximity/#proximity-sensor-interface} object used by the [Proximity Sensor API]{@link https://w3.org/TR/proximity/}.</p>","name":"sensor"}],"returns":[{"type":{"names":["Event"]},"description":"<p>Returns the given event object again but normalized (if possible).</p>"}],"todo":["Normalize more differences between web clients."],"name":"normalizeEvent","longname":"CB_Device.Proximity.normalizeEvent","memberof":"CB_Device.Proximity","scope":"static"},{"comment":"/**\r\n * @file Arrays management. Contains the {@link CB_Arrays} static class.\r\n * @author Joan Alba Maldonado <workindalian@gmail.com>\r\n */","meta":{"filename":"CB_Arrays.js","lineno":1,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{}},"name":"CrossBase/general/CB_Arrays.js","kind":"file","description":"<p>Arrays management. Contains the {@link CB_Arrays} static class.</p>","preserveName":true,"author":["Joan Alba Maldonado <workindalian@gmail.com>"],"longname":"CrossBase/general/CB_Arrays.js","scope":"global"},{"comment":"/**\r\n * Static class to manage arrays. It will return itself if it is tried to be instantiated.\r\n * @namespace\r\n * @borrows CB_lastIndexOf as lastIndexOf\r\n * @borrows CB_indexOf as indexOf\r\n * @borrows CB_forEach as forEach\r\n * @borrows CB_isArray as isArray\r\n * @borrows CB_sizeOf as sizeOf\r\n * @borrows CB_replaceAll as replaceAll\r\n * @borrows CB_trim as trim\r\n * @borrows CB_rtrim as rtrim\r\n * @borrows CB_ltrim as ltrim\r\n * @borrows CB_combineArraysOrObjects as combine\r\n */","meta":{"range":[631,675],"filename":"CB_Arrays.js","lineno":21,"columnno":4,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100061886","name":"CB_Arrays","type":"FunctionExpression"}},"description":"<p>Static class to manage arrays. It will return itself if it is tried to be instantiated.</p>","kind":"namespace","borrowed":[{"from":"CB_lastIndexOf","as":"lastIndexOf"},{"from":"CB_indexOf","as":"indexOf"},{"from":"CB_forEach","as":"forEach"},{"from":"CB_isArray","as":"isArray"},{"from":"CB_sizeOf","as":"sizeOf"},{"from":"CB_replaceAll","as":"replaceAll"},{"from":"CB_trim","as":"trim"},{"from":"CB_rtrim","as":"rtrim"},{"from":"CB_ltrim","as":"ltrim"},{"from":"CB_combineArraysOrObjects","as":"combine"}],"name":"CB_Arrays","longname":"CB_Arrays","scope":"global","params":[]},{"comment":"/**\r\n\t * Alias for {@link CB_Arrays.sizeOf}.\r\n\t * @function CB_Arrays.sizeof\r\n\t * @see {@link CB_Arrays.sizeOf}\r\n\t */","meta":{"filename":"CB_Arrays.js","lineno":60,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{}},"description":"<p>Alias for {@link CB_Arrays.sizeOf}.</p>","kind":"function","name":"sizeof","see":["{@link CB_Arrays.sizeOf}"],"memberof":"CB_Arrays","longname":"CB_Arrays.sizeof","scope":"static"},{"comment":"/**\r\n\t * Alias for {@link CB_Arrays.sizeOf}.\r\n\t * @function CB_Arrays.count\r\n\t * @see {@link CB_Arrays.sizeOf}\r\n\t */","meta":{"filename":"CB_Arrays.js","lineno":65,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{}},"description":"<p>Alias for {@link CB_Arrays.sizeOf}.</p>","kind":"function","name":"count","see":["{@link CB_Arrays.sizeOf}"],"memberof":"CB_Arrays","longname":"CB_Arrays.count","scope":"static"},{"comment":"/**\r\n\t * Callback that is used for each iteration when looping the array. Being \"this\" the value itself.\r\n\t * @memberof CB_Arrays\r\n\t * @callback CB_Arrays.executeFunctionAll_ON_LOOP_CALLBACK\r\n\t * @param {*} item - Element (item) which belongs to the index which is being checked in the current iteration of the given array.\r\n\t * @param {integer} index - Index which is being checked in the current iteration.\r\n\t * @param {array} array - Whole array which is being looped.\r\n\t * @param {integer} delay - The \"delayBetweenEach\" used for this loop.\r\n\t * @returns {number} When used as a function to calculate the delay, it should return the delay desired as a number.\r\n\t */","meta":{"filename":"CB_Arrays.js","lineno":119,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{}},"description":"<p>Callback that is used for each iteration when looping the array. Being &quot;this&quot; the value itself.</p>","memberof":"CB_Arrays","kind":"typedef","name":"executeFunctionAll_ON_LOOP_CALLBACK","type":{"names":["function"]},"params":[{"type":{"names":["*"]},"description":"<p>Element (item) which belongs to the index which is being checked in the current iteration of the given array.</p>","name":"item"},{"type":{"names":["integer"]},"description":"<p>Index which is being checked in the current iteration.</p>","name":"index"},{"type":{"names":["array"]},"description":"<p>Whole array which is being looped.</p>","name":"array"},{"type":{"names":["integer"]},"description":"<p>The &quot;delayBetweenEach&quot; used for this loop.</p>","name":"delay"}],"returns":[{"type":{"names":["number"]},"description":"<p>When used as a function to calculate the delay, it should return the delay desired as a number.</p>"}],"longname":"CB_Arrays.executeFunctionAll_ON_LOOP_CALLBACK","scope":"static"},{"comment":"/**\r\n\t * Callback that is used when finishes all iterations after looping the array. Being \"this\" the array itself.\r\n\t * @memberof CB_Arrays\r\n\t * @callback CB_Arrays.executeFunctionAll_ON_FINISH_CALLBACK\r\n\t * @param {array} array - Whole array which was being looped.\r\n\t * @param {integer} itemsAffected - The number of times that the \"functionEach\" callback was called (the most likely, matches the number of elements unless they are undefined or null).\r\n\t * @param {integer} delayMaximum - The maximum \"delay\" used.\r\n\t */","meta":{"filename":"CB_Arrays.js","lineno":129,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{}},"description":"<p>Callback that is used when finishes all iterations after looping the array. Being &quot;this&quot; the array itself.</p>","memberof":"CB_Arrays","kind":"typedef","name":"executeFunctionAll_ON_FINISH_CALLBACK","type":{"names":["function"]},"params":[{"type":{"names":["array"]},"description":"<p>Whole array which was being looped.</p>","name":"array"},{"type":{"names":["integer"]},"description":"<p>The number of times that the &quot;functionEach&quot; callback was called (the most likely, matches the number of elements unless they are undefined or null).</p>","name":"itemsAffected"},{"type":{"names":["integer"]},"description":"<p>The maximum &quot;delay&quot; used.</p>","name":"delayMaximum"}],"longname":"CB_Arrays.executeFunctionAll_ON_FINISH_CALLBACK","scope":"static"},{"comment":"/**\r\n\t * Object used by the {@link CB_Arrays#executeFunctionAll} method when the \"returnSetTimeoutsArray\" parameter is set to true.\r\n\t * @memberof CB_Arrays\r\n\t * @typedef {Object} CB_Arrays.executeFunctionAll_OBJECT\r\n\t * @property {*} item - The element affected.\r\n\t * @property {integer} setTimeoutReturningValue - The returning value of calling the [setTimeout]{@link https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/setTimeout} internally or null if it was not called, depending on the \"delayBetweenEach\" parameter.\r\n\t * @property {number} setTimeoutDelay - The value used as the second parameter when calling the [setTimeout]{@link https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/setTimeout} internally or zero if it was not called, depending on the \"delayBetweenEach\" parameter.\r\n\t */","meta":{"filename":"CB_Arrays.js","lineno":137,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{}},"description":"<p>Object used by the {@link CB_Arrays#executeFunctionAll} method when the &quot;returnSetTimeoutsArray&quot; parameter is set to true.</p>","memberof":"CB_Arrays","kind":"typedef","name":"executeFunctionAll_OBJECT","type":{"names":["Object"]},"properties":[{"type":{"names":["*"]},"description":"<p>The element affected.</p>","name":"item"},{"type":{"names":["integer"]},"description":"<p>The returning value of calling the [setTimeout]{@link https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/setTimeout} internally or null if it was not called, depending on the &quot;delayBetweenEach&quot; parameter.</p>","name":"setTimeoutReturningValue"},{"type":{"names":["number"]},"description":"<p>The value used as the second parameter when calling the [setTimeout]{@link https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/setTimeout} internally or zero if it was not called, depending on the &quot;delayBetweenEach&quot; parameter.</p>","name":"setTimeoutDelay"}],"longname":"CB_Arrays.executeFunctionAll_OBJECT","scope":"static"},{"comment":"/**\r\n\t * Alias for {@link CB_Arrays#executeFunctionAll}.\r\n\t * @function CB_Arrays#executeAll\r\n\t * @see {@link CB_Arrays#executeFunctionAll}\r\n\t */","meta":{"filename":"CB_Arrays.js","lineno":146,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{}},"description":"<p>Alias for {@link CB_Arrays#executeFunctionAll}.</p>","kind":"function","name":"executeAll","see":["{@link CB_Arrays#executeFunctionAll}"],"memberof":"CB_Arrays","longname":"CB_Arrays#executeAll","scope":"instance"},{"comment":"/**\r\n\t * Alias for {@link CB_Arrays#executeFunctionAll}.\r\n\t * @function CB_Arrays#forEachDelay\r\n\t * @see {@link CB_Arrays#executeFunctionAll}\r\n\t */","meta":{"filename":"CB_Arrays.js","lineno":151,"columnno":2,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{}},"description":"<p>Alias for {@link CB_Arrays#executeFunctionAll}.</p>","kind":"function","name":"forEachDelay","see":["{@link CB_Arrays#executeFunctionAll}"],"memberof":"CB_Arrays","longname":"CB_Arrays#forEachDelay","scope":"instance"},{"comment":"/**\r\n\t * Performs a desired action, using the provided function, on all the existing elements of a given array. Elements which are undefined or null will be skipped without calling the \"functionEach\" function.\r\n\t * @function\r\n\t * @param {array} array - A numeric array containing the elements that we want to loop.\r\n\t * @param {CB_Arrays.executeFunctionAll_ON_LOOP_CALLBACK} functionEach - Function that will be called for each element of the given array. As the first parameter it receives the element of the \"array\" provided being looped, as the second parameter the position of this element in the \"array\" provided, the third parameter is the array being looped and the fourth parameter will be the \"delayBetweenEach\" being used, being \"this\" the element itself.\r\n\t * @param {number|CB_Arrays.executeFunctionAll_ON_LOOP_CALLBACK} [delayBetweenEach=0] - If a value greater than zero is used, it will be used as the delay desired between each call to the \"functionEach\" function (calling them using the [setTimeout]{@link https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/setTimeout} function internally). If not provided or the value is 0 (zero) or lower, each call to the \"functionEach\" function will be performed immediately one after the other. If a function is provided, it will be called with the same parameters as the \"functionEach\" function and its returning value will be used as the delay (executed every loop for each item).\r\n\t * @param {boolean} [returnSetTimeoutsArray=false] - Defines whether we want the method to return an integer or a numeric array with information of each [setTimeout]{@link https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/setTimeout} call. Returning an array with information of each [setTimeout]{@link https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/setTimeout} call is only useful when the [setTimeout]{@link https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/setTimeout} function is called internally, which happens when the \"delayBetweenEach\" parameter is greater than 0 (zero).\r\n\t * @param {boolean} [delayBetweenEachAffectsFirst=false] - If set to true, the desired delay (if any) will also affect the first call to the \"functionEach\" function.\r\n\t * @param {CB_Arrays.executeFunctionAll_ON_FINISH_CALLBACK} [functionFinish] - Function that will be called for when it has finished looping all the items. The first parameter will be the array which was looped, the second parameter will be the number of times that the \"functionEach\" callback was called (the most likely, matches the number of elements unless they are undefined or null), and the third parameter will be the maximum \"delay\" used, being \"this\" the array itself.\r\n\t * @returns {integer|array} If the \"returnSetTimeoutsArray\" parameter is set to false, it will return the number of calls to the \"functionEach\" function that were performed (which should be the same number as the elements given in the \"array\" parameter). Otherwise, if the \"returnSetTimeoutsArray\" is set to true, it will return a numeric array with a {@link CB_Arrays.executeFunctionAll_OBJECT} object for each element given. The length of this array will also be the number of calls to the \"functionEach\" function that were performed. Note that if a value greater than 0 (zero) for the \"delayBetweenEach\" parameter has been provided, perhaps not all calls of the \"functionEach\" function will have been performed yet when exiting this method because of the asynchronous nature of the [setTimeout]{@link https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/setTimeout} function.\r\n\t */","meta":{"range":[9778,12261],"filename":"CB_Arrays.js","lineno":167,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100062084","name":"CB_Arrays.executeFunctionAll","type":"AssignmentExpression","value":"CB_Arrays.executeAll","paramnames":[]}},"description":"<p>Performs a desired action, using the provided function, on all the existing elements of a given array. Elements which are undefined or null will be skipped without calling the &quot;functionEach&quot; function.</p>","kind":"function","params":[{"type":{"names":["array"]},"description":"<p>A numeric array containing the elements that we want to loop.</p>","name":"array"},{"type":{"names":["CB_Arrays.executeFunctionAll_ON_LOOP_CALLBACK"]},"description":"<p>Function that will be called for each element of the given array. As the first parameter it receives the element of the &quot;array&quot; provided being looped, as the second parameter the position of this element in the &quot;array&quot; provided, the third parameter is the array being looped and the fourth parameter will be the &quot;delayBetweenEach&quot; being used, being &quot;this&quot; the element itself.</p>","name":"functionEach"},{"type":{"names":["number","CB_Arrays.executeFunctionAll_ON_LOOP_CALLBACK"]},"optional":true,"defaultvalue":0,"description":"<p>If a value greater than zero is used, it will be used as the delay desired between each call to the &quot;functionEach&quot; function (calling them using the [setTimeout]{@link https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/setTimeout} function internally). If not provided or the value is 0 (zero) or lower, each call to the &quot;functionEach&quot; function will be performed immediately one after the other. If a function is provided, it will be called with the same parameters as the &quot;functionEach&quot; function and its returning value will be used as the delay (executed every loop for each item).</p>","name":"delayBetweenEach"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>Defines whether we want the method to return an integer or a numeric array with information of each [setTimeout]{@link https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/setTimeout} call. Returning an array with information of each [setTimeout]{@link https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/setTimeout} call is only useful when the [setTimeout]{@link https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/setTimeout} function is called internally, which happens when the &quot;delayBetweenEach&quot; parameter is greater than 0 (zero).</p>","name":"returnSetTimeoutsArray"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If set to true, the desired delay (if any) will also affect the first call to the &quot;functionEach&quot; function.</p>","name":"delayBetweenEachAffectsFirst"},{"type":{"names":["CB_Arrays.executeFunctionAll_ON_FINISH_CALLBACK"]},"optional":true,"description":"<p>Function that will be called for when it has finished looping all the items. The first parameter will be the array which was looped, the second parameter will be the number of times that the &quot;functionEach&quot; callback was called (the most likely, matches the number of elements unless they are undefined or null), and the third parameter will be the maximum &quot;delay&quot; used, being &quot;this&quot; the array itself.</p>","name":"functionFinish"}],"returns":[{"type":{"names":["integer","array"]},"description":"<p>If the &quot;returnSetTimeoutsArray&quot; parameter is set to false, it will return the number of calls to the &quot;functionEach&quot; function that were performed (which should be the same number as the elements given in the &quot;array&quot; parameter). Otherwise, if the &quot;returnSetTimeoutsArray&quot; is set to true, it will return a numeric array with a {@link CB_Arrays.executeFunctionAll_OBJECT} object for each element given. The length of this array will also be the number of calls to the &quot;functionEach&quot; function that were performed. Note that if a value greater than 0 (zero) for the &quot;delayBetweenEach&quot; parameter has been provided, perhaps not all calls of the &quot;functionEach&quot; function will have been performed yet when exiting this method because of the asynchronous nature of the [setTimeout]{@link https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/setTimeout} function.</p>"}],"name":"executeFunctionAll","longname":"CB_Arrays.executeFunctionAll","memberof":"CB_Arrays","scope":"static"},{"comment":"/**\r\n\t * Returns an array copied from the given one. It will also make a copy of the arrays found in the values (if any), calling itself recursively.\r\n\t * @function\r\n\t * @param {array} array - The array whose values we want to copy.\r\n\t * @returns {object} Returns an array copied from the given one. Returns an empty array if the given \"array\" was not an array.\r\n\t */","meta":{"range":[12641,12956],"filename":"CB_Arrays.js","lineno":237,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100062373","name":"CB_Arrays.copy","type":"FunctionExpression","paramnames":["array"]},"vars":{"newArray":"CB_Arrays.copy~newArray","x":"CB_Arrays.copy~x","newArray[undefined]":"CB_Arrays.copy~newArray.undefined]"}},"description":"<p>Returns an array copied from the given one. It will also make a copy of the arrays found in the values (if any), calling itself recursively.</p>","kind":"function","params":[{"type":{"names":["array"]},"description":"<p>The array whose values we want to copy.</p>","name":"array"}],"returns":[{"type":{"names":["object"]},"description":"<p>Returns an array copied from the given one. Returns an empty array if the given &quot;array&quot; was not an array.</p>"}],"name":"copy","longname":"CB_Arrays.copy","memberof":"CB_Arrays","scope":"static"},{"comment":"/**\r\n\t * Alias for {@link CB_Arrays.insertElement}.\r\n\t * @function CB_Arrays.insert\r\n\t * @see {@link CB_Arrays.insertElement}\r\n\t */","meta":{"filename":"CB_Arrays.js","lineno":250,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{}},"description":"<p>Alias for {@link CB_Arrays.insertElement}.</p>","kind":"function","name":"insert","see":["{@link CB_Arrays.insertElement}"],"memberof":"CB_Arrays","longname":"CB_Arrays.insert","scope":"static"},{"comment":"/**\r\n\t * Alias for {@link CB_Arrays.insertElement}.\r\n\t * @function CB_Arrays.insertElementByPosition\r\n\t * @see {@link CB_Arrays.insertElement}\r\n\t */","meta":{"filename":"CB_Arrays.js","lineno":255,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{}},"description":"<p>Alias for {@link CB_Arrays.insertElement}.</p>","kind":"function","name":"insertElementByPosition","see":["{@link CB_Arrays.insertElement}"],"memberof":"CB_Arrays","longname":"CB_Arrays.insertElementByPosition","scope":"static"},{"comment":"/**\r\n\t * Inserts an element in the desired position of a given an array. Elements which are placed after it will be moved a position to the right (increasing their index).\r\n\t * @function\r\n\t * @param {array} array - The array whose element we want to delete.\r\n\t * @param {integer} [index=0] - Position of the element in the given array that we want to remove.\r\n\t * @param {*} item - Element (item) which belongs to the index which is being checked in the current iteration of the given array.\r\n\t * @param {CB_Arrays.removeDuplicated_PURGE_FUNCTION} [onInsert] - Function to call if the element is inserted, after inserting it.\r\n\t * @returns {array} Returns the new array (with the element inserted if it was possible). If no valid array is given, it will return an empty array.\r\n\t */","meta":{"range":[14045,14549],"filename":"CB_Arrays.js","lineno":269,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100062431","name":"CB_Arrays.insertElement","type":"AssignmentExpression","value":"CB_Arrays.insertElementByPosition","paramnames":[]}},"description":"<p>Inserts an element in the desired position of a given an array. Elements which are placed after it will be moved a position to the right (increasing their index).</p>","kind":"function","params":[{"type":{"names":["array"]},"description":"<p>The array whose element we want to delete.</p>","name":"array"},{"type":{"names":["integer"]},"optional":true,"defaultvalue":0,"description":"<p>Position of the element in the given array that we want to remove.</p>","name":"index"},{"type":{"names":["*"]},"description":"<p>Element (item) which belongs to the index which is being checked in the current iteration of the given array.</p>","name":"item"},{"type":{"names":["CB_Arrays.removeDuplicated_PURGE_FUNCTION"]},"optional":true,"description":"<p>Function to call if the element is inserted, after inserting it.</p>","name":"onInsert"}],"returns":[{"type":{"names":["array"]},"description":"<p>Returns the new array (with the element inserted if it was possible). If no valid array is given, it will return an empty array.</p>"}],"name":"insertElement","longname":"CB_Arrays.insertElement","memberof":"CB_Arrays","scope":"static"},{"comment":"/**\r\n\t * Callback that is used as the \"purgeFunction\" parameter of the {@link CB_Arrays.removeDuplicated} function. Being \"this\" the current element (item). It should return false when we want to keep the value or true otherwise.\r\n\t * @memberof CB_Arrays\r\n\t * @callback CB_Arrays.removeDuplicated_PURGE_FUNCTION\r\n\t * @param {*} item - Element (item) which belongs to the index which is being checked in the current iteration used in {@link CB_Arrays.removeDuplicated}.\r\n\t * @param {integer} index - Index which is being checked in the current iteration used in {@link CB_Arrays.removeDuplicated}.\r\n\t * @param {array} array - Whole array which is being checked.\r\n\t * @returns {boolean} It should return false when we want to keep the value or true otherwise.\r\n\t */","meta":{"filename":"CB_Arrays.js","lineno":282,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{}},"description":"<p>Callback that is used as the &quot;purgeFunction&quot; parameter of the {@link CB_Arrays.removeDuplicated} function. Being &quot;this&quot; the current element (item). It should return false when we want to keep the value or true otherwise.</p>","memberof":"CB_Arrays","kind":"typedef","name":"removeDuplicated_PURGE_FUNCTION","type":{"names":["function"]},"params":[{"type":{"names":["*"]},"description":"<p>Element (item) which belongs to the index which is being checked in the current iteration used in {@link CB_Arrays.removeDuplicated}.</p>","name":"item"},{"type":{"names":["integer"]},"description":"<p>Index which is being checked in the current iteration used in {@link CB_Arrays.removeDuplicated}.</p>","name":"index"},{"type":{"names":["array"]},"description":"<p>Whole array which is being checked.</p>","name":"array"}],"returns":[{"type":{"names":["boolean"]},"description":"<p>It should return false when we want to keep the value or true otherwise.</p>"}],"longname":"CB_Arrays.removeDuplicated_PURGE_FUNCTION","scope":"static"},{"comment":"/**\r\n\t * Deletes duplicated and/or not desired values (with a checking function to purge) from a numeric array. Values can be of any type. Internally, loops through the given array backwards (from the last index to the first one).\r\n\t * @function\r\n\t * @param {array} array - The array whose values we want to purge.\r\n\t * @param {CB_Arrays.removeDuplicated_PURGE_FUNCTION} [purgeFunction] - Callback that will be called for each item, being \"this\" the current item. It should return false when we want to keep the value or true otherwise. If the \"ignoreDuplicated\" parameter is set to true, all duplicated elements will be removed regardless of the returning value of the \"purgeFunction\" function.\r\n\t * @param {boolean} [ignoreDuplicated=false] - If it is set to true, it will keep duplicated values (unless the given \"purgeFunction\" purge them).\r\n\t * @returns {array} Returns the array purged. If no valid array is given, it will return an empty array.\r\n\t */","meta":{"range":[16298,17102],"filename":"CB_Arrays.js","lineno":300,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100062521","name":"CB_Arrays.removeDuplicated","type":"FunctionExpression","paramnames":["array","purgeFunction","ignoreDuplicated"]},"vars":{"keysDuplicatedChecker":"CB_Arrays.removeDuplicated~keysDuplicatedChecker","x":"CB_Arrays.removeDuplicated~x","array[undefined]":null,"keysDuplicatedChecker[undefined]":"CB_Arrays.removeDuplicated~keysDuplicatedChecker.undefined]"}},"description":"<p>Deletes duplicated and/or not desired values (with a checking function to purge) from a numeric array. Values can be of any type. Internally, loops through the given array backwards (from the last index to the first one).</p>","kind":"function","params":[{"type":{"names":["array"]},"description":"<p>The array whose values we want to purge.</p>","name":"array"},{"type":{"names":["CB_Arrays.removeDuplicated_PURGE_FUNCTION"]},"optional":true,"description":"<p>Callback that will be called for each item, being &quot;this&quot; the current item. It should return false when we want to keep the value or true otherwise. If the &quot;ignoreDuplicated&quot; parameter is set to true, all duplicated elements will be removed regardless of the returning value of the &quot;purgeFunction&quot; function.</p>","name":"purgeFunction"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If it is set to true, it will keep duplicated values (unless the given &quot;purgeFunction&quot; purge them).</p>","name":"ignoreDuplicated"}],"returns":[{"type":{"names":["array"]},"description":"<p>Returns the array purged. If no valid array is given, it will return an empty array.</p>"}],"name":"removeDuplicated","longname":"CB_Arrays.removeDuplicated","memberof":"CB_Arrays","scope":"static"},{"comment":"/**\r\n\t * Alias for {@link CB_Arrays.removeElementByPosition}.\r\n\t * @function CB_Arrays.removeElementByIndex\r\n\t * @see {@link CB_Arrays.removeElementByPosition}\r\n\t */","meta":{"filename":"CB_Arrays.js","lineno":320,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{}},"description":"<p>Alias for {@link CB_Arrays.removeElementByPosition}.</p>","kind":"function","name":"removeElementByIndex","see":["{@link CB_Arrays.removeElementByPosition}"],"memberof":"CB_Arrays","longname":"CB_Arrays.removeElementByIndex","scope":"static"},{"comment":"/**\r\n\t * Deletes an element from an array which is placed in the desired position. Elements which were after it will be moved a position to the left (decreasing their index).\r\n\t * @function\r\n\t * @param {array} array - The array whose element we want to delete.\r\n\t * @param {integer} [index=0] - Position of the element in the given array that we want to remove.\r\n\t * @param {CB_Arrays.removeDuplicated_PURGE_FUNCTION} [onRemove] - Function to call if the element is removed, before removing it.\r\n\t * @returns {array} Returns the new array (with the element removed if it was possible). If no valid array is given, it will return an empty array.\r\n\t */","meta":{"range":[17937,18410],"filename":"CB_Arrays.js","lineno":333,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100062616","name":"CB_Arrays.removeElementByPosition","type":"AssignmentExpression","value":"CB_Arrays.removeElementByIndex","paramnames":[]}},"description":"<p>Deletes an element from an array which is placed in the desired position. Elements which were after it will be moved a position to the left (decreasing their index).</p>","kind":"function","params":[{"type":{"names":["array"]},"description":"<p>The array whose element we want to delete.</p>","name":"array"},{"type":{"names":["integer"]},"optional":true,"defaultvalue":0,"description":"<p>Position of the element in the given array that we want to remove.</p>","name":"index"},{"type":{"names":["CB_Arrays.removeDuplicated_PURGE_FUNCTION"]},"optional":true,"description":"<p>Function to call if the element is removed, before removing it.</p>","name":"onRemove"}],"returns":[{"type":{"names":["array"]},"description":"<p>Returns the new array (with the element removed if it was possible). If no valid array is given, it will return an empty array.</p>"}],"name":"removeElementByPosition","longname":"CB_Arrays.removeElementByPosition","memberof":"CB_Arrays","scope":"static"},{"comment":"/**\r\n\t * Deletes a given element from an array. All occurrences will be deleted. Elements which were after a removed element will be moved a position to the left (decreasing their index).\r\n\t * @function\r\n\t * @param {array} array - The array whose element we want to delete.\r\n\t * @param {*} [element=undefined] - The element we want to remove. All occurrences will be deleted. Note that it is type sensitive.\r\n\t * @param {CB_Arrays.removeDuplicated_PURGE_FUNCTION} [onRemove] - Function to call if the element is removed, before removing it.\r\n\t * @returns {array} Returns the new array (with the element removed if it was possible). If no valid array is given, it will return an empty array.\r\n\t */","meta":{"range":[19121,19409],"filename":"CB_Arrays.js","lineno":350,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100062691","name":"CB_Arrays.removeElement","type":"FunctionExpression","paramnames":["array","element"]},"vars":{"":null}},"description":"<p>Deletes a given element from an array. All occurrences will be deleted. Elements which were after a removed element will be moved a position to the left (decreasing their index).</p>","kind":"function","params":[{"type":{"names":["array"]},"description":"<p>The array whose element we want to delete.</p>","name":"array"},{"type":{"names":["*"]},"optional":true,"description":"<p>The element we want to remove. All occurrences will be deleted. Note that it is type sensitive.</p>","name":"element"},{"type":{"names":["CB_Arrays.removeDuplicated_PURGE_FUNCTION"]},"optional":true,"description":"<p>Function to call if the element is removed, before removing it.</p>","name":"onRemove"}],"returns":[{"type":{"names":["array"]},"description":"<p>Returns the new array (with the element removed if it was possible). If no valid array is given, it will return an empty array.</p>"}],"name":"removeElement","longname":"CB_Arrays.removeElement","memberof":"CB_Arrays","scope":"static"},{"comment":"/**\r\n\t * Deletes the given elements from an array. All occurrences will be deleted. Elements which were after a removed element will be moved a position to the left (decreasing their index).\r\n\t * @function\r\n\t * @param {array} array - The array whose element we want to delete.\r\n\t * @param {array} elements - An array with the elements we want to remove. All occurrences will be deleted. Note that it is type sensitive.\r\n\t * @returns {array} Returns the new array (with the element removed if it was possible). If no valid array is given, it will return an empty array.\r\n\t */","meta":{"range":[19997,20259],"filename":"CB_Arrays.js","lineno":363,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100062736","name":"CB_Arrays.removeElements","type":"FunctionExpression","paramnames":["array","elements"]},"vars":{"elements":"CB_Arrays.removeElements~elements","":null}},"description":"<p>Deletes the given elements from an array. All occurrences will be deleted. Elements which were after a removed element will be moved a position to the left (decreasing their index).</p>","kind":"function","params":[{"type":{"names":["array"]},"description":"<p>The array whose element we want to delete.</p>","name":"array"},{"type":{"names":["array"]},"description":"<p>An array with the elements we want to remove. All occurrences will be deleted. Note that it is type sensitive.</p>","name":"elements"}],"returns":[{"type":{"names":["array"]},"description":"<p>Returns the new array (with the element removed if it was possible). If no valid array is given, it will return an empty array.</p>"}],"name":"removeElements","longname":"CB_Arrays.removeElements","memberof":"CB_Arrays","scope":"static"},{"comment":"/**\r\n\t * Sorts the values of an array (using the native [Array.sort]{@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort} method).\r\n\t * @function\r\n\t * @param {array} array - The array whose elements we want to sort.\r\n\t * @param {boolean} [reversed=false] - Defines whether to sort in the reverse order or not. Only applies when comparingFunction is not provided.\r\n\t * @param {function} [comparingFunction] - Comparing function with the same rules as the native [Array.sort]{@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort} method. If provided, the \"reversed\" parameter will be ignored.\r\n\t * @returns {array} Returns the array ordered. If another value which is not an array is given, it will be returned again.\r\n\t */","meta":{"range":[21089,21500],"filename":"CB_Arrays.js","lineno":379,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100062778","name":"CB_Arrays.sort","type":"FunctionExpression","paramnames":["array","reversed","comparingFunction"]},"vars":{"comparingFunction":"CB_Arrays.sort~comparingFunction","":null}},"description":"<p>Sorts the values of an array (using the native [Array.sort]{@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort} method).</p>","kind":"function","params":[{"type":{"names":["array"]},"description":"<p>The array whose elements we want to sort.</p>","name":"array"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>Defines whether to sort in the reverse order or not. Only applies when comparingFunction is not provided.</p>","name":"reversed"},{"type":{"names":["function"]},"optional":true,"description":"<p>Comparing function with the same rules as the native [Array.sort]{@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort} method. If provided, the &quot;reversed&quot; parameter will be ignored.</p>","name":"comparingFunction"}],"returns":[{"type":{"names":["array"]},"description":"<p>Returns the array ordered. If another value which is not an array is given, it will be returned again.</p>"}],"name":"sort","longname":"CB_Arrays.sort","memberof":"CB_Arrays","scope":"static"},{"comment":"/**\r\n\t * Sorts an array using the [bubble sort (sinking sort) method]{@link https://en.wikipedia.org/wiki/Bubble_sort}. Internally, it uses the \">\" operator for comparing values as they will be treated as numbers.\r\n\t * @function\r\n\t * @param {array} array - The array whose elements we want to sort.\r\n\t * @param {boolean} [reversed=false] - Defines whether to sort in the reverse order or not.\r\n\t * @todo Think about accepting a comparing function (as the \"sort\" method).\r\n\t * @returns {array} Returns the array ordered. If another value which is not an array is given, it will be returned again.\r\n\t */","meta":{"range":[22117,22676],"filename":"CB_Arrays.js","lineno":399,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100062845","name":"CB_Arrays.bsort","type":"FunctionExpression","paramnames":["array","reversed","comparingFunction"]},"vars":{"arrayLength":"CB_Arrays.bsort~arrayLength","x":"CB_Arrays.bsort~x","y":"CB_Arrays.bsort~y","aux":"CB_Arrays.bsort~aux","array[undefined]":null}},"description":"<p>Sorts an array using the [bubble sort (sinking sort) method]{@link https://en.wikipedia.org/wiki/Bubble_sort}. Internally, it uses the &quot;&gt;&quot; operator for comparing values as they will be treated as numbers.</p>","kind":"function","params":[{"type":{"names":["array"]},"description":"<p>The array whose elements we want to sort.</p>","name":"array"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>Defines whether to sort in the reverse order or not.</p>","name":"reversed"}],"todo":["Think about accepting a comparing function (as the \"sort\" method)."],"returns":[{"type":{"names":["array"]},"description":"<p>Returns the array ordered. If another value which is not an array is given, it will be returned again.</p>"}],"name":"bsort","longname":"CB_Arrays.bsort","memberof":"CB_Arrays","scope":"static"},{"comment":"/**\r\n * @file Web client (browser or engine) management. Contains the {@link CB_Client} static class.\r\n * @author Joan Alba Maldonado <workindalian@gmail.com>\r\n */","meta":{"filename":"CB_Client.js","lineno":1,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{}},"name":"CrossBase/general/CB_Client.js","kind":"file","description":"<p>Web client (browser or engine) management. Contains the {@link CB_Client} static class.</p>","preserveName":true,"author":["Joan Alba Maldonado <workindalian@gmail.com>"],"longname":"CrossBase/general/CB_Client.js","scope":"global"},{"comment":"/**\r\n * Static class to manage the current client. It will return itself if it is tried to be instantiated. It can use [BrowserDetect]{@link https://quirksmode.org/js/detect.html} ([source code rescued]{@link https://gist.github.com/mitchellhislop/2018348}).\r\n * @namespace\r\n * @todo Think about implementing a getDocumentParents function (similar to {@link CB_Client.getWindowParents}).\r\n * @todo Think about implementing \"onClose\" event (to fire when app/web is going to be closed).\r\n */","meta":{"range":[666,710],"filename":"CB_Client.js","lineno":13,"columnno":4,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100063163","name":"CB_Client","type":"FunctionExpression"}},"description":"<p>Static class to manage the current client. It will return itself if it is tried to be instantiated. It can use [BrowserDetect]{@link https://quirksmode.org/js/detect.html} ([source code rescued]{@link https://gist.github.com/mitchellhislop/2018348}).</p>","kind":"namespace","todo":["Think about implementing a getDocumentParents function (similar to {@link CB_Client.getWindowParents}).","Think about implementing \"onClose\" event (to fire when app/web is going to be closed)."],"name":"CB_Client","longname":"CB_Client","scope":"global","params":[]},{"comment":"/**\r\n\t * Returns the most preferred language as a string.\r\n\t * @function\r\n\t * @param {boolean} [allowNavigatorLanguages={@link CB_Configuration.CrossBase.CB_Client_allowNavigatorLanguages_DEFAULT}] - Defines whether to allow using the [window.navigator.languages]{@link https://developer.mozilla.org/en-US/docs/Web/API/NavigatorLanguage/languages} property (if not available, it will proceed normally).\r\n\t * @param {boolean} [PHPAcceptedLanguagesFirst={@link CB_Configuration.CrossBase.CB_Client_PHPAcceptedLanguagesFirst_DEFAULT}] - If it is set to true, it will try to return the accepted languages found out by [PHP]{@link https://en.wikipedia.org/wiki/PHP} (if [PHP]{@link https://en.wikipedia.org/wiki/PHP} is available) in [$_SERVER]{@link http://php.net/manual/en/reserved.variables.server.php}['HTTP_ACCEPT_LANGUAGE'] or it will proceed normally otherwise.\r\n\t * @returns {string}\r\n\t * @todo Use other back-end ways to calculate the language (using Node.js, for example).\r\n\t */","meta":{"range":[2315,2502],"filename":"CB_Client.js","lineno":46,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100063217","name":"CB_Client.getLanguage","type":"FunctionExpression","paramnames":["allowNavigatorLanguages","PHPAcceptedLanguagesFirst"]}},"description":"<p>Returns the most preferred language as a string.</p>","kind":"function","params":[{"type":{"names":["boolean"]},"optional":true,"defaultvalue":"{@link CB_Configuration.CrossBase.CB_Client_allowNavigatorLanguages_DEFAULT}","description":"<p>Defines whether to allow using the [window.navigator.languages]{@link https://developer.mozilla.org/en-US/docs/Web/API/NavigatorLanguage/languages} property (if not available, it will proceed normally).</p>","name":"allowNavigatorLanguages"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":"{@link CB_Configuration.CrossBase.CB_Client_PHPAcceptedLanguagesFirst_DEFAULT}","description":"<p>If it is set to true, it will try to return the accepted languages found out by [PHP]{@link https://en.wikipedia.org/wiki/PHP} (if [PHP]{@link https://en.wikipedia.org/wiki/PHP} is available) in [$_SERVER]{@link http://php.net/manual/en/reserved.variables.server.php}['HTTP_ACCEPT_LANGUAGE'] or it will proceed normally otherwise.</p>","name":"PHPAcceptedLanguagesFirst"}],"returns":[{"type":{"names":["string"]}}],"todo":["Use other back-end ways to calculate the language (using Node.js, for example)."],"name":"getLanguage","longname":"CB_Client.getLanguage","memberof":"CB_Client","scope":"static"},{"comment":"/**\r\n\t * Returns the most preferred languages as an array of strings.\r\n\t * @function\r\n\t * @param {boolean} [allowNavigatorLanguages={@link CB_Configuration.CrossBase.CB_Client_allowNavigatorLanguages_DEFAULT}] - Defines whether to allow using the [window.navigator.languages]{@link https://developer.mozilla.org/en-US/docs/Web/API/NavigatorLanguage/languages} property (if not available, it will proceed normally).\r\n\t * @param {boolean} [PHPAcceptedLanguagesFirst={@link CB_Configuration.CrossBase.CB_Client_PHPAcceptedLanguagesFirst_DEFAULT}] - If it is set to true, it will try to return the accepted languages found out by [PHP]{@link https://en.wikipedia.org/wiki/PHP} (if [PHP]{@link https://en.wikipedia.org/wiki/PHP} is available) in [$_SERVER]{@link http://php.net/manual/en/reserved.variables.server.php}['HTTP_ACCEPT_LANGUAGE'] or it will proceed normally otherwise.\r\n\t * @returns {array}\r\n\t * @todo Use other back-end ways to calculate languages (using Node.js, for example).\r\n\t */","meta":{"range":[5189,5378],"filename":"CB_Client.js","lineno":77,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100063457","name":"CB_Client.getLanguages","type":"FunctionExpression","paramnames":["allowNavigatorLanguages","PHPAcceptedLanguagesFirst"]}},"description":"<p>Returns the most preferred languages as an array of strings.</p>","kind":"function","params":[{"type":{"names":["boolean"]},"optional":true,"defaultvalue":"{@link CB_Configuration.CrossBase.CB_Client_allowNavigatorLanguages_DEFAULT}","description":"<p>Defines whether to allow using the [window.navigator.languages]{@link https://developer.mozilla.org/en-US/docs/Web/API/NavigatorLanguage/languages} property (if not available, it will proceed normally).</p>","name":"allowNavigatorLanguages"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":"{@link CB_Configuration.CrossBase.CB_Client_PHPAcceptedLanguagesFirst_DEFAULT}","description":"<p>If it is set to true, it will try to return the accepted languages found out by [PHP]{@link https://en.wikipedia.org/wiki/PHP} (if [PHP]{@link https://en.wikipedia.org/wiki/PHP} is available) in [$_SERVER]{@link http://php.net/manual/en/reserved.variables.server.php}['HTTP_ACCEPT_LANGUAGE'] or it will proceed normally otherwise.</p>","name":"PHPAcceptedLanguagesFirst"}],"returns":[{"type":{"names":["array"]}}],"todo":["Use other back-end ways to calculate languages (using Node.js, for example)."],"name":"getLanguages","longname":"CB_Client.getLanguages","memberof":"CB_Client","scope":"static"},{"comment":"/**\r\n\t * Sets a function to execute when the [languagechange]{@link https://developer.mozilla.org/en-US/docs/Web/Events/languagechange} event is fired (only for some web clients) or removes it.\r\n\t * @function\r\n\t * @param {function|null} eventFunction - Function that represents the event listener that will be called when the event is fired. If a null value is used, the event will be removed.\r\n\t * @param {boolean} [keepOldFunction=true] - Defines whether to also keep the previous listeners or remove them otherwise.\r\n\t * @param {boolean} [useCapture=false] - Defines whether the event we want to add will use capture or not. This parameter will be effective only if the current client supports the [addEventListener]{@link https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener} method and will be used as its third parameter.\r\n\t */","meta":{"range":[6252,6436],"filename":"CB_Client.js","lineno":90,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100063473","name":"CB_Client.onLanguageChanges","type":"FunctionExpression","paramnames":["eventFunction","keepOldFunction","useCapture"]}},"description":"<p>Sets a function to execute when the [languagechange]{@link https://developer.mozilla.org/en-US/docs/Web/Events/languagechange} event is fired (only for some web clients) or removes it.</p>","kind":"function","params":[{"type":{"names":["function","null"]},"description":"<p>Function that represents the event listener that will be called when the event is fired. If a null value is used, the event will be removed.</p>","name":"eventFunction"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":true,"description":"<p>Defines whether to also keep the previous listeners or remove them otherwise.</p>","name":"keepOldFunction"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>Defines whether the event we want to add will use capture or not. This parameter will be effective only if the current client supports the [addEventListener]{@link https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener} method and will be used as its third parameter.</p>","name":"useCapture"}],"name":"onLanguageChanges","longname":"CB_Client.onLanguageChanges","memberof":"CB_Client","scope":"static"},{"comment":"/**\r\n\t * Alias for {@link CB_Client.get}.\r\n\t * @function CB_Client.getBrowser\r\n\t * @see {@link CB_Client.get}\r\n\t */","meta":{"filename":"CB_Client.js","lineno":96,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{}},"description":"<p>Alias for {@link CB_Client.get}.</p>","kind":"function","name":"getBrowser","see":["{@link CB_Client.get}"],"memberof":"CB_Client","longname":"CB_Client.getBrowser","scope":"static"},{"comment":"/**\r\n\t * Returns the current web client (if possible) as a string. It uses [BrowserDetect]{@link https://quirksmode.org/js/detect.html} ([source code rescued]{@link https://gist.github.com/mitchellhislop/2018348}) internally.\r\n\t * @function\r\n\t * @returns {string}\r\n\t */","meta":{"range":[6839,6929],"filename":"CB_Client.js","lineno":106,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100063493","name":"CB_Client.get","type":"AssignmentExpression","value":"CB_Client.getBrowser","paramnames":[]}},"description":"<p>Returns the current web client (if possible) as a string. It uses [BrowserDetect]{@link https://quirksmode.org/js/detect.html} ([source code rescued]{@link https://gist.github.com/mitchellhislop/2018348}) internally.</p>","kind":"function","returns":[{"type":{"names":["string"]}}],"name":"get","longname":"CB_Client.get","memberof":"CB_Client","scope":"static"},{"comment":"/**\r\n\t * Alias for {@link CB_Client.getVersion}.\r\n\t * @function CB_Client.getBrowserVersion\r\n\t * @see {@link CB_Client.getVersion}\r\n\t */","meta":{"filename":"CB_Client.js","lineno":112,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{}},"description":"<p>Alias for {@link CB_Client.getVersion}.</p>","kind":"function","name":"getBrowserVersion","see":["{@link CB_Client.getVersion}"],"memberof":"CB_Client","longname":"CB_Client.getBrowserVersion","scope":"static"},{"comment":"/**\r\n\t * Returns the current web client version (if possible) as a string. It uses [BrowserDetect]{@link https://quirksmode.org/js/detect.html} ([source code rescued]{@link https://gist.github.com/mitchellhislop/2018348}) internally.\r\n\t * @function\r\n\t * @returns {string}\r\n\t */","meta":{"range":[7360,7469],"filename":"CB_Client.js","lineno":122,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100063508","name":"CB_Client.getVersion","type":"AssignmentExpression","value":"CB_Client.getBrowserVersion","paramnames":[]}},"description":"<p>Returns the current web client version (if possible) as a string. It uses [BrowserDetect]{@link https://quirksmode.org/js/detect.html} ([source code rescued]{@link https://gist.github.com/mitchellhislop/2018348}) internally.</p>","kind":"function","returns":[{"type":{"names":["string"]}}],"name":"getVersion","longname":"CB_Client.getVersion","memberof":"CB_Client","scope":"static"},{"comment":"/**\r\n\t * Alias for {@link CB_Client.getVersionMain}.\r\n\t * @function CB_Client.getBrowserVersionMain\r\n\t * @see {@link CB_Client.getVersionMain}\r\n\t */","meta":{"filename":"CB_Client.js","lineno":128,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{}},"description":"<p>Alias for {@link CB_Client.getVersionMain}.</p>","kind":"function","name":"getBrowserVersionMain","see":["{@link CB_Client.getVersionMain}"],"memberof":"CB_Client","longname":"CB_Client.getBrowserVersionMain","scope":"static"},{"comment":"/**\r\n\t * Returns the current web client main version (first number), if possible, as an integer. It uses [BrowserDetect]{@link https://quirksmode.org/js/detect.html} ([source code rescued]{@link https://gist.github.com/mitchellhislop/2018348}) internally.\r\n\t * @function\r\n\t * @returns {integer}\r\n\t */","meta":{"range":[7935,8079],"filename":"CB_Client.js","lineno":138,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100063525","name":"CB_Client.getVersionMain","type":"AssignmentExpression","value":"CB_Client.getBrowserVersionMain","paramnames":[]}},"description":"<p>Returns the current web client main version (first number), if possible, as an integer. It uses [BrowserDetect]{@link https://quirksmode.org/js/detect.html} ([source code rescued]{@link https://gist.github.com/mitchellhislop/2018348}) internally.</p>","kind":"function","returns":[{"type":{"names":["integer"]}}],"name":"getVersionMain","longname":"CB_Client.getVersionMain","memberof":"CB_Client","scope":"static"},{"comment":"/**\r\n\t * Returns all the [window]{@link https://developer.mozilla.org/en-US/docs/Web/API/Window} objects, parents and last son (main one) in an array (with the topmost parent in the highest index). Useful in case the script is running in an [iframe]{@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe} or more.\r\n\t * @function\r\n\t * @returns {array}\r\n\t */","meta":{"range":[8580,9503],"filename":"CB_Client.js","lineno":150,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100063553","name":"CB_Client.getWindowParents","type":"FunctionExpression","paramnames":[]},"vars":{"windowParents":"CB_Client.getWindowParents~windowParents","currentParent":"CB_Client.getWindowParents~currentParent","windowParents[undefined]":"CB_Client.getWindowParents~windowParents.undefined]","CB_Client._getWindowParentsReturnCache":"CB_Client._getWindowParentsReturnCache"}},"description":"<p>Returns all the [window]{@link https://developer.mozilla.org/en-US/docs/Web/API/Window} objects, parents and last son (main one) in an array (with the topmost parent in the highest index). Useful in case the script is running in an [iframe]{@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe} or more.</p>","kind":"function","returns":[{"type":{"names":["array"]}}],"name":"getWindowParents","longname":"CB_Client.getWindowParents","memberof":"CB_Client","scope":"static"},{"comment":"/**\r\n\t * Returns the [window]{@link https://developer.mozilla.org/en-US/docs/Web/API/Window} object of the first parent (the topmost one). Useful in case the script is running in an [iframe]{@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe} or more.\r\n\t * @function\r\n\t * @returns {Object}\r\n\t */","meta":{"range":[9944,10969],"filename":"CB_Client.js","lineno":185,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100063648","name":"CB_Client.getWindowBase","type":"FunctionExpression","paramnames":[]},"vars":{"windowBase":"CB_Client.getWindowBase~windowBase","windowParents":"CB_Client.getWindowBase~windowParents","CB_Client._getWindowBaseReturnCache":"CB_Client._getWindowBaseReturnCache"}},"description":"<p>Returns the [window]{@link https://developer.mozilla.org/en-US/docs/Web/API/Window} object of the first parent (the topmost one). Useful in case the script is running in an [iframe]{@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe} or more.</p>","kind":"function","returns":[{"type":{"names":["Object"]}}],"name":"getWindowBase","longname":"CB_Client.getWindowBase","memberof":"CB_Client","scope":"static"},{"comment":"/**\r\n\t * Returns the [window]{@link https://developer.mozilla.org/en-US/docs/Web/API/Window} object (having in mind whether the script is running in one [iframe]{@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe} or more, if we want).\r\n\t * @function\r\n\t * @param {boolean} [mindIframes={@link CB_Configuration.CrossBase.MIND_IFRAMES}] - If set to true, it will try to get and return the topmost [window]{@link https://developer.mozilla.org/en-US/docs/Web/API/Window} object. Useful in case the script is running in an [iframe]{@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe} or more.\r\n\t * @returns {Object}\r\n\t */","meta":{"range":[11748,12479],"filename":"CB_Client.js","lineno":222,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100063732","name":"CB_Client.getWindow","type":"FunctionExpression","paramnames":["mindIframes"]},"vars":{"mindIframes":"CB_Client.getWindow~mindIframes","CB_Client._getWindowReturnCache":"CB_Client._getWindowReturnCache"}},"description":"<p>Returns the [window]{@link https://developer.mozilla.org/en-US/docs/Web/API/Window} object (having in mind whether the script is running in one [iframe]{@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe} or more, if we want).</p>","kind":"function","params":[{"type":{"names":["boolean"]},"optional":true,"defaultvalue":"{@link CB_Configuration.CrossBase.MIND_IFRAMES}","description":"<p>If set to true, it will try to get and return the topmost [window]{@link https://developer.mozilla.org/en-US/docs/Web/API/Window} object. Useful in case the script is running in an [iframe]{@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe} or more.</p>","name":"mindIframes"}],"returns":[{"type":{"names":["Object"]}}],"name":"getWindow","longname":"CB_Client.getWindow","memberof":"CB_Client","scope":"static"},{"comment":"/**\r\n\t * Returns the [document]{@link https://developer.mozilla.org/en-US/docs/Web/API/Window/document} object of the first parent (the topmost one). Useful in case the script is running in an [iframe]{@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe} or more.\r\n\t * @function\r\n\t * @returns {Object}\r\n\t */","meta":{"range":[12817,13184],"filename":"CB_Client.js","lineno":245,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100063797","name":"CB_Client.getDocumentBase","type":"FunctionExpression","paramnames":[]},"vars":{"documentBase":"CB_Client.getDocumentBase~documentBase"}},"description":"<p>Returns the [document]{@link https://developer.mozilla.org/en-US/docs/Web/API/Window/document} object of the first parent (the topmost one). Useful in case the script is running in an [iframe]{@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe} or more.</p>","kind":"function","returns":[{"type":{"names":["Object"]}}],"name":"getDocumentBase","longname":"CB_Client.getDocumentBase","memberof":"CB_Client","scope":"static"},{"comment":"/**\r\n\t * Returns the [document]{@link https://developer.mozilla.org/en-US/docs/Web/API/Window/document} object (having in mind whether the script is running in one [iframe]{@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe} or more, if we want).\r\n\t * @function\r\n\t * @param {boolean} [mindIframes={@link CB_Configuration.CrossBase.MIND_IFRAMES}] - If set to true, it will try to get and return the topmost [document]{@link https://developer.mozilla.org/en-US/docs/Web/API/Window/document} object. Useful in case the script is running in an [iframe]{@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe} or more.\r\n\t * @returns {Object}\r\n\t */","meta":{"range":[13877,14199],"filename":"CB_Client.js","lineno":263,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100063822","name":"CB_Client.getDocument","type":"FunctionExpression","paramnames":["mindIframes"]},"vars":{"mindIframes":"CB_Client.getDocument~mindIframes","documentChosen":"CB_Client.getDocument~documentChosen"}},"description":"<p>Returns the [document]{@link https://developer.mozilla.org/en-US/docs/Web/API/Window/document} object (having in mind whether the script is running in one [iframe]{@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe} or more, if we want).</p>","kind":"function","params":[{"type":{"names":["boolean"]},"optional":true,"defaultvalue":"{@link CB_Configuration.CrossBase.MIND_IFRAMES}","description":"<p>If set to true, it will try to get and return the topmost [document]{@link https://developer.mozilla.org/en-US/docs/Web/API/Window/document} object. Useful in case the script is running in an [iframe]{@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe} or more.</p>","name":"mindIframes"}],"returns":[{"type":{"names":["Object"]}}],"name":"getDocument","longname":"CB_Client.getDocument","memberof":"CB_Client","scope":"static"},{"comment":"/**\r\n\t * Tells whether the [canvas]{@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/canvas} element is supported natively or not.\r\n\t * @function\r\n\t * @returns {boolean}\r\n\t */","meta":{"range":[14401,14506],"filename":"CB_Client.js","lineno":279,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100063864","name":"CB_Client.supportsCanvas","type":"FunctionExpression","paramnames":[]}},"description":"<p>Tells whether the [canvas]{@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/canvas} element is supported natively or not.</p>","kind":"function","returns":[{"type":{"names":["boolean"]}}],"name":"supportsCanvas","longname":"CB_Client.supportsCanvas","memberof":"CB_Client","scope":"static"},{"comment":"/**\r\n\t * Tells whether [CSS3]{@link https://developer.mozilla.org/en-US/docs/Web/CSS/CSS3} [transform]{@link https://developer.mozilla.org/en-US/docs/Web/CSS/transform} is supported natively or not.\r\n\t * @function\r\n\t * @returns {boolean}\r\n\t */","meta":{"range":[14810,15510],"filename":"CB_Client.js","lineno":291,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100063882","name":"CB_Client.supportsCSS3Transform","type":"FunctionExpression","paramnames":[]},"vars":{"documentBodyStyle":"CB_Client.supportsCSS3Transform~documentBodyStyle","CB_Client._supportsCSS3TransformReturnCache":"CB_Client._supportsCSS3TransformReturnCache"}},"description":"<p>Tells whether [CSS3]{@link https://developer.mozilla.org/en-US/docs/Web/CSS/CSS3} [transform]{@link https://developer.mozilla.org/en-US/docs/Web/CSS/transform} is supported natively or not.</p>","kind":"function","returns":[{"type":{"names":["boolean"]}}],"name":"supportsCSS3Transform","longname":"CB_Client.supportsCSS3Transform","memberof":"CB_Client","scope":"static"},{"comment":"/**\r\n\t * Function that tells whether [PHP]{@link https://en.wikipedia.org/wiki/PHP} is available or not.\r\n\t * @function\r\n\t * @returns {boolean}\r\n\t */","meta":{"range":[15671,15795],"filename":"CB_Client.js","lineno":308,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100063961","name":"CB_Client.supportsPHP","type":"FunctionExpression","paramnames":[]}},"description":"<p>Function that tells whether [PHP]{@link https://en.wikipedia.org/wiki/PHP} is available or not.</p>","kind":"function","returns":[{"type":{"names":["boolean"]}}],"name":"supportsPHP","longname":"CB_Client.supportsPHP","memberof":"CB_Client","scope":"static"},{"comment":"/**\r\n\t * Returns the available version of [PHP]{@link https://en.wikipedia.org/wiki/PHP} (if any), as either an array of strings or as a string.\r\n\t * @function\r\n\t * @param {boolean} [asString=false] - If set to true, returns the version as a string.\r\n\t * @returns {array|string}\r\n\t */","meta":{"range":[16093,16222],"filename":"CB_Client.js","lineno":320,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100063977","name":"CB_Client.getPHPVersion","type":"FunctionExpression","paramnames":["asString"]}},"description":"<p>Returns the available version of [PHP]{@link https://en.wikipedia.org/wiki/PHP} (if any), as either an array of strings or as a string.</p>","kind":"function","params":[{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If set to true, returns the version as a string.</p>","name":"asString"}],"returns":[{"type":{"names":["array","string"]}}],"name":"getPHPVersion","longname":"CB_Client.getPHPVersion","memberof":"CB_Client","scope":"static"},{"comment":"/**\r\n\t * Function that tells whether [Node.js]{@link https://en.wikipedia.org/wiki/Node.js} is available (checks the availability of [process.versions.node]{@link https://nodejs.org/api/process.html#process_process_versions}) or not.\r\n\t * @function\r\n\t * @returns {boolean}\r\n\t */","meta":{"range":[16621,16821],"filename":"CB_Client.js","lineno":332,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100063998","name":"CB_Client.supportsNodeJS","type":"FunctionExpression","paramnames":[]}},"description":"<p>Function that tells whether [Node.js]{@link https://en.wikipedia.org/wiki/Node.js} is available (checks the availability of [process.versions.node]{@link https://nodejs.org/api/process.html#process_process_versions}) or not.</p>","kind":"function","returns":[{"type":{"names":["boolean"]}}],"name":"supportsNodeJS","longname":"CB_Client.supportsNodeJS","memberof":"CB_Client","scope":"static"},{"comment":"/**\r\n\t * Returns the available version of [Node.js]{@link https://en.wikipedia.org/wiki/Node.js} (if any), as either an array of strings or as a string.\r\n\t * @function\r\n\t * @param {boolean} [asString=false] - If set to true, returns the version as a string.\r\n\t * @returns {array|string}\r\n\t */","meta":{"range":[17126,17460],"filename":"CB_Client.js","lineno":344,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100064030","name":"CB_Client.getNodeJSVersion","type":"FunctionExpression","paramnames":["asString"]}},"description":"<p>Returns the available version of [Node.js]{@link https://en.wikipedia.org/wiki/Node.js} (if any), as either an array of strings or as a string.</p>","kind":"function","params":[{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If set to true, returns the version as a string.</p>","name":"asString"}],"returns":[{"type":{"names":["array","string"]}}],"name":"getNodeJSVersion","longname":"CB_Client.getNodeJSVersion","memberof":"CB_Client","scope":"static"},{"comment":"/**\r\n\t * Function that tells whether [Microsoft Silverlight]{@link https://en.wikipedia.org/wiki/Microsoft_Silverlight} plugin is available or not.\r\n\t * @function\r\n\t * @returns {boolean}\r\n\t */","meta":{"range":[17664,18046],"filename":"CB_Client.js","lineno":359,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100064085","name":"CB_Client.supportsSilverlight","type":"FunctionExpression","paramnames":[]},"vars":{"isSilverlightInstalled":"CB_Client.supportsSilverlight~isSilverlightInstalled"}},"description":"<p>Function that tells whether [Microsoft Silverlight]{@link https://en.wikipedia.org/wiki/Microsoft_Silverlight} plugin is available or not.</p>","kind":"function","returns":[{"type":{"names":["boolean"]}}],"name":"supportsSilverlight","longname":"CB_Client.supportsSilverlight","memberof":"CB_Client","scope":"static"},{"comment":"/**\r\n\t * Returns the available version of [Microsoft Silverlight]{@link https://en.wikipedia.org/wiki/Microsoft_Silverlight} plugin (if any), as either an array of strings or as a string.\r\n\t * @function\r\n\t * @param {boolean} [asString=false] - If set to true, returns the version as a string.\r\n\t * @returns {array|string}\r\n\t */","meta":{"range":[18387,18957],"filename":"CB_Client.js","lineno":385,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100064125","name":"CB_Client.getSilverlightVersion","type":"FunctionExpression","paramnames":["asString"]}},"description":"<p>Returns the available version of [Microsoft Silverlight]{@link https://en.wikipedia.org/wiki/Microsoft_Silverlight} plugin (if any), as either an array of strings or as a string.</p>","kind":"function","params":[{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If set to true, returns the version as a string.</p>","name":"asString"}],"returns":[{"type":{"names":["array","string"]}}],"name":"getSilverlightVersion","longname":"CB_Client.getSilverlightVersion","memberof":"CB_Client","scope":"static"},{"comment":"/**\r\n\t * Function that tells whether [Adobe Flash (formerly Macromedia Flash)]{@link https://en.wikipedia.org/wiki/Adobe_Flash_Player} plugin is available or not.\r\n\t * @function\r\n\t * @returns {boolean}\r\n\t */","meta":{"range":[19178,19928],"filename":"CB_Client.js","lineno":401,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100064209","name":"CB_Client.supportsFlash","type":"FunctionExpression","paramnames":[]},"vars":{"isFlashInstalled":"CB_Client.supportsFlash~isFlashInstalled","mime":"CB_Client.supportsFlash~mime","plugin":"CB_Client.supportsFlash~plugin"}},"description":"<p>Function that tells whether [Adobe Flash (formerly Macromedia Flash)]{@link https://en.wikipedia.org/wiki/Adobe_Flash_Player} plugin is available or not.</p>","kind":"function","returns":[{"type":{"names":["boolean"]}}],"name":"supportsFlash","longname":"CB_Client.supportsFlash","memberof":"CB_Client","scope":"static"},{"comment":"/**\r\n\t * Returns the available version of [Adobe Flash (formerly Macromedia Flash)]{@link https://en.wikipedia.org/wiki/Adobe_Flash_Player} plugin, if any, as either an array of strings or as a string.\r\n\t * @function\r\n\t * @param {boolean} [asString=false] - If set to true, returns the version as a string.\r\n\t * @returns {array|string}\r\n\t */","meta":{"range":[20282,21361],"filename":"CB_Client.js","lineno":439,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100064304","name":"CB_Client.getFlashVersion","type":"FunctionExpression","paramnames":["asString"]},"vars":{"version":"CB_Client.getFlashVersion~version","axo":"CB_Client.getFlashVersion~axo","axo.AllowScriptAccess":"CB_Client.getFlashVersion~axo.AllowScriptAccess"}},"description":"<p>Returns the available version of [Adobe Flash (formerly Macromedia Flash)]{@link https://en.wikipedia.org/wiki/Adobe_Flash_Player} plugin, if any, as either an array of strings or as a string.</p>","kind":"function","params":[{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If set to true, returns the version as a string.</p>","name":"asString"}],"returns":[{"type":{"names":["array","string"]}}],"name":"getFlashVersion","longname":"CB_Client.getFlashVersion","memberof":"CB_Client","scope":"static"},{"comment":"/**\r\n\t * Tells whether the script is running locally (using \"file:\" protocol) or not.\r\n\t * @function\r\n\t * @param {boolean} [mindIframes={@link CB_Configuration.CrossBase.MIND_IFRAMES}] - If set to true, it will try to check the protocol of the topmost [window]{@link https://developer.mozilla.org/en-US/docs/Web/API/Window} object. Useful in case the script is running in an [iframe]{@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe} or more.\r\n\t * @returns {boolean}\r\n\t */","meta":{"range":[21868,22812],"filename":"CB_Client.js","lineno":479,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100064459","name":"CB_Client.isRunningLocally","type":"FunctionExpression","paramnames":["mindIframes"]},"vars":{"mindIframes":"CB_Client.isRunningLocally~mindIframes","isRunningLocally":"CB_Client.isRunningLocally~isRunningLocally","protocolUsed":"CB_Client.isRunningLocally~protocolUsed","windowObject":"CB_Client.isRunningLocally~windowObject"}},"description":"<p>Tells whether the script is running locally (using &quot;file:&quot; protocol) or not.</p>","kind":"function","params":[{"type":{"names":["boolean"]},"optional":true,"defaultvalue":"{@link CB_Configuration.CrossBase.MIND_IFRAMES}","description":"<p>If set to true, it will try to check the protocol of the topmost [window]{@link https://developer.mozilla.org/en-US/docs/Web/API/Window} object. Useful in case the script is running in an [iframe]{@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe} or more.</p>","name":"mindIframes"}],"returns":[{"type":{"names":["boolean"]}}],"name":"isRunningLocally","longname":"CB_Client.isRunningLocally","memberof":"CB_Client","scope":"static"},{"comment":"/**\r\n\t * Tells whether the script is running on [NW.js (formerly node-webkit)]{@link https://nwjs.io/} or not.\r\n\t * @function\r\n\t * @returns {boolean}\r\n\t */","meta":{"range":[23128,23725],"filename":"CB_Client.js","lineno":516,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100064571","name":"CB_Client.isRunningOnNWjs","type":"FunctionExpression","paramnames":[]},"vars":{"CB_Client._isRunningOnNWjsReturnCache":"CB_Client._isRunningOnNWjsReturnCache"}},"description":"<p>Tells whether the script is running on [NW.js (formerly node-webkit)]{@link https://nwjs.io/} or not.</p>","kind":"function","returns":[{"type":{"names":["boolean"]}}],"name":"isRunningOnNWjs","longname":"CB_Client.isRunningOnNWjs","memberof":"CB_Client","scope":"static"},{"comment":"/**\r\n\t * Tells whether the script is running on [Electron (Electron.js)]{@link https://electronjs.org/} or not.\r\n\t * @function\r\n\t * @returns {boolean}\r\n\t */","meta":{"range":[24026,24667],"filename":"CB_Client.js","lineno":535,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100064656","name":"CB_Client.isRunningOnElectron","type":"FunctionExpression","paramnames":[]},"vars":{"CB_Client._isRunningOnElectronReturnCache":"CB_Client._isRunningOnElectronReturnCache"}},"description":"<p>Tells whether the script is running on [Electron (Electron.js)]{@link https://electronjs.org/} or not.</p>","kind":"function","returns":[{"type":{"names":["boolean"]}}],"name":"isRunningOnElectron","longname":"CB_Client.isRunningOnElectron","memberof":"CB_Client","scope":"static"},{"comment":"/**\r\n\t * Exits and finishes the script. In a browser, it will try to close the window or at least abandon it redirecting to an empty one (or to a desired URL). In an app ([NW.js (formerly node-webkit)]{@link https://nwjs.io/}/[Electron (Electron.js)]{@link https://electronjs.org/}/[Apache Cordova]{@link https://cordova.apache.org/}/[Adobe PhoneGap]{@link https://phonegap.com/}/[Appcelerator Titanium SDK]{@link https://en.wikipedia.org/wiki/Appcelerator_Titanium}/[Appcelerator TideSDK (Titanium Desktop)]{@link https://github.com/appcelerator-archive/titanium_desktop}/[Weixin (WeChat)]{@link https://en.wikipedia.org/wiki/WeChat}/etc.), it will try to close the app.\r\n\t * @function\r\n\t * @param {boolean} [allowWindowCloseFallback=true] - Defines whether to allow using the [window.close]{@link https://developer.mozilla.org/en-US/docs/Web/API/Window/close} method as a fallback.\r\n\t * @param {boolean} [allowRedirectionFallback=true] - Defines whether to redirect the current client as a fallback (to the URL defined in the \"redirectionAddress\" parameter).\r\n\t * @param {boolean} [redirectionAddress='about:blank'] - Defines the URL where the current client will be redirected to in the case that the window cannot be closed. Only used if the \"allowRedirectionFallback\" parameter is set to true.\r\n\t * @todo Have in mind iframes (think about it).\r\n\t */","meta":{"range":[26037,31549],"filename":"CB_Client.js","lineno":555,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100064721","name":"CB_Client.exit","type":"FunctionExpression","paramnames":["allowWindowCloseFallback","allowRedirectionFallback","redirectionAddress"]},"vars":{"allowRedirectionFallback":"CB_Client.exit~allowRedirectionFallback","allowWindowCloseFallback":"CB_Client.exit~allowWindowCloseFallback","redirectionAddress":"CB_Client.exit~redirectionAddress","useFallback":"CB_Client.exit~useFallback","gui":"CB_Client.exit~gui","app":"CB_Client.exit~app","":null,"thisWindow":"CB_Client.exit~thisWindow","thisWindow.opener":"CB_Client.exit~thisWindow.opener","CB_windowCloseEncapsulated":"CB_Client.exit~CB_windowCloseEncapsulated","window.opener":"window.opener"}},"description":"<p>Exits and finishes the script. In a browser, it will try to close the window or at least abandon it redirecting to an empty one (or to a desired URL). In an app ([NW.js (formerly node-webkit)]{@link https://nwjs.io/}/[Electron (Electron.js)]{@link https://electronjs.org/}/[Apache Cordova]{@link https://cordova.apache.org/}/[Adobe PhoneGap]{@link https://phonegap.com/}/[Appcelerator Titanium SDK]{@link https://en.wikipedia.org/wiki/Appcelerator_Titanium}/[Appcelerator TideSDK (Titanium Desktop)]{@link https://github.com/appcelerator-archive/titanium_desktop}/[Weixin (WeChat)]{@link https://en.wikipedia.org/wiki/WeChat}/etc.), it will try to close the app.</p>","kind":"function","params":[{"type":{"names":["boolean"]},"optional":true,"defaultvalue":true,"description":"<p>Defines whether to allow using the [window.close]{@link https://developer.mozilla.org/en-US/docs/Web/API/Window/close} method as a fallback.</p>","name":"allowWindowCloseFallback"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":true,"description":"<p>Defines whether to redirect the current client as a fallback (to the URL defined in the &quot;redirectionAddress&quot; parameter).</p>","name":"allowRedirectionFallback"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":"'about:blank'","description":"<p>Defines the URL where the current client will be redirected to in the case that the window cannot be closed. Only used if the &quot;allowRedirectionFallback&quot; parameter is set to true.</p>","name":"redirectionAddress"}],"todo":["Have in mind iframes (think about it)."],"name":"exit","longname":"CB_Client.exit","memberof":"CB_Client","scope":"static"},{"comment":"/**\r\n\t * Redirects the current client to the desired location (having in mind whether the script is running in one [iframe]{@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe} or more, if we want).\r\n\t * @function\r\n\t * @param {string} address - The address where we want to go.\r\n\t * @param {string} [getData] - Any URL (GET) variables we want to send (as for example \"data1=value1&data2=value2\").\r\n\t * @param {boolean} [mindIframes={@link CB_Configuration.CrossBase.MIND_IFRAMES}] - If set to true, it will try to redirect the topmost [window]{@link https://developer.mozilla.org/en-US/docs/Web/API/Window} object. Useful in case the script is running in an [iframe]{@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe} or more.\r\n\t */","meta":{"range":[32335,32726],"filename":"CB_Client.js","lineno":719,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100065277","name":"CB_Client.redirectTo","type":"FunctionExpression","paramnames":["address","getData","mindIframes"]},"vars":{"getData":"CB_Client.redirectTo~getData",".location":"CB_Client.redirectTo~.location","window.location":"window.location"}},"description":"<p>Redirects the current client to the desired location (having in mind whether the script is running in one [iframe]{@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe} or more, if we want).</p>","kind":"function","params":[{"type":{"names":["string"]},"description":"<p>The address where we want to go.</p>","name":"address"},{"type":{"names":["string"]},"optional":true,"description":"<p>Any URL (GET) variables we want to send (as for example &quot;data1=value1&amp;data2=value2&quot;).</p>","name":"getData"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":"{@link CB_Configuration.CrossBase.MIND_IFRAMES}","description":"<p>If set to true, it will try to redirect the topmost [window]{@link https://developer.mozilla.org/en-US/docs/Web/API/Window} object. Useful in case the script is running in an [iframe]{@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe} or more.</p>","name":"mindIframes"}],"name":"redirectTo","longname":"CB_Client.redirectTo","memberof":"CB_Client","scope":"static"},{"comment":"/**\r\n\t * Returns the current URL, if possible (having in mind whether the script is running in one [iframe]{@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe} or more, if we want).\r\n\t * @function\r\n\t * @param {boolean} [mindIframes={@link CB_Configuration.CrossBase.MIND_IFRAMES}] - If set to true, it will try to get the location of the topmost [window]{@link https://developer.mozilla.org/en-US/docs/Web/API/Window} object. Useful in case the script is running in an [iframe]{@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe} or more.\r\n\t * @returns {string}\r\n\t */","meta":{"range":[33349,33604],"filename":"CB_Client.js","lineno":740,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100065349","name":"CB_Client.getLocation","type":"FunctionExpression","paramnames":["mindIframes"]},"vars":{"address":"CB_Client.getLocation~address"}},"description":"<p>Returns the current URL, if possible (having in mind whether the script is running in one [iframe]{@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe} or more, if we want).</p>","kind":"function","params":[{"type":{"names":["boolean"]},"optional":true,"defaultvalue":"{@link CB_Configuration.CrossBase.MIND_IFRAMES}","description":"<p>If set to true, it will try to get the location of the topmost [window]{@link https://developer.mozilla.org/en-US/docs/Web/API/Window} object. Useful in case the script is running in an [iframe]{@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe} or more.</p>","name":"mindIframes"}],"returns":[{"type":{"names":["string"]}}],"name":"getLocation","longname":"CB_Client.getLocation","memberof":"CB_Client","scope":"static"},{"comment":"/**\r\n\t * Returns the given address without the file (for example, if \"http://whatever.com/index.html\" is given, it will return \"http://whatever.com/\").\r\n\t * @function\r\n\t * @param {string} address - The address that we want to filter.\r\n\t * @param {string} [fallbackURL] - The address that we want it to return in the case that the given one is not allowed (used when \"allowsLocal\" does not allow a local address). If it contains a file, it will not be stripped out.\r\n\t * @param {boolean} [allowsLocal=true] - Defines whether to allow returning a local address or not. If it is set to false and the address is local, it will return the \"fallbackURL\" instead (without stripping out the file, if any).\r\n\t * @returns {string}\r\n\t */","meta":{"range":[34345,34862],"filename":"CB_Client.js","lineno":760,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100065394","name":"CB_Client.getAddressWithoutFile","type":"FunctionExpression","paramnames":["address","fallbackURL","allowsLocal"]},"vars":{"allowsLocal":"CB_Client.getAddressWithoutFile~allowsLocal","address":"CB_Client.getAddressWithoutFile~address"}},"description":"<p>Returns the given address without the file (for example, if &quot;http://whatever.com/index.html&quot; is given, it will return &quot;http://whatever.com/&quot;).</p>","kind":"function","params":[{"type":{"names":["string"]},"description":"<p>The address that we want to filter.</p>","name":"address"},{"type":{"names":["string"]},"optional":true,"description":"<p>The address that we want it to return in the case that the given one is not allowed (used when &quot;allowsLocal&quot; does not allow a local address). If it contains a file, it will not be stripped out.</p>","name":"fallbackURL"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":true,"description":"<p>Defines whether to allow returning a local address or not. If it is set to false and the address is local, it will return the &quot;fallbackURL&quot; instead (without stripping out the file, if any).</p>","name":"allowsLocal"}],"returns":[{"type":{"names":["string"]}}],"name":"getAddressWithoutFile","longname":"CB_Client.getAddressWithoutFile","memberof":"CB_Client","scope":"static"},{"comment":"/**\r\n\t * Returns the current URL without the file (for example, if \"http://whatever.com/index.html\" is the current URL, it will return \"http://whatever.com/\"), if possible (having in mind whether the script is running in one [iframe]{@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe} or more, if we want).\r\n\t * @function\r\n\t * @param {string} [fallbackURL] - The address that we want it to return in the case that the current one is not allowed (used when \"allowsLocal\" does not allow a local address). If it contains a file, it will not be stripped out.\r\n\t * @param {boolean} [allowsLocal=true] - Defines whether to allow returning a local address or not. If it is set to false and the current address is local, it will return the \"fallbackURL\" instead (without stripping out the file, if any).\r\n * @param {boolean} [mindIframes={@link CB_Configuration.CrossBase.MIND_IFRAMES}] - If set to true, it will try to get the location of the topmost [window]{@link https://developer.mozilla.org/en-US/docs/Web/API/Window} object. Useful in case the script is running in an [iframe]{@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe} or more.\r\n\t * @returns {string}\r\n\t */","meta":{"range":[36089,36284],"filename":"CB_Client.js","lineno":783,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100065481","name":"CB_Client.getLocationWithoutFile","type":"FunctionExpression","paramnames":["fallbackURL","allowsLocal","mindIframes"]}},"description":"<p>Returns the current URL without the file (for example, if &quot;http://whatever.com/index.html&quot; is the current URL, it will return &quot;http://whatever.com/&quot;), if possible (having in mind whether the script is running in one [iframe]{@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe} or more, if we want).</p>","kind":"function","params":[{"type":{"names":["string"]},"optional":true,"description":"<p>The address that we want it to return in the case that the current one is not allowed (used when &quot;allowsLocal&quot; does not allow a local address). If it contains a file, it will not be stripped out.</p>","name":"fallbackURL"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":true,"description":"<p>Defines whether to allow returning a local address or not. If it is set to false and the current address is local, it will return the &quot;fallbackURL&quot; instead (without stripping out the file, if any).</p>","name":"allowsLocal"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":"{@link CB_Configuration.CrossBase.MIND_IFRAMES}","description":"<p>If set to true, it will try to get the location of the topmost [window]{@link https://developer.mozilla.org/en-US/docs/Web/API/Window} object. Useful in case the script is running in an [iframe]{@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe} or more.</p>","name":"mindIframes"}],"returns":[{"type":{"names":["string"]}}],"name":"getLocationWithoutFile","longname":"CB_Client.getLocationWithoutFile","memberof":"CB_Client","scope":"static"},{"comment":"/**\r\n\t * Gets the starting pixel of top or left coordinates for [getBoundingClientRect]{@link https://developer.mozilla.org/en-US/docs/Web/API/Element/getBoundingClientRect} (it's not 0 in some Internet Explorer versions).\r\n\t * @function\r\n\t * @param {('left'|'top')} [leftOrTop='left'] - String that defines whether we want it to return the values for \"left\" or for \"top\".\r\n\t * @returns {integer}\r\n\t */","meta":{"range":[36728,38486],"filename":"CB_Client.js","lineno":796,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100065503","name":"CB_Client.getBoundingClientRectMargin","type":"FunctionExpression","paramnames":["leftOrTop"]},"vars":{"leftOrTop":"CB_Client.getBoundingClientRectMargin~leftOrTop","getBoundingClientRectMarginDiv":"CB_Client.getBoundingClientRectMargin~getBoundingClientRectMarginDiv","getBoundingClientRectMarginDiv.id":"CB_Client.getBoundingClientRectMargin~getBoundingClientRectMarginDiv.id","getBoundingClientRectMarginDiv.style.position":"CB_Client.getBoundingClientRectMargin~getBoundingClientRectMarginDiv.style.position","getBoundingClientRectMarginDiv.style.width":"CB_Client.getBoundingClientRectMargin~getBoundingClientRectMarginDiv.style.width","getBoundingClientRectMarginDiv.style.height":"CB_Client.getBoundingClientRectMargin~getBoundingClientRectMarginDiv.style.height","getBoundingClientRectMarginDiv.style.visibility":"CB_Client.getBoundingClientRectMargin~getBoundingClientRectMarginDiv.style.visibility","getBoundingClientRectMarginDiv.style.left":"CB_Client.getBoundingClientRectMargin~getBoundingClientRectMarginDiv.style.left","getBoundingClientRectMarginDiv.style.top":"CB_Client.getBoundingClientRectMargin~getBoundingClientRectMarginDiv.style.top","tagBody":"CB_Client.getBoundingClientRectMargin~tagBody","rectMargin":"CB_Client.getBoundingClientRectMargin~rectMargin","margin":"CB_Client.getBoundingClientRectMargin~margin"}},"description":"<p>Gets the starting pixel of top or left coordinates for [getBoundingClientRect]{@link https://developer.mozilla.org/en-US/docs/Web/API/Element/getBoundingClientRect} (it's not 0 in some Internet Explorer versions).</p>","kind":"function","params":[{"type":{"names":["'left'","'top'"]},"optional":true,"defaultvalue":"'left'","description":"<p>String that defines whether we want it to return the values for &quot;left&quot; or for &quot;top&quot;.</p>","name":"leftOrTop"}],"returns":[{"type":{"names":["integer"]}}],"name":"getBoundingClientRectMargin","longname":"CB_Client.getBoundingClientRectMargin","memberof":"CB_Client","scope":"static"},{"comment":"/**\r\n\t * Tries to change the [document title]{@link https://developer.mozilla.org/en-US/docs/Web/API/Document/title} and returns it.\r\n\t * @function\r\n\t * @param {newTitle} newTitle - The desired new title.\r\n\t * @returns {string}\r\n\t */","meta":{"range":[38734,39211],"filename":"CB_Client.js","lineno":846,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100065736","name":"CB_Client.setTitle","type":"FunctionExpression","paramnames":["newTitle"]},"vars":{".title":"CB_Client.setTitle~.title","tagTitle":"CB_Client.setTitle~tagTitle","tagTitle.innerHTML":"CB_Client.setTitle~tagTitle.innerHTML","titleCurrent":"CB_Client.setTitle~titleCurrent"}},"description":"<p>Tries to change the [document title]{@link https://developer.mozilla.org/en-US/docs/Web/API/Document/title} and returns it.</p>","kind":"function","params":[{"type":{"names":["newTitle"]},"description":"<p>The desired new title.</p>","name":"newTitle"}],"returns":[{"type":{"names":["string"]}}],"name":"setTitle","longname":"CB_Client.setTitle","memberof":"CB_Client","scope":"static"},{"comment":"/**\r\n\t * Returns the current [document title]{@link https://developer.mozilla.org/en-US/docs/Web/API/Document/title}.\r\n\t * @function\r\n\t * @returns {string}\r\n\t */","meta":{"range":[39384,39864],"filename":"CB_Client.js","lineno":866,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100065808","name":"CB_Client.getTitle","type":"FunctionExpression","paramnames":[]},"vars":{"title":"CB_Client.getTitle~title","tagTitle":"CB_Client.getTitle~tagTitle"}},"description":"<p>Returns the current [document title]{@link https://developer.mozilla.org/en-US/docs/Web/API/Document/title}.</p>","kind":"function","returns":[{"type":{"names":["string"]}}],"name":"getTitle","longname":"CB_Client.getTitle","memberof":"CB_Client","scope":"static"},{"comment":"/**\r\n * @file Collisions management. Contains the {@link CB_Collisions} static class.\r\n * @author Joan Alba Maldonado <workindalian@gmail.com>\r\n */","meta":{"filename":"CB_Collisions.js","lineno":1,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{}},"name":"CrossBase/general/CB_Collisions.js","kind":"file","description":"<p>Collisions management. Contains the {@link CB_Collisions} static class.</p>","preserveName":true,"author":["Joan Alba Maldonado <workindalian@gmail.com>"],"longname":"CrossBase/general/CB_Collisions.js","scope":"global"},{"comment":"/**\r\n * Static class to manage collisions. It will return itself if it is tried to be instantiated.\r\n * @namespace\r\n * @todo Finish many functions for many more kinds of collisions.\r\n * @todo Add triangles, polygons, arcs, etc.\r\n * @todo Add support to more dimensions (at least to 3D).\r\n * @todo Add lacking \"touching\" functions, equivalent to the \"over\" ones.\r\n * @todo Add a boolean parameter and a border parameter to detect collision just when it hits the border (not when it is inside of the object without touching the border), for \"hollow\" shapes.\r\n * @todo Think about adding function aliases with reversed names (for example, \"isElementOverPoint\" that points to \"isPointOverElement\", etc.). Think about whether the aliases should or not have some parameters in reversed order.\r\n */","meta":{"range":[952,1004],"filename":"CB_Collisions.js","lineno":17,"columnno":4,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100065976","name":"CB_Collisions","type":"FunctionExpression"}},"description":"<p>Static class to manage collisions. It will return itself if it is tried to be instantiated.</p>","kind":"namespace","todo":["Finish many functions for many more kinds of collisions.","Add triangles, polygons, arcs, etc.","Add support to more dimensions (at least to 3D).","Add lacking \"touching\" functions, equivalent to the \"over\" ones.","Add a boolean parameter and a border parameter to detect collision just when it hits the border (not when it is inside of the object without touching the border), for \"hollow\" shapes.","Think about adding function aliases with reversed names (for example, \"isElementOverPoint\" that points to \"isPointOverElement\", etc.). Think about whether the aliases should or not have some parameters in reversed order."],"name":"CB_Collisions","longname":"CB_Collisions","scope":"global","params":[]},{"comment":"/**\r\n\t * Tells the distance between two points.\r\n\t * @function\r\n\t * @param {number} x - The \"X\" coordinate of the first point.\r\n\t * @param {number} y - The \"Y\" coordinate of the first point.\r\n\t * @param {number} x2 - The \"X\" coordinate of the second point.\r\n\t * @param {number} y2 - The \"Y\" coordinate of the second point.\r\n\t * @returns {number|null} Returns the distance between the two points. In the case that it could not be calculated, returns null.\r\n\t */","meta":{"range":[1879,2072],"filename":"CB_Collisions.js","lineno":48,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100066012","name":"CB_Collisions.getDistancePoints","type":"FunctionExpression","paramnames":["x","y","x2","y2"]},"vars":{"distance":"CB_Collisions.getDistancePoints~distance"}},"description":"<p>Tells the distance between two points.</p>","kind":"function","params":[{"type":{"names":["number"]},"description":"<p>The &quot;X&quot; coordinate of the first point.</p>","name":"x"},{"type":{"names":["number"]},"description":"<p>The &quot;Y&quot; coordinate of the first point.</p>","name":"y"},{"type":{"names":["number"]},"description":"<p>The &quot;X&quot; coordinate of the second point.</p>","name":"x2"},{"type":{"names":["number"]},"description":"<p>The &quot;Y&quot; coordinate of the second point.</p>","name":"y2"}],"returns":[{"type":{"names":["number","null"]},"description":"<p>Returns the distance between the two points. In the case that it could not be calculated, returns null.</p>"}],"name":"getDistancePoints","longname":"CB_Collisions.getDistancePoints","memberof":"CB_Collisions","scope":"static"},{"comment":"/**\r\n\t * Tells whether a given point is over a given DOM element (it will be considered a rectangle).\r\n\t * @function\r\n\t * @param {number} x - The \"X\" coordinate of the point.\r\n\t * @param {number} y - The \"Y\" coordinate of the point.\r\n\t * @param {Element} element - The DOM element that we want to check (it will be considered a rectangle).\r\n\t * @returns {boolean} Returns whether the point is over the given DOM element (it will be considered a rectangle).\r\n\t */","meta":{"range":[2550,2868],"filename":"CB_Collisions.js","lineno":63,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100066056","name":"CB_Collisions.isPointOverElement","type":"FunctionExpression","paramnames":["x","y","element"]}},"description":"<p>Tells whether a given point is over a given DOM element (it will be considered a rectangle).</p>","kind":"function","params":[{"type":{"names":["number"]},"description":"<p>The &quot;X&quot; coordinate of the point.</p>","name":"x"},{"type":{"names":["number"]},"description":"<p>The &quot;Y&quot; coordinate of the point.</p>","name":"y"},{"type":{"names":["Element"]},"description":"<p>The DOM element that we want to check (it will be considered a rectangle).</p>","name":"element"}],"returns":[{"type":{"names":["boolean"]},"description":"<p>Returns whether the point is over the given DOM element (it will be considered a rectangle).</p>"}],"name":"isPointOverElement","longname":"CB_Collisions.isPointOverElement","memberof":"CB_Collisions","scope":"static"},{"comment":"/**\r\n\t * Tells whether a given point is touching (maybe over) a given DOM element (it will be considered a rectangle). This will also return true if they are adjacent (next to each other).\r\n\t * @function\r\n\t * @param {number} x - The \"X\" coordinate of the point.\r\n\t * @param {number} y - The \"Y\" coordinate of the point.\r\n\t * @param {Element} element - The DOM element that we want to check (it will be considered a rectangle).\r\n\t * @returns {boolean} Returns whether the point is touching (maybe over) the given DOM element (it will be considered a rectangle). This will also return true if they are adjacent (next to each other).\r\n\t */","meta":{"range":[3519,3845],"filename":"CB_Collisions.js","lineno":78,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100066105","name":"CB_Collisions.isPointTouchingElement","type":"FunctionExpression","paramnames":["x","y","element"]}},"description":"<p>Tells whether a given point is touching (maybe over) a given DOM element (it will be considered a rectangle). This will also return true if they are adjacent (next to each other).</p>","kind":"function","params":[{"type":{"names":["number"]},"description":"<p>The &quot;X&quot; coordinate of the point.</p>","name":"x"},{"type":{"names":["number"]},"description":"<p>The &quot;Y&quot; coordinate of the point.</p>","name":"y"},{"type":{"names":["Element"]},"description":"<p>The DOM element that we want to check (it will be considered a rectangle).</p>","name":"element"}],"returns":[{"type":{"names":["boolean"]},"description":"<p>Returns whether the point is touching (maybe over) the given DOM element (it will be considered a rectangle). This will also return true if they are adjacent (next to each other).</p>"}],"name":"isPointTouchingElement","longname":"CB_Collisions.isPointTouchingElement","memberof":"CB_Collisions","scope":"static"},{"comment":"/**\r\n\t * Tells whether a point is over a line (infinite).\r\n\t * @function\r\n\t * @param {number} x - The \"X\" coordinate of the point.\r\n\t * @param {number} y - The \"Y\" coordinate of the point.\r\n\t * @param {number} lineX1 - The \"X\" coordinate of a first point of the line.\r\n\t * @param {number} lineY1 - The \"Y\" coordinate of a first point of the line.\r\n\t * @param {number} lineX2 - The \"X\" coordinate of a second point of the line.\r\n\t * @param {number} lineY2 - The \"Y\" coordinate of a second point of the line.\r\n\t * @param {number} [tolerance=0.001] - The amount of loss of precision we can tolerate to consider a collision.\r\n\t * @returns {boolean} Returns whether the point is over the line (infinite).\r\n\t * @todo Think about using a \"width\" parameter (apart from the \"tolerance\" parameter).\r\n\t * @todo Create a CB_Collisions.isPointTouchingLine function.\r\n\t */","meta":{"range":[4724,5772],"filename":"CB_Collisions.js","lineno":99,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100066154","name":"CB_Collisions.isPointOverLine","type":"FunctionExpression","paramnames":["x","y","lineX1","lineY1","lineX2","lineY2","tolerance"]},"vars":{"tolerance":"CB_Collisions.isPointOverLine~tolerance","slope":"CB_Collisions.isPointOverLine~slope","yIntercept":"CB_Collisions.isPointOverLine~yIntercept"}},"description":"<p>Tells whether a point is over a line (infinite).</p>","kind":"function","params":[{"type":{"names":["number"]},"description":"<p>The &quot;X&quot; coordinate of the point.</p>","name":"x"},{"type":{"names":["number"]},"description":"<p>The &quot;Y&quot; coordinate of the point.</p>","name":"y"},{"type":{"names":["number"]},"description":"<p>The &quot;X&quot; coordinate of a first point of the line.</p>","name":"lineX1"},{"type":{"names":["number"]},"description":"<p>The &quot;Y&quot; coordinate of a first point of the line.</p>","name":"lineY1"},{"type":{"names":["number"]},"description":"<p>The &quot;X&quot; coordinate of a second point of the line.</p>","name":"lineX2"},{"type":{"names":["number"]},"description":"<p>The &quot;Y&quot; coordinate of a second point of the line.</p>","name":"lineY2"},{"type":{"names":["number"]},"optional":true,"defaultvalue":0.001,"description":"<p>The amount of loss of precision we can tolerate to consider a collision.</p>","name":"tolerance"}],"returns":[{"type":{"names":["boolean"]},"description":"<p>Returns whether the point is over the line (infinite).</p>"}],"todo":["Think about using a \"width\" parameter (apart from the \"tolerance\" parameter).","Create a CB_Collisions.isPointTouchingLine function."],"name":"isPointOverLine","longname":"CB_Collisions.isPointOverLine","memberof":"CB_Collisions","scope":"static"},{"comment":"/**\r\n\t * Tells whether a point is over a line segment.\r\n\t * @function\r\n\t * @param {number} x - The \"X\" coordinate of the point.\r\n\t * @param {number} y - The \"Y\" coordinate of the point.\r\n\t * @param {number} segmentX1 - The \"X\" coordinate of the beginning point of the line.\r\n\t * @param {number} segmentY1 - The \"Y\" coordinate of the beginning point of the line.\r\n\t * @param {number} segmentX2 - The \"X\" coordinate of the end point of the line.\r\n\t * @param {number} segmentY2 - The \"Y\" coordinate of the end point of the line.\r\n\t * @param {number} [tolerance=0.001] - The amount of loss of precision we can tolerate to consider a collision.\r\n\t * @returns {boolean} Returns whether the point is over the line segment.\r\n\t * @todo Think about using a \"width\" parameter (apart from the \"tolerance\" parameter).\r\n\t * @todo Create a CB_Collisions.isPointTouchingSegment function.\r\n\t */","meta":{"range":[6670,7410],"filename":"CB_Collisions.js","lineno":153,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100066270","name":"CB_Collisions.isPointOverSegment","type":"FunctionExpression","paramnames":["x","y","segmentX1","segmentY1","segmentX2","segmentY2","tolerance"]},"vars":{"rectangleX1":"CB_Collisions.isPointOverSegment~rectangleX1","rectangleY1":"CB_Collisions.isPointOverSegment~rectangleY1","rectangleX2":"CB_Collisions.isPointOverSegment~rectangleX2","rectangleY2":"CB_Collisions.isPointOverSegment~rectangleY2"}},"description":"<p>Tells whether a point is over a line segment.</p>","kind":"function","params":[{"type":{"names":["number"]},"description":"<p>The &quot;X&quot; coordinate of the point.</p>","name":"x"},{"type":{"names":["number"]},"description":"<p>The &quot;Y&quot; coordinate of the point.</p>","name":"y"},{"type":{"names":["number"]},"description":"<p>The &quot;X&quot; coordinate of the beginning point of the line.</p>","name":"segmentX1"},{"type":{"names":["number"]},"description":"<p>The &quot;Y&quot; coordinate of the beginning point of the line.</p>","name":"segmentY1"},{"type":{"names":["number"]},"description":"<p>The &quot;X&quot; coordinate of the end point of the line.</p>","name":"segmentX2"},{"type":{"names":["number"]},"description":"<p>The &quot;Y&quot; coordinate of the end point of the line.</p>","name":"segmentY2"},{"type":{"names":["number"]},"optional":true,"defaultvalue":0.001,"description":"<p>The amount of loss of precision we can tolerate to consider a collision.</p>","name":"tolerance"}],"returns":[{"type":{"names":["boolean"]},"description":"<p>Returns whether the point is over the line segment.</p>"}],"todo":["Think about using a \"width\" parameter (apart from the \"tolerance\" parameter).","Create a CB_Collisions.isPointTouchingSegment function."],"name":"isPointOverSegment","longname":"CB_Collisions.isPointOverSegment","memberof":"CB_Collisions","scope":"static"},{"comment":"/**\r\n\t * Tells whether a point is over a rectangle.\r\n\t * @function\r\n\t * @param {number} x - The \"X\" coordinate of the point.\r\n\t * @param {number} y - The \"Y\" coordinate of the point.\r\n\t * @param {number} rectangleX - The \"X\" coordinate of the upper left corner of the rectangle.\r\n\t * @param {number} rectangleY - The \"Y\" coordinate of the upper left corner of the rectangle.\r\n\t * @param {number} rectangleWidth - The width of the rectangle.\r\n\t * @param {number} rectangleHeight - The height of the rectangle.\r\n\t * @returns {boolean} Returns whether the point is over the rectangle.\r\n\t * @todo Think about using a \"rotation\" parameter to accept rotated rectangles.\r\n\t */","meta":{"range":[8098,8331],"filename":"CB_Collisions.js","lineno":192,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100066356","name":"CB_Collisions.isPointOverRectangle","type":"FunctionExpression","paramnames":["x","y","rectangleX","rectangleY","rectangleWidth","rectangleHeight"]}},"description":"<p>Tells whether a point is over a rectangle.</p>","kind":"function","params":[{"type":{"names":["number"]},"description":"<p>The &quot;X&quot; coordinate of the point.</p>","name":"x"},{"type":{"names":["number"]},"description":"<p>The &quot;Y&quot; coordinate of the point.</p>","name":"y"},{"type":{"names":["number"]},"description":"<p>The &quot;X&quot; coordinate of the upper left corner of the rectangle.</p>","name":"rectangleX"},{"type":{"names":["number"]},"description":"<p>The &quot;Y&quot; coordinate of the upper left corner of the rectangle.</p>","name":"rectangleY"},{"type":{"names":["number"]},"description":"<p>The width of the rectangle.</p>","name":"rectangleWidth"},{"type":{"names":["number"]},"description":"<p>The height of the rectangle.</p>","name":"rectangleHeight"}],"returns":[{"type":{"names":["boolean"]},"description":"<p>Returns whether the point is over the rectangle.</p>"}],"todo":["Think about using a \"rotation\" parameter to accept rotated rectangles."],"name":"isPointOverRectangle","longname":"CB_Collisions.isPointOverRectangle","memberof":"CB_Collisions","scope":"static"},{"comment":"/**\r\n\t * Tells whether a point is touching (maybe over) a rectangle. This will also return true if they are adjacent (next to each other).\r\n\t * @function\r\n\t * @param {number} x - The \"X\" coordinate of the point.\r\n\t * @param {number} y - The \"Y\" coordinate of the point.\r\n\t * @param {number} rectangleX - The \"X\" coordinate of the upper left corner of the rectangle.\r\n\t * @param {number} rectangleY - The \"Y\" coordinate of the upper left corner of the rectangle.\r\n\t * @param {number} rectangleWidth - The width of the rectangle.\r\n\t * @param {number} rectangleHeight - The height of the rectangle.\r\n\t * @returns {boolean} Returns whether the point is touching (maybe over) the rectangle. This will also return true if they are adjacent (next to each other).\r\n\t * @todo Think about using a \"rotation\" parameter to accept rotated rectangles.\r\n\t */","meta":{"range":[9193,9625],"filename":"CB_Collisions.js","lineno":210,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100066389","name":"CB_Collisions.isPointTouchingRectangle","type":"FunctionExpression","paramnames":["x","y","rectangleX","rectangleY","rectangleWidth","rectangleHeight"]}},"description":"<p>Tells whether a point is touching (maybe over) a rectangle. This will also return true if they are adjacent (next to each other).</p>","kind":"function","params":[{"type":{"names":["number"]},"description":"<p>The &quot;X&quot; coordinate of the point.</p>","name":"x"},{"type":{"names":["number"]},"description":"<p>The &quot;Y&quot; coordinate of the point.</p>","name":"y"},{"type":{"names":["number"]},"description":"<p>The &quot;X&quot; coordinate of the upper left corner of the rectangle.</p>","name":"rectangleX"},{"type":{"names":["number"]},"description":"<p>The &quot;Y&quot; coordinate of the upper left corner of the rectangle.</p>","name":"rectangleY"},{"type":{"names":["number"]},"description":"<p>The width of the rectangle.</p>","name":"rectangleWidth"},{"type":{"names":["number"]},"description":"<p>The height of the rectangle.</p>","name":"rectangleHeight"}],"returns":[{"type":{"names":["boolean"]},"description":"<p>Returns whether the point is touching (maybe over) the rectangle. This will also return true if they are adjacent (next to each other).</p>"}],"todo":["Think about using a \"rotation\" parameter to accept rotated rectangles."],"name":"isPointTouchingRectangle","longname":"CB_Collisions.isPointTouchingRectangle","memberof":"CB_Collisions","scope":"static"},{"comment":"/**\r\n\t * Tells whether a point is over a circle.\r\n\t * @function\r\n\t * @param {number} x - The \"X\" coordinate of the point.\r\n\t * @param {number} y - The \"Y\" coordinate of the point.\r\n\t * @param {number} centreX - The \"X\" coordinate of the center of the circle.\r\n\t * @param {number} centreY - The \"Y\" coordinate of the center of the circle.\r\n\t * @param {number} radius - The radius of the circle.\r\n\t * @returns {boolean} Returns whether the point is over the circle.\r\n\t */","meta":{"range":[10111,10425],"filename":"CB_Collisions.js","lineno":236,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100066422","name":"CB_Collisions.isPointOverCircle","type":"FunctionExpression","paramnames":["x","y","centreX","centreY","radius"]}},"description":"<p>Tells whether a point is over a circle.</p>","kind":"function","params":[{"type":{"names":["number"]},"description":"<p>The &quot;X&quot; coordinate of the point.</p>","name":"x"},{"type":{"names":["number"]},"description":"<p>The &quot;Y&quot; coordinate of the point.</p>","name":"y"},{"type":{"names":["number"]},"description":"<p>The &quot;X&quot; coordinate of the center of the circle.</p>","name":"centreX"},{"type":{"names":["number"]},"description":"<p>The &quot;Y&quot; coordinate of the center of the circle.</p>","name":"centreY"},{"type":{"names":["number"]},"description":"<p>The radius of the circle.</p>","name":"radius"}],"returns":[{"type":{"names":["boolean"]},"description":"<p>Returns whether the point is over the circle.</p>"}],"name":"isPointOverCircle","longname":"CB_Collisions.isPointOverCircle","memberof":"CB_Collisions","scope":"static"},{"comment":"/**\r\n\t * Tells whether a point is touching (maybe over) a circle. This will also return true if they are adjacent (next to each other).\r\n\t * @function\r\n\t * @param {number} x - The \"X\" coordinate of the point.\r\n\t * @param {number} y - The \"Y\" coordinate of the point.\r\n\t * @param {number} centreX - The \"X\" coordinate of the center of the circle.\r\n\t * @param {number} centreY - The \"Y\" coordinate of the center of the circle.\r\n\t * @param {number} radius - The radius of the circle.\r\n\t * @returns {boolean} Returns whether the point is touching (maybe over) the circle. This will also return true if they are adjacent (next to each other).\r\n\t */","meta":{"range":[11085,11404],"filename":"CB_Collisions.js","lineno":254,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100066445","name":"CB_Collisions.isPointTouchingCircle","type":"FunctionExpression","paramnames":["x","y","centreX","centreY","radius"]}},"description":"<p>Tells whether a point is touching (maybe over) a circle. This will also return true if they are adjacent (next to each other).</p>","kind":"function","params":[{"type":{"names":["number"]},"description":"<p>The &quot;X&quot; coordinate of the point.</p>","name":"x"},{"type":{"names":["number"]},"description":"<p>The &quot;Y&quot; coordinate of the point.</p>","name":"y"},{"type":{"names":["number"]},"description":"<p>The &quot;X&quot; coordinate of the center of the circle.</p>","name":"centreX"},{"type":{"names":["number"]},"description":"<p>The &quot;Y&quot; coordinate of the center of the circle.</p>","name":"centreY"},{"type":{"names":["number"]},"description":"<p>The radius of the circle.</p>","name":"radius"}],"returns":[{"type":{"names":["boolean"]},"description":"<p>Returns whether the point is touching (maybe over) the circle. This will also return true if they are adjacent (next to each other).</p>"}],"name":"isPointTouchingCircle","longname":"CB_Collisions.isPointTouchingCircle","memberof":"CB_Collisions","scope":"static"},{"comment":"/**\r\n\t * Tells whether a point is over an ellipse.\r\n\t * @function\r\n\t * @param {number} x - The \"X\" coordinate of the point.\r\n\t * @param {number} y - The \"Y\" coordinate of the point.\r\n\t * @param {number} centreX - The \"X\" coordinate of the center of the ellipse.\r\n\t * @param {number} centreY - The \"Y\" coordinate of the center of the ellipse.\r\n\t * @param {number} radiusX - The X (horizontal) radius of the ellipse.\r\n\t * @param {number} radiusY - The Y (vertical) radius of the ellipse.\r\n\t * @param {number} [rotation=0] - The ellipse rotation. The value given will be considered either degrees or radians depending on the given \"rotationUseDegrees\" parameter (by default, it is considered radians). Not implemented yet!\r\n\t * @param {boolean} [rotationUseDegrees=false] - Defines whether the \"rotation\" given should be considered degrees or not (radians). Not implemented yet!\r\n\t * @returns {boolean} Returns whether the point is over the ellipse.\r\n\t * @todo Make the \"rotation\" parameter work (check https://math.stackexchange.com/questions/426150/what-is-the-general-equation-of-the-ellipse-that-is-not-in-the-origin-and-rotate).\r\n\t */","meta":{"range":[12561,12993],"filename":"CB_Collisions.js","lineno":276,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100066468","name":"CB_Collisions.isPointOverEllipse","type":"FunctionExpression","paramnames":["x","y","centreX","centreY","radiusX","radiusY","rotation","rotationUseDegrees"]},"vars":{"rotation":"CB_Collisions.isPointOverEllipse~rotation","dx":"CB_Collisions.isPointOverEllipse~dx","dy":"CB_Collisions.isPointOverEllipse~dy"}},"description":"<p>Tells whether a point is over an ellipse.</p>","kind":"function","params":[{"type":{"names":["number"]},"description":"<p>The &quot;X&quot; coordinate of the point.</p>","name":"x"},{"type":{"names":["number"]},"description":"<p>The &quot;Y&quot; coordinate of the point.</p>","name":"y"},{"type":{"names":["number"]},"description":"<p>The &quot;X&quot; coordinate of the center of the ellipse.</p>","name":"centreX"},{"type":{"names":["number"]},"description":"<p>The &quot;Y&quot; coordinate of the center of the ellipse.</p>","name":"centreY"},{"type":{"names":["number"]},"description":"<p>The X (horizontal) radius of the ellipse.</p>","name":"radiusX"},{"type":{"names":["number"]},"description":"<p>The Y (vertical) radius of the ellipse.</p>","name":"radiusY"},{"type":{"names":["number"]},"optional":true,"defaultvalue":0,"description":"<p>The ellipse rotation. The value given will be considered either degrees or radians depending on the given &quot;rotationUseDegrees&quot; parameter (by default, it is considered radians). Not implemented yet!</p>","name":"rotation"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>Defines whether the &quot;rotation&quot; given should be considered degrees or not (radians). Not implemented yet!</p>","name":"rotationUseDegrees"}],"returns":[{"type":{"names":["boolean"]},"description":"<p>Returns whether the point is over the ellipse.</p>"}],"todo":["Make the \"rotation\" parameter work (check https://math.stackexchange.com/questions/426150/what-is-the-general-equation-of-the-ellipse-that-is-not-in-the-origin-and-rotate)."],"name":"isPointOverEllipse","longname":"CB_Collisions.isPointOverEllipse","memberof":"CB_Collisions","scope":"static"},{"comment":"/**\r\n\t * Tells whether a point is touching (maybe over) a ellipse. This will also return true if they are adjacent (next to each other).\r\n\t * @function\r\n\t * @param {number} x - The \"X\" coordinate of the point.\r\n\t * @param {number} y - The \"Y\" coordinate of the point.\r\n\t * @param {number} centreX - The \"X\" coordinate of the center of the ellipse.\r\n\t * @param {number} centreY - The \"Y\" coordinate of the center of the ellipse.\r\n\t * @param {number} radiusX - The X (horizontal) radius of the ellipse.\r\n\t * @param {number} radiusY - The Y (vertical) radius of the ellipse.\r\n\t * @param {number} [rotation=0] - The ellipse rotation. The value given will be considered either degrees or radians depending on the given \"rotationUseDegrees\" parameter (by default, it is considered radians). Not implemented yet!\r\n\t * @param {boolean} [rotationUseDegrees=false] - Defines whether the \"rotation\" given should be considered degrees or not (radians). Not implemented yet!\r\n\t * @returns {boolean} Returns whether the point is touching (maybe over) the ellipse. This will also return true if they are adjacent (next to each other).\r\n\t * @todo Make the \"rotation\" parameter work (check https://math.stackexchange.com/questions/426150/what-is-the-general-equation-of-the-ellipse-that-is-not-in-the-origin-and-rotate).\r\n\t */","meta":{"range":[14323,14760],"filename":"CB_Collisions.js","lineno":301,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100066546","name":"CB_Collisions.isPointTouchingEllipse","type":"FunctionExpression","paramnames":["x","y","centreX","centreY","radiusX","radiusY","rotation","rotationUseDegrees"]},"vars":{"rotation":"CB_Collisions.isPointTouchingEllipse~rotation","dx":"CB_Collisions.isPointTouchingEllipse~dx","dy":"CB_Collisions.isPointTouchingEllipse~dy"}},"description":"<p>Tells whether a point is touching (maybe over) a ellipse. This will also return true if they are adjacent (next to each other).</p>","kind":"function","params":[{"type":{"names":["number"]},"description":"<p>The &quot;X&quot; coordinate of the point.</p>","name":"x"},{"type":{"names":["number"]},"description":"<p>The &quot;Y&quot; coordinate of the point.</p>","name":"y"},{"type":{"names":["number"]},"description":"<p>The &quot;X&quot; coordinate of the center of the ellipse.</p>","name":"centreX"},{"type":{"names":["number"]},"description":"<p>The &quot;Y&quot; coordinate of the center of the ellipse.</p>","name":"centreY"},{"type":{"names":["number"]},"description":"<p>The X (horizontal) radius of the ellipse.</p>","name":"radiusX"},{"type":{"names":["number"]},"description":"<p>The Y (vertical) radius of the ellipse.</p>","name":"radiusY"},{"type":{"names":["number"]},"optional":true,"defaultvalue":0,"description":"<p>The ellipse rotation. The value given will be considered either degrees or radians depending on the given &quot;rotationUseDegrees&quot; parameter (by default, it is considered radians). Not implemented yet!</p>","name":"rotation"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>Defines whether the &quot;rotation&quot; given should be considered degrees or not (radians). Not implemented yet!</p>","name":"rotationUseDegrees"}],"returns":[{"type":{"names":["boolean"]},"description":"<p>Returns whether the point is touching (maybe over) the ellipse. This will also return true if they are adjacent (next to each other).</p>"}],"todo":["Make the \"rotation\" parameter work (check https://math.stackexchange.com/questions/426150/what-is-the-general-equation-of-the-ellipse-that-is-not-in-the-origin-and-rotate)."],"name":"isPointTouchingEllipse","longname":"CB_Collisions.isPointTouchingEllipse","memberof":"CB_Collisions","scope":"static"},{"comment":"/**\r\n\t * Tells whether a rectangle is over another rectangle.\r\n\t * @function\r\n\t * @param {number} rectangleX - The \"X\" coordinate of the upper left corner of the first rectangle.\r\n\t * @param {number} rectangleY - The \"Y\" coordinate of the upper left corner of the first rectangle.\r\n\t * @param {number} rectangleWidth - The width of the first rectangle.\r\n\t * @param {number} rectangleHeight - The height of the first rectangle.\r\n\t * @param {number} rectangleX2 - The \"X\" coordinate of the upper left corner of the second rectangle.\r\n\t * @param {number} rectangleY2 - The \"Y\" coordinate of the upper left corner of the second rectangle.\r\n\t * @param {number} rectangleWidth2 - The width of the second rectangle.\r\n\t * @param {number} rectangleHeight2 - The height of the second rectangle.\r\n\t * @returns {boolean} Returns whether the rectangle is over the other rectangle.\r\n\t * @todo Think about using \"rotation\" and \"rotation2\" parameters to accept rotated rectangles.\r\n\t */","meta":{"range":[15751,16167],"filename":"CB_Collisions.js","lineno":326,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100066624","name":"CB_Collisions.isRectangleOverRectangle","type":"FunctionExpression","paramnames":["rectangleX","rectangleY","rectangleWidth","rectangleHeight","rectangleX2","rectangleY2","rectangleWidth2","rectangleHeight2"]}},"description":"<p>Tells whether a rectangle is over another rectangle.</p>","kind":"function","params":[{"type":{"names":["number"]},"description":"<p>The &quot;X&quot; coordinate of the upper left corner of the first rectangle.</p>","name":"rectangleX"},{"type":{"names":["number"]},"description":"<p>The &quot;Y&quot; coordinate of the upper left corner of the first rectangle.</p>","name":"rectangleY"},{"type":{"names":["number"]},"description":"<p>The width of the first rectangle.</p>","name":"rectangleWidth"},{"type":{"names":["number"]},"description":"<p>The height of the first rectangle.</p>","name":"rectangleHeight"},{"type":{"names":["number"]},"description":"<p>The &quot;X&quot; coordinate of the upper left corner of the second rectangle.</p>","name":"rectangleX2"},{"type":{"names":["number"]},"description":"<p>The &quot;Y&quot; coordinate of the upper left corner of the second rectangle.</p>","name":"rectangleY2"},{"type":{"names":["number"]},"description":"<p>The width of the second rectangle.</p>","name":"rectangleWidth2"},{"type":{"names":["number"]},"description":"<p>The height of the second rectangle.</p>","name":"rectangleHeight2"}],"returns":[{"type":{"names":["boolean"]},"description":"<p>Returns whether the rectangle is over the other rectangle.</p>"}],"todo":["Think about using \"rotation\" and \"rotation2\" parameters to accept rotated rectangles."],"name":"isRectangleOverRectangle","longname":"CB_Collisions.isRectangleOverRectangle","memberof":"CB_Collisions","scope":"static"},{"comment":"/**\r\n\t * Tells whether a rectangle is touching (maybe over) another rectangle. This will also return true if they are adjacent (next to each other).\r\n\t * @function\r\n\t * @param {number} rectangleX - The \"X\" coordinate of the upper left corner of the first rectangle.\r\n\t * @param {number} rectangleY - The \"Y\" coordinate of the upper left corner of the first rectangle.\r\n\t * @param {number} rectangleWidth - The width of the first rectangle.\r\n\t * @param {number} rectangleHeight - The height of the first rectangle.\r\n\t * @param {number} rectangleX2 - The \"X\" coordinate of the upper left corner of the second rectangle.\r\n\t * @param {number} rectangleY2 - The \"Y\" coordinate of the upper left corner of the second rectangle.\r\n\t * @param {number} rectangleWidth2 - The width of the second rectangle.\r\n\t * @param {number} rectangleHeight2 - The height of the second rectangle.\r\n\t * @returns {boolean} Returns whether the rectangle is touching (maybe over) the other rectangle. This will also return true if they are adjacent (next to each other).\r\n\t * @todo Think about using \"rotation\" and \"rotation2\" parameters to accept rotated rectangles.\r\n\t */","meta":{"range":[17332,17754],"filename":"CB_Collisions.js","lineno":349,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100066675","name":"CB_Collisions.isRectangleTouchingRectangle","type":"FunctionExpression","paramnames":["rectangleX","rectangleY","rectangleWidth","rectangleHeight","rectangleX2","rectangleY2","rectangleWidth2","rectangleHeight2"]}},"description":"<p>Tells whether a rectangle is touching (maybe over) another rectangle. This will also return true if they are adjacent (next to each other).</p>","kind":"function","params":[{"type":{"names":["number"]},"description":"<p>The &quot;X&quot; coordinate of the upper left corner of the first rectangle.</p>","name":"rectangleX"},{"type":{"names":["number"]},"description":"<p>The &quot;Y&quot; coordinate of the upper left corner of the first rectangle.</p>","name":"rectangleY"},{"type":{"names":["number"]},"description":"<p>The width of the first rectangle.</p>","name":"rectangleWidth"},{"type":{"names":["number"]},"description":"<p>The height of the first rectangle.</p>","name":"rectangleHeight"},{"type":{"names":["number"]},"description":"<p>The &quot;X&quot; coordinate of the upper left corner of the second rectangle.</p>","name":"rectangleX2"},{"type":{"names":["number"]},"description":"<p>The &quot;Y&quot; coordinate of the upper left corner of the second rectangle.</p>","name":"rectangleY2"},{"type":{"names":["number"]},"description":"<p>The width of the second rectangle.</p>","name":"rectangleWidth2"},{"type":{"names":["number"]},"description":"<p>The height of the second rectangle.</p>","name":"rectangleHeight2"}],"returns":[{"type":{"names":["boolean"]},"description":"<p>Returns whether the rectangle is touching (maybe over) the other rectangle. This will also return true if they are adjacent (next to each other).</p>"}],"todo":["Think about using \"rotation\" and \"rotation2\" parameters to accept rotated rectangles."],"name":"isRectangleTouchingRectangle","longname":"CB_Collisions.isRectangleTouchingRectangle","memberof":"CB_Collisions","scope":"static"},{"comment":"/**\r\n\t * Tells whether a rectangle is over a given DOM element (it will be considered a rectangle).\r\n\t * @function\r\n\t * @param {number} rectangleX - The \"X\" coordinate of the upper left corner of the first rectangle.\r\n\t * @param {number} rectangleY - The \"Y\" coordinate of the upper left corner of the first rectangle.\r\n\t * @param {number} rectangleWidth - The width of the first rectangle.\r\n\t * @param {number} rectangleHeight - The height of the first rectangle.\r\n \t * @param {Element} element - The DOM element that we want to check (it will be considered a rectangle).\r\n\t * @returns {boolean} Returns whether the rectangle is over the given DOM element (it will be considered a rectangle).\r\n\t * @todo Think about using a \"rotation\" parameter to accept rotated rectangles.\r\n\t */","meta":{"range":[18553,18981],"filename":"CB_Collisions.js","lineno":369,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100066726","name":"CB_Collisions.isRectangleOverElement","type":"FunctionExpression","paramnames":["rectangleX","rectangleY","rectangleWidth","rectangleHeight","element"]}},"description":"<p>Tells whether a rectangle is over a given DOM element (it will be considered a rectangle).</p>","kind":"function","params":[{"type":{"names":["number"]},"description":"<p>The &quot;X&quot; coordinate of the upper left corner of the first rectangle.</p>","name":"rectangleX"},{"type":{"names":["number"]},"description":"<p>The &quot;Y&quot; coordinate of the upper left corner of the first rectangle.</p>","name":"rectangleY"},{"type":{"names":["number"]},"description":"<p>The width of the first rectangle.</p>","name":"rectangleWidth"},{"type":{"names":["number"]},"description":"<p>The height of the first rectangle.</p>","name":"rectangleHeight"},{"type":{"names":["Element"]},"description":"<p>The DOM element that we want to check (it will be considered a rectangle).</p>","name":"element"}],"returns":[{"type":{"names":["boolean"]},"description":"<p>Returns whether the rectangle is over the given DOM element (it will be considered a rectangle).</p>"}],"todo":["Think about using a \"rotation\" parameter to accept rotated rectangles."],"name":"isRectangleOverElement","longname":"CB_Collisions.isRectangleOverElement","memberof":"CB_Collisions","scope":"static"},{"comment":"/**\r\n\t * Tells whether a rectangle is touching (maybe over) a given DOM element (it will be considered a rectangle). This will also return true if they are adjacent (next to each other).\r\n\t * @function\r\n\t * @param {number} rectangleX - The \"X\" coordinate of the upper left corner of the first rectangle.\r\n\t * @param {number} rectangleY - The \"Y\" coordinate of the upper left corner of the first rectangle.\r\n\t * @param {number} rectangleWidth - The width of the first rectangle.\r\n\t * @param {number} rectangleHeight - The height of the first rectangle.\r\n \t * @param {Element} element - The DOM element that we want to check (it will be considered a rectangle).\r\n\t * @returns {boolean} Returns whether the rectangle is touching (maybe over) the given DOM element (it will be considered a rectangle). This will also return true if they are adjacent (next to each other).\r\n\t * @todo Think about using a \"rotation\" parameter to accept rotated rectangles.\r\n\t */","meta":{"range":[19954,20390],"filename":"CB_Collisions.js","lineno":387,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100066779","name":"CB_Collisions.isRectangleTouchingElement","type":"FunctionExpression","paramnames":["rectangleX","rectangleY","rectangleWidth","rectangleHeight","element"]}},"description":"<p>Tells whether a rectangle is touching (maybe over) a given DOM element (it will be considered a rectangle). This will also return true if they are adjacent (next to each other).</p>","kind":"function","params":[{"type":{"names":["number"]},"description":"<p>The &quot;X&quot; coordinate of the upper left corner of the first rectangle.</p>","name":"rectangleX"},{"type":{"names":["number"]},"description":"<p>The &quot;Y&quot; coordinate of the upper left corner of the first rectangle.</p>","name":"rectangleY"},{"type":{"names":["number"]},"description":"<p>The width of the first rectangle.</p>","name":"rectangleWidth"},{"type":{"names":["number"]},"description":"<p>The height of the first rectangle.</p>","name":"rectangleHeight"},{"type":{"names":["Element"]},"description":"<p>The DOM element that we want to check (it will be considered a rectangle).</p>","name":"element"}],"returns":[{"type":{"names":["boolean"]},"description":"<p>Returns whether the rectangle is touching (maybe over) the given DOM element (it will be considered a rectangle). This will also return true if they are adjacent (next to each other).</p>"}],"todo":["Think about using a \"rotation\" parameter to accept rotated rectangles."],"name":"isRectangleTouchingElement","longname":"CB_Collisions.isRectangleTouchingElement","memberof":"CB_Collisions","scope":"static"},{"comment":"/**\r\n\t * Tells whether two given DOM elements are over each other (they will be considered a rectangle).\r\n\t * @function\r\n \t * @param {Element} element - The first DOM element that we want to check (it will be considered a rectangle).\r\n\t * @param {Element} element2 - The second DOM element that we want to check (it will be considered a rectangle).\r\n\t * @returns {boolean} Returns whether the two given DOM elements are over each other (they will be considered a rectangle).\r\n\t */","meta":{"range":[20884,21214],"filename":"CB_Collisions.js","lineno":401,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100066832","name":"CB_Collisions.isElementOverElement","type":"FunctionExpression","paramnames":["element","element2"]}},"description":"<p>Tells whether two given DOM elements are over each other (they will be considered a rectangle).</p>","kind":"function","params":[{"type":{"names":["Element"]},"description":"<p>The first DOM element that we want to check (it will be considered a rectangle).</p>","name":"element"},{"type":{"names":["Element"]},"description":"<p>The second DOM element that we want to check (it will be considered a rectangle).</p>","name":"element2"}],"returns":[{"type":{"names":["boolean"]},"description":"<p>Returns whether the two given DOM elements are over each other (they will be considered a rectangle).</p>"}],"name":"isElementOverElement","longname":"CB_Collisions.isElementOverElement","memberof":"CB_Collisions","scope":"static"},{"comment":"/**\r\n\t * Tells whether two given DOM elements are touching each other, maybe over each other (they will be considered a rectangle). This will also return true if they are adjacent (next to each other).\r\n\t * @function\r\n \t * @param {Element} element - The first DOM element that we want to check (it will be considered a rectangle).\r\n\t * @param {Element} element2 - The second DOM element that we want to check (it will be considered a rectangle).\r\n\t * @returns {boolean} Returns whether the two given DOM elements are touching each other, maybe over each other (they will be considered a rectangle). This will also return true if they are adjacent (next to each other).\r\n\t */","meta":{"range":[21902,22240],"filename":"CB_Collisions.js","lineno":415,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100066879","name":"CB_Collisions.isElementTouchingElement","type":"FunctionExpression","paramnames":["element","element2"]}},"description":"<p>Tells whether two given DOM elements are touching each other, maybe over each other (they will be considered a rectangle). This will also return true if they are adjacent (next to each other).</p>","kind":"function","params":[{"type":{"names":["Element"]},"description":"<p>The first DOM element that we want to check (it will be considered a rectangle).</p>","name":"element"},{"type":{"names":["Element"]},"description":"<p>The second DOM element that we want to check (it will be considered a rectangle).</p>","name":"element2"}],"returns":[{"type":{"names":["boolean"]},"description":"<p>Returns whether the two given DOM elements are touching each other, maybe over each other (they will be considered a rectangle). This will also return true if they are adjacent (next to each other).</p>"}],"name":"isElementTouchingElement","longname":"CB_Collisions.isElementTouchingElement","memberof":"CB_Collisions","scope":"static"},{"comment":"/**\r\n\t * Tells whether a circle is over another circle.\r\n\t * @function\r\n\t * @param {number} centreX - The \"X\" coordinate of the center of the first circle.\r\n\t * @param {number} centreY - The \"Y\" coordinate of the center of the first circle.\r\n\t * @param {number} radius - The radius of the first circle.\r\n\t * @param {number} centreX2 - The \"X\" coordinate of the center of the second circle.\r\n\t * @param {number} centreY2 - The \"Y\" coordinate of the center of the second circle.\r\n\t * @param {number} radius2 - The radius of the second circle.\r\n\t * @returns {boolean} Returns whether the circle is over the other circle.\r\n\t */","meta":{"range":[22881,23199],"filename":"CB_Collisions.js","lineno":433,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100066926","name":"CB_Collisions.isCircleOverCircle","type":"FunctionExpression","paramnames":["centreX","centreY","radius","centreX2","centreY2","radius2"]}},"description":"<p>Tells whether a circle is over another circle.</p>","kind":"function","params":[{"type":{"names":["number"]},"description":"<p>The &quot;X&quot; coordinate of the center of the first circle.</p>","name":"centreX"},{"type":{"names":["number"]},"description":"<p>The &quot;Y&quot; coordinate of the center of the first circle.</p>","name":"centreY"},{"type":{"names":["number"]},"description":"<p>The radius of the first circle.</p>","name":"radius"},{"type":{"names":["number"]},"description":"<p>The &quot;X&quot; coordinate of the center of the second circle.</p>","name":"centreX2"},{"type":{"names":["number"]},"description":"<p>The &quot;Y&quot; coordinate of the center of the second circle.</p>","name":"centreY2"},{"type":{"names":["number"]},"description":"<p>The radius of the second circle.</p>","name":"radius2"}],"returns":[{"type":{"names":["boolean"]},"description":"<p>Returns whether the circle is over the other circle.</p>"}],"name":"isCircleOverCircle","longname":"CB_Collisions.isCircleOverCircle","memberof":"CB_Collisions","scope":"static"},{"comment":"/**\r\n\t * Tells whether a circle is touching (maybe over) another circle. This will also return true if they are adjacent (next to each other).\r\n\t * @function\r\n\t * @param {number} centreX - The \"X\" coordinate of the center of the first circle.\r\n\t * @param {number} centreY - The \"Y\" coordinate of the center of the first circle.\r\n\t * @param {number} radius - The radius of the first circle.\r\n\t * @param {number} centreX2 - The \"X\" coordinate of the center of the second circle.\r\n\t * @param {number} centreY2 - The \"Y\" coordinate of the center of the second circle.\r\n\t * @param {number} radius2 - The radius of the second circle.\r\n\t * @returns {boolean} Returns whether the circle is touching (maybe over) the other circle. This will also return true if they are adjacent (next to each other).\r\n\t */","meta":{"range":[24014,24338],"filename":"CB_Collisions.js","lineno":451,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100066952","name":"CB_Collisions.isCircleTouchingCircle","type":"FunctionExpression","paramnames":["centreX","centreY","radius","centreX2","centreY2","radius2"]}},"description":"<p>Tells whether a circle is touching (maybe over) another circle. This will also return true if they are adjacent (next to each other).</p>","kind":"function","params":[{"type":{"names":["number"]},"description":"<p>The &quot;X&quot; coordinate of the center of the first circle.</p>","name":"centreX"},{"type":{"names":["number"]},"description":"<p>The &quot;Y&quot; coordinate of the center of the first circle.</p>","name":"centreY"},{"type":{"names":["number"]},"description":"<p>The radius of the first circle.</p>","name":"radius"},{"type":{"names":["number"]},"description":"<p>The &quot;X&quot; coordinate of the center of the second circle.</p>","name":"centreX2"},{"type":{"names":["number"]},"description":"<p>The &quot;Y&quot; coordinate of the center of the second circle.</p>","name":"centreY2"},{"type":{"names":["number"]},"description":"<p>The radius of the second circle.</p>","name":"radius2"}],"returns":[{"type":{"names":["boolean"]},"description":"<p>Returns whether the circle is touching (maybe over) the other circle. This will also return true if they are adjacent (next to each other).</p>"}],"name":"isCircleTouchingCircle","longname":"CB_Collisions.isCircleTouchingCircle","memberof":"CB_Collisions","scope":"static"},{"comment":"/**\r\n\t * Tells whether a circle is over a given rectangle.\r\n\t * @function\r\n\t * @param {number} centreX - The \"X\" coordinate of the center of the first circle.\r\n\t * @param {number} centreY - The \"Y\" coordinate of the center of the first circle.\r\n\t * @param {number} radius - The radius of the first circle.\r\n\t * @param {number} rectangleX - The \"X\" coordinate of the upper left corner of the first rectangle.\r\n\t * @param {number} rectangleY - The \"Y\" coordinate of the upper left corner of the first rectangle.\r\n\t * @param {number} rectangleWidth - The width of the first rectangle.\r\n\t * @param {number} rectangleHeight - The height of the first rectangle.\r\n\t * @returns {boolean} Returns whether the circle is over the rectangle.\r\n\t * @todo Think about using a \"rotation\" parameter to accept rotated rectangles.\r\n\t */","meta":{"range":[25299,25976],"filename":"CB_Collisions.js","lineno":472,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100066978","name":"CB_Collisions.isRectangleOverCircle","type":"FunctionExpression","paramnames":["centreX","centreY","radius","rectangleX","rectangleY","rectangleWidth","rectangleHeight"]},"vars":{"distanceX":"CB_Collisions.isRectangleOverCircle~distanceX","distanceY":"CB_Collisions.isRectangleOverCircle~distanceY","dx":"CB_Collisions.isRectangleOverCircle~dx","dy":"CB_Collisions.isRectangleOverCircle~dy"}},"description":"<p>Tells whether a circle is over a given rectangle.</p>","kind":"function","params":[{"type":{"names":["number"]},"description":"<p>The &quot;X&quot; coordinate of the center of the first circle.</p>","name":"centreX"},{"type":{"names":["number"]},"description":"<p>The &quot;Y&quot; coordinate of the center of the first circle.</p>","name":"centreY"},{"type":{"names":["number"]},"description":"<p>The radius of the first circle.</p>","name":"radius"},{"type":{"names":["number"]},"description":"<p>The &quot;X&quot; coordinate of the upper left corner of the first rectangle.</p>","name":"rectangleX"},{"type":{"names":["number"]},"description":"<p>The &quot;Y&quot; coordinate of the upper left corner of the first rectangle.</p>","name":"rectangleY"},{"type":{"names":["number"]},"description":"<p>The width of the first rectangle.</p>","name":"rectangleWidth"},{"type":{"names":["number"]},"description":"<p>The height of the first rectangle.</p>","name":"rectangleHeight"}],"returns":[{"type":{"names":["boolean"]},"description":"<p>Returns whether the circle is over the rectangle.</p>"}],"todo":["Think about using a \"rotation\" parameter to accept rotated rectangles."],"name":"isRectangleOverCircle","longname":"CB_Collisions.isRectangleOverCircle","memberof":"CB_Collisions","scope":"static"},{"comment":"/**\r\n\t * Tells whether a circle is touching (maybe over) a given rectangle.\r\n\t * @function\r\n\t * @param {number} rectangleX - The \"X\" coordinate of the upper left corner of the first rectangle.\r\n\t * @param {number} rectangleY - The \"Y\" coordinate of the upper left corner of the first rectangle.\r\n\t * @param {number} rectangleWidth - The width of the first rectangle.\r\n\t * @param {number} rectangleHeight - The height of the first rectangle.\r\n\t * @param {number} centreX - The \"X\" coordinate of the center of the first circle.\r\n\t * @param {number} centreY - The \"Y\" coordinate of the center of the first circle.\r\n\t * @param {number} radius - The radius of the first circle.\r\n\t * @returns {boolean} Returns whether the circle is touching (maybe over) the rectangle. This will also return true if they are adjacent (next to each other).\r\n\t * @todo Think about using a \"rotation\" parameter to accept rotated rectangles.\r\n\t //* Source (modified): markE at https://stackoverflow.com/questions/21089959/detecting-collision-of-rectangle-with-circle\r\n\t */","meta":{"range":[27042,27726],"filename":"CB_Collisions.js","lineno":504,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100067088","name":"CB_Collisions.isRectangleTouchingCircle","type":"FunctionExpression","paramnames":["rectangleX","rectangleY","rectangleWidth","rectangleHeight","centreX","centreY","radius"]},"vars":{"distanceX":"CB_Collisions.isRectangleTouchingCircle~distanceX","distanceY":"CB_Collisions.isRectangleTouchingCircle~distanceY","dx":"CB_Collisions.isRectangleTouchingCircle~dx","dy":"CB_Collisions.isRectangleTouchingCircle~dy"}},"description":"<p>Tells whether a circle is touching (maybe over) a given rectangle.</p>","kind":"function","params":[{"type":{"names":["number"]},"description":"<p>The &quot;X&quot; coordinate of the upper left corner of the first rectangle.</p>","name":"rectangleX"},{"type":{"names":["number"]},"description":"<p>The &quot;Y&quot; coordinate of the upper left corner of the first rectangle.</p>","name":"rectangleY"},{"type":{"names":["number"]},"description":"<p>The width of the first rectangle.</p>","name":"rectangleWidth"},{"type":{"names":["number"]},"description":"<p>The height of the first rectangle.</p>","name":"rectangleHeight"},{"type":{"names":["number"]},"description":"<p>The &quot;X&quot; coordinate of the center of the first circle.</p>","name":"centreX"},{"type":{"names":["number"]},"description":"<p>The &quot;Y&quot; coordinate of the center of the first circle.</p>","name":"centreY"},{"type":{"names":["number"]},"description":"<p>The radius of the first circle.</p>","name":"radius"}],"returns":[{"type":{"names":["boolean"]},"description":"<p>Returns whether the circle is touching (maybe over) the rectangle. This will also return true if they are adjacent (next to each other).</p>"}],"todo":["Think about using a \"rotation\" parameter to accept rotated rectangles.\r\n\t //* Source (modified): markE at https://stackoverflow.com/questions/21089959/detecting-collision-of-rectangle-with-circle"],"name":"isRectangleTouchingCircle","longname":"CB_Collisions.isRectangleTouchingCircle","memberof":"CB_Collisions","scope":"static"},{"comment":"/**\r\n\t * Tells whether a line (infinite) is over a given circle.\r\n\t * @function\r\n\t * @param {number} lineX1 - The \"X\" coordinate of a first point of the line.\r\n\t * @param {number} lineY1 - The \"Y\" coordinate of a first point of the line.\r\n\t * @param {number} lineX2 - The \"X\" coordinate of a second point of the line.\r\n\t * @param {number} lineY2 - The \"Y\" coordinate of a second point of the line.\r\n\t * @param {number} centreX - The \"X\" coordinate of the center of the first circle.\r\n\t * @param {number} centreY - The \"Y\" coordinate of the center of the first circle.\r\n\t * @param {number} radius - The radius of the first circle.\r\n\t * @returns {boolean} Returns whether the line (infinite) is over the circle.\r\n\t */","meta":{"range":[28535,29375],"filename":"CB_Collisions.js","lineno":535,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100067198","name":"CB_Collisions.isLineOverCircle","type":"FunctionExpression","paramnames":["lineX1","lineY1","lineX2","lineY2","centreX","centreY","radius"]},"vars":{"dx":"CB_Collisions.isLineOverCircle~dx","dy":"CB_Collisions.isLineOverCircle~dy","lcx":"CB_Collisions.isLineOverCircle~lcx","lcy":"CB_Collisions.isLineOverCircle~lcy","dLen2":"CB_Collisions.isLineOverCircle~dLen2","px":"CB_Collisions.isLineOverCircle~px","py":"CB_Collisions.isLineOverCircle~py","dp":"CB_Collisions.isLineOverCircle~dp","pLen2":"CB_Collisions.isLineOverCircle~pLen2"}},"description":"<p>Tells whether a line (infinite) is over a given circle.</p>","kind":"function","params":[{"type":{"names":["number"]},"description":"<p>The &quot;X&quot; coordinate of a first point of the line.</p>","name":"lineX1"},{"type":{"names":["number"]},"description":"<p>The &quot;Y&quot; coordinate of a first point of the line.</p>","name":"lineY1"},{"type":{"names":["number"]},"description":"<p>The &quot;X&quot; coordinate of a second point of the line.</p>","name":"lineX2"},{"type":{"names":["number"]},"description":"<p>The &quot;Y&quot; coordinate of a second point of the line.</p>","name":"lineY2"},{"type":{"names":["number"]},"description":"<p>The &quot;X&quot; coordinate of the center of the first circle.</p>","name":"centreX"},{"type":{"names":["number"]},"description":"<p>The &quot;Y&quot; coordinate of the center of the first circle.</p>","name":"centreY"},{"type":{"names":["number"]},"description":"<p>The radius of the first circle.</p>","name":"radius"}],"returns":[{"type":{"names":["boolean"]},"description":"<p>Returns whether the line (infinite) is over the circle.</p>"}],"name":"isLineOverCircle","longname":"CB_Collisions.isLineOverCircle","memberof":"CB_Collisions","scope":"static"},{"comment":"/**\r\n\t * Tells whether a line (infinite) is touching (maybe over) a given circle.\r\n\t * @function\r\n\t * @param {number} lineX1 - The \"X\" coordinate of a first point of the line.\r\n\t * @param {number} lineY1 - The \"Y\" coordinate of a first point of the line.\r\n\t * @param {number} lineX2 - The \"X\" coordinate of a second point of the line.\r\n\t * @param {number} lineY2 - The \"Y\" coordinate of a second point of the line.\r\n\t * @param {number} centreX - The \"X\" coordinate of the center of the first circle.\r\n\t * @param {number} centreY - The \"Y\" coordinate of the center of the first circle.\r\n\t * @param {number} radius - The radius of the first circle.\r\n\t * @returns {boolean} Returns whether the line (infinite) is touching (maybe over) the circle.\r\n\t */","meta":{"range":[30218,31027],"filename":"CB_Collisions.js","lineno":576,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100067343","name":"CB_Collisions.isLineTouchingCircle","type":"FunctionExpression","paramnames":["lineX1","lineY1","lineX2","lineY2","centreX","centreY","radius"]},"vars":{"dx":"CB_Collisions.isLineTouchingCircle~dx","dy":"CB_Collisions.isLineTouchingCircle~dy","lcx":"CB_Collisions.isLineTouchingCircle~lcx","lcy":"CB_Collisions.isLineTouchingCircle~lcy","dLen2":"CB_Collisions.isLineTouchingCircle~dLen2","px":"CB_Collisions.isLineTouchingCircle~px","py":"CB_Collisions.isLineTouchingCircle~py","dp":"CB_Collisions.isLineTouchingCircle~dp","pLen2":"CB_Collisions.isLineTouchingCircle~pLen2"}},"description":"<p>Tells whether a line (infinite) is touching (maybe over) a given circle.</p>","kind":"function","params":[{"type":{"names":["number"]},"description":"<p>The &quot;X&quot; coordinate of a first point of the line.</p>","name":"lineX1"},{"type":{"names":["number"]},"description":"<p>The &quot;Y&quot; coordinate of a first point of the line.</p>","name":"lineY1"},{"type":{"names":["number"]},"description":"<p>The &quot;X&quot; coordinate of a second point of the line.</p>","name":"lineX2"},{"type":{"names":["number"]},"description":"<p>The &quot;Y&quot; coordinate of a second point of the line.</p>","name":"lineY2"},{"type":{"names":["number"]},"description":"<p>The &quot;X&quot; coordinate of the center of the first circle.</p>","name":"centreX"},{"type":{"names":["number"]},"description":"<p>The &quot;Y&quot; coordinate of the center of the first circle.</p>","name":"centreY"},{"type":{"names":["number"]},"description":"<p>The radius of the first circle.</p>","name":"radius"}],"returns":[{"type":{"names":["boolean"]},"description":"<p>Returns whether the line (infinite) is touching (maybe over) the circle.</p>"}],"name":"isLineTouchingCircle","longname":"CB_Collisions.isLineTouchingCircle","memberof":"CB_Collisions","scope":"static"},{"comment":"/**\r\n * @file Data and related management.\r\n * @author Joan Alba Maldonado <workindalian@gmail.com>\r\n * @todo A function equivalent to htmlentities/htmlspecialchars (as in PHP).\r\n */","meta":{"filename":"CB_data.js","lineno":1,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{}},"name":"CrossBase/general/CB_data.js","kind":"file","description":"<p>Data and related management.</p>","preserveName":true,"author":["Joan Alba Maldonado <workindalian@gmail.com>"],"todo":["A function equivalent to htmlentities/htmlspecialchars (as in PHP)."],"longname":"CrossBase/general/CB_data.js","scope":"global"},{"comment":"/**\r\n * Implementation of [Array.lastIndexOf]{@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/lastIndexOf} method for browsers that do not support it natively.\r\n <br>\r\n Returns the last index of a given element that exists in an array (starting from a certain index if desired) or -1 if not found.\r\n * @function\r\n * @param {array} array - Desired array.\r\n * @param {*} searchElement - Element we want to search. Note that it is type sensitive.\r\n * @param {integer} [fromIndex=array.length - 1] - First index of the given array where the search will start.\r\n * @param {boolean} [extendedDOM=false] - Defines whether the function is being called by a native function which was extended. Internal usage recommended only.\r\n * @returns {integer} \r\n * @todo Implement the \"fromIndex\" in the polyfill.\r\n */","meta":{"range":[2203,3270],"filename":"CB_data.js","lineno":37,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100067729","name":"CB_lastIndexOf","type":"FunctionDeclaration","paramnames":["array","searchElement","fromIndex","extendedDOM"]},"vars":{"n":"CB_lastIndexOf~n","k":"CB_lastIndexOf~k","t":"CB_lastIndexOf~t","len":"CB_lastIndexOf~len"}},"description":"<p>Implementation of [Array.lastIndexOf]{@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/lastIndexOf} method for browsers that do not support it natively.<br> <br><br> Returns the last index of a given element that exists in an array (starting from a certain index if desired) or -1 if not found.</p>","kind":"function","params":[{"type":{"names":["array"]},"description":"<p>Desired array.</p>","name":"array"},{"type":{"names":["*"]},"description":"<p>Element we want to search. Note that it is type sensitive.</p>","name":"searchElement"},{"type":{"names":["integer"]},"optional":true,"defaultvalue":"array.length - 1","description":"<p>First index of the given array where the search will start.</p>","name":"fromIndex"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>Defines whether the function is being called by a native function which was extended. Internal usage recommended only.</p>","name":"extendedDOM"}],"returns":[{"type":{"names":["integer"]}}],"todo":["Implement the \"fromIndex\" in the polyfill."],"name":"CB_lastIndexOf","longname":"CB_lastIndexOf","scope":"global"},{"comment":"/**\r\n * Implementation of [Array.indexOf]{@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/indexOf} method for arrays in browsers that do not support it natively.\r\n <br>\r\n Returns the first index of a given element that exists in an array (starting from a certain index if desired) or -1 if not found.\r\n * @function\r\n * @param {array} array - Desired array.\r\n * @param {*} searchElement - Element we want to search. Note that it is type sensitive.\r\n * @param {integer} [fromIndex=0] - First index of the given array where the search will start.\r\n * @param {boolean} [extendedDOM=false] - Defines whether the function is being called by a native function which was extended. Internal usage recommended only.\r\n * @returns {integer}\r\n */","meta":{"range":[4183,5043],"filename":"CB_data.js","lineno":86,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100067955","name":"CB_indexOf","type":"FunctionDeclaration","paramnames":["array","searchElement","fromIndex","extendedDOM"]},"vars":{"length":"CB_indexOf~length","fromIndex":"CB_indexOf~fromIndex"}},"description":"<p>Implementation of [Array.indexOf]{@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/indexOf} method for arrays in browsers that do not support it natively.<br> <br><br> Returns the first index of a given element that exists in an array (starting from a certain index if desired) or -1 if not found.</p>","kind":"function","params":[{"type":{"names":["array"]},"description":"<p>Desired array.</p>","name":"array"},{"type":{"names":["*"]},"description":"<p>Element we want to search. Note that it is type sensitive.</p>","name":"searchElement"},{"type":{"names":["integer"]},"optional":true,"defaultvalue":0,"description":"<p>First index of the given array where the search will start.</p>","name":"fromIndex"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>Defines whether the function is being called by a native function which was extended. Internal usage recommended only.</p>","name":"extendedDOM"}],"returns":[{"type":{"names":["integer"]}}],"name":"CB_indexOf","longname":"CB_indexOf","scope":"global"},{"comment":"/**\r\n * Implementation of the [Array.forEach]{@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach} method for browsers that do not support it natively.\r\n <br>\r\n Executes a function for each element of a given array.\r\n * @function\r\n * @param {array} array - Desired array.\r\n * @param {function} callback - Function that will be executed for each element of the given array. Following the same rules as the native [Array.forEach]{@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach} method, it will receive three arguments: currentValue, currentIndex and the array given.\r\n * @param {*} [thisArg] - Value that will be passed as \"this\" every time the function is called.\r\n * @param {boolean} [extendedDOM=false] - Defines whether the function is being called by a native function which was extended. Internal usage recommended only.\r\n * @returns {array|undefined} If the \"extendedDOM\" parameter is set to false, returns the given \"array\" again. Otherwise, returns undefined.\r\n */","meta":{"range":[6252,6974],"filename":"CB_data.js","lineno":135,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100068081","name":"CB_forEach","type":"FunctionDeclaration","paramnames":["array","callback","thisArg","extendedDOM"]},"vars":{"t":"CB_forEach~t","len":"CB_forEach~len","i":"CB_forEach~i"}},"description":"<p>Implementation of the [Array.forEach]{@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach} method for browsers that do not support it natively.<br> <br><br> Executes a function for each element of a given array.</p>","kind":"function","params":[{"type":{"names":["array"]},"description":"<p>Desired array.</p>","name":"array"},{"type":{"names":["function"]},"description":"<p>Function that will be executed for each element of the given array. Following the same rules as the native [Array.forEach]{@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach} method, it will receive three arguments: currentValue, currentIndex and the array given.</p>","name":"callback"},{"type":{"names":["*"]},"optional":true,"description":"<p>Value that will be passed as &quot;this&quot; every time the function is called.</p>","name":"thisArg"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>Defines whether the function is being called by a native function which was extended. Internal usage recommended only.</p>","name":"extendedDOM"}],"returns":[{"type":{"names":["array","undefined"]},"description":"<p>If the &quot;extendedDOM&quot; parameter is set to false, returns the given &quot;array&quot; again. Otherwise, returns undefined.</p>"}],"name":"CB_forEach","longname":"CB_forEach","scope":"global"},{"comment":"/**\r\n * Implementation of [Array.isArray]{@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/isArray} method for browsers that do not support it natively.\r\n <br>\r\n Returns whether a given element is an array or not.\r\n * @function\r\n * @param {*} element - The element we want to check.\r\n * @param {boolean} [extendedDOM=false] - Defines whether the function is being called by a native function which was extended. Internal usage recommended only.\r\n * @returns {boolean}\r\n * @todo Think about a parameter to check whether the given array is a typed array (for example, 'Uint8Array') or not.\r\n */","meta":{"range":[7627,8115],"filename":"CB_data.js","lineno":171,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100068200","name":"CB_isArray","type":"FunctionDeclaration","paramnames":["element","extendedDOM"]},"vars":{"isArray":"CB_isArray~isArray"}},"description":"<p>Implementation of [Array.isArray]{@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/isArray} method for browsers that do not support it natively.<br> <br><br> Returns whether a given element is an array or not.</p>","kind":"function","params":[{"type":{"names":["*"]},"description":"<p>The element we want to check.</p>","name":"element"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>Defines whether the function is being called by a native function which was extended. Internal usage recommended only.</p>","name":"extendedDOM"}],"returns":[{"type":{"names":["boolean"]}}],"todo":["Think about a parameter to check whether the given array is a typed array (for example, 'Uint8Array') or not."],"name":"CB_isArray","longname":"CB_isArray","scope":"global"},{"comment":"/**\r\n * Alias for {@link CB_sizeOf}.\r\n * @function CB_sizeof\r\n * @see {@link CB_sizeOf}\r\n */","meta":{"filename":"CB_data.js","lineno":194,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{}},"description":"<p>Alias for {@link CB_sizeOf}.</p>","kind":"function","name":"CB_sizeof","see":["{@link CB_sizeOf}"],"longname":"CB_sizeof","scope":"global"},{"comment":"/**\r\n * Returns the size of an object or array.\r\n * @function\r\n * @param {Object|array} element - The element whose size we want to know. It should be an object or an array.\r\n * @param {boolean} [onlyOwn=false] - If the \"element\" given is not an object, this parameter will be ignored. Otherwise, if it is set to true, it will only have into account the properties which the object has as their own property and have not been inherited (using the [Object.hasOwnProperty]{@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/hasOwnProperty} method).\r\n * @returns {integer} If an object is provided, the size will be the number of its properties. Otherwise, if an array is given, the size will be the numbers of its indexes ([Array.length]{@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/length} property).\r\n */","meta":{"range":[9119,9467],"filename":"CB_data.js","lineno":206,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100068267","name":"CB_sizeOf","type":"FunctionDeclaration","paramnames":["object","onlyOwn"]},"vars":{"size":"CB_sizeOf~size","key":"CB_sizeOf~key"}},"description":"<p>Returns the size of an object or array.</p>","kind":"function","params":[{"type":{"names":["Object","array"]},"description":"<p>The element whose size we want to know. It should be an object or an array.</p>","name":"element"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If the &quot;element&quot; given is not an object, this parameter will be ignored. Otherwise, if it is set to true, it will only have into account the properties which the object has as their own property and have not been inherited (using the [Object.hasOwnProperty]{@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/hasOwnProperty} method).</p>","name":"onlyOwn"}],"returns":[{"type":{"names":["integer"]},"description":"<p>If an object is provided, the size will be the number of its properties. Otherwise, if an array is given, the size will be the numbers of its indexes ([Array.length]{@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/length} property).</p>"}],"name":"CB_sizeOf","longname":"CB_sizeOf","scope":"global"},{"comment":"/**\r\n * Returns whether a given element is a string or not.\r\n * @function\r\n * @param {*} element - The element we want to check.\r\n * @returns {boolean}\r\n */","meta":{"range":[9688,9793],"filename":"CB_data.js","lineno":225,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100068336","name":"CB_isString","type":"FunctionDeclaration","paramnames":["element"]}},"description":"<p>Returns whether a given element is a string or not.</p>","kind":"function","params":[{"type":{"names":["*"]},"description":"<p>The element we want to check.</p>","name":"element"}],"returns":[{"type":{"names":["boolean"]}}],"name":"CB_isString","longname":"CB_isString","scope":"global"},{"comment":"/**\r\n * Returns back the given element if it is a string or an empty string otherwise.\r\n * @function\r\n * @param {*} element - The element that will be checked.\r\n * @returns {string}\r\n */","meta":{"range":[9990,10099],"filename":"CB_data.js","lineno":237,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100068349","name":"CB_forceString","type":"FunctionDeclaration","paramnames":["element"]}},"description":"<p>Returns back the given element if it is a string or an empty string otherwise.</p>","kind":"function","params":[{"type":{"names":["*"]},"description":"<p>The element that will be checked.</p>","name":"element"}],"returns":[{"type":{"names":["string"]}}],"name":"CB_forceString","longname":"CB_forceString","scope":"global"},{"comment":"/**\r\n * Returns back the given element as a string if it could be parsed or an empty string otherwise.\r\n * @function\r\n * @param {*} element - The element that will be checked.\r\n * @returns {string}\r\n */","meta":{"range":[10312,10540],"filename":"CB_data.js","lineno":250,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100068364","name":"CB_parseString","type":"FunctionDeclaration","paramnames":["element"]}},"description":"<p>Returns back the given element as a string if it could be parsed or an empty string otherwise.</p>","kind":"function","params":[{"type":{"names":["*"]},"description":"<p>The element that will be checked.</p>","name":"element"}],"returns":[{"type":{"names":["string"]}}],"name":"CB_parseString","longname":"CB_parseString","scope":"global"},{"comment":"/**\r\n * Trims a given string or array of strings (modifying the given array), taking off the desired strings or otherwise trimming spaces, tabs (\"\\t\"), new lines (\"\\n\") and carriage returns (\"\\r\"). Case sensitive.\r\n * @function\r\n * @param {string|array} element - The element that will be trimmed. It should be either a string or an array of strings.\r\n * @param {string|array} [undesiredStrings=[ \" \", \"\\n\", \"\\r\", \"\\t\" ]] - String or an array with the strings that we want to trim off the given element.\r\n * @returns {string|array} Returns the given element again if it was an string, a number (it will be casted to a string) or an array of strings, trimmed if it has been possible. If it was another type, returns an empty string.\r\n * @todo Accept a \"recursive\" parameter (boolean) to affect multiple levels (array of arrays of strings, etc.).\r\n * @todo Consider accepting objects instead of arrays in the \"element\" parameter.\r\n */","meta":{"range":[11486,12575],"filename":"CB_data.js","lineno":266,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100068402","name":"CB_trim","type":"FunctionDeclaration","paramnames":["element","undesiredStrings"]},"vars":{"x":"CB_trim~x","elementLength":"CB_trim~elementLength","element[undefined]":null,"element":"CB_trim~element"}},"description":"<p>Trims a given string or array of strings (modifying the given array), taking off the desired strings or otherwise trimming spaces, tabs (&quot;\\t&quot;), new lines (&quot;\\n&quot;) and carriage returns (&quot;\\r&quot;). Case sensitive.</p>","kind":"function","params":[{"type":{"names":["string","array"]},"description":"<p>The element that will be trimmed. It should be either a string or an array of strings.</p>","name":"element"},{"type":{"names":["string","array"]},"optional":true,"defaultvalue":"[ \" \", \"\\n\", \"\\r\", \"\\t\" ]","description":"<p>String or an array with the strings that we want to trim off the given element.</p>","name":"undesiredStrings"}],"returns":[{"type":{"names":["string","array"]},"description":"<p>Returns the given element again if it was an string, a number (it will be casted to a string) or an array of strings, trimmed if it has been possible. If it was another type, returns an empty string.</p>"}],"todo":["Accept a \"recursive\" parameter (boolean) to affect multiple levels (array of arrays of strings, etc.).","Consider accepting objects instead of arrays in the \"element\" parameter."],"name":"CB_trim","longname":"CB_trim","scope":"global"},{"comment":"/**\r\n * Trims the right side of a given string or array of strings (modifying the given array), taking off the desired strings or otherwise trimming spaces, tabs (\"\\t\"), new lines (\"\\n\") and carriage returns (\"\\r\"). Case sensitive.\r\n * @function\r\n * @param {string|array} element - The element that will be trimmed. It should be either a string or an array of strings.\r\n * @param {string|array} [undesiredStrings=[ \" \", \"\\n\", \"\\r\", \"\\t\" ]] - String or an array with the strings that we want to trim off the given element.\r\n * @returns {string|array} Returns the given element again if it was an string, a number (it will be casted to a string) or an array of strings, trimmed if it has been possible. If it was another type, returns an empty string.\r\n * @todo Accept a \"recursive\" parameter (boolean) to affect multiple levels (array of arrays of strings, etc.).\r\n * @todo Consider accepting objects instead of arrays in the \"element\" parameter.\r\n * @todo Think about optimizing (using a counter for the number of occurrences in the loop and trim all the occurrences when finished).\r\n */","meta":{"range":[13677,15476],"filename":"CB_data.js","lineno":308,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100068524","name":"CB_rtrim","type":"FunctionDeclaration","paramnames":["element","undesiredStrings"]},"vars":{"x":"CB_rtrim~x","elementLength":"CB_rtrim~elementLength","element[undefined]":null,"element":"CB_rtrim~element","undesiredStrings":"CB_rtrim~undesiredStrings","undesiredStringsLength":"CB_rtrim~undesiredStringsLength","undesiredStringFound":"CB_rtrim~undesiredStringFound"}},"description":"<p>Trims the right side of a given string or array of strings (modifying the given array), taking off the desired strings or otherwise trimming spaces, tabs (&quot;\\t&quot;), new lines (&quot;\\n&quot;) and carriage returns (&quot;\\r&quot;). Case sensitive.</p>","kind":"function","params":[{"type":{"names":["string","array"]},"description":"<p>The element that will be trimmed. It should be either a string or an array of strings.</p>","name":"element"},{"type":{"names":["string","array"]},"optional":true,"defaultvalue":"[ \" \", \"\\n\", \"\\r\", \"\\t\" ]","description":"<p>String or an array with the strings that we want to trim off the given element.</p>","name":"undesiredStrings"}],"returns":[{"type":{"names":["string","array"]},"description":"<p>Returns the given element again if it was an string, a number (it will be casted to a string) or an array of strings, trimmed if it has been possible. If it was another type, returns an empty string.</p>"}],"todo":["Accept a \"recursive\" parameter (boolean) to affect multiple levels (array of arrays of strings, etc.).","Consider accepting objects instead of arrays in the \"element\" parameter.","Think about optimizing (using a counter for the number of occurrences in the loop and trim all the occurrences when finished)."],"name":"CB_rtrim","longname":"CB_rtrim","scope":"global"},{"comment":"/**\r\n * Trims the left side of a given string or array of strings (modifying the given array), taking off the desired strings or otherwise trimming spaces, tabs (\"\\t\"), new lines (\"\\n\") and carriage returns (\"\\r\"). Case sensitive.\r\n * @function\r\n * @param {string|array} element - The element that will be trimmed. It should be either a string or an array of strings.\r\n * @param {string|array} [undesiredStrings=[ \" \", \"\\n\", \"\\r\", \"\\t\" ]] - String or an array with the strings that we want to trim off the given element.\r\n * @returns {string|array} Returns the given element again if it was an string, a number (it will be casted to a string) or an array of strings, trimmed if it has been possible. If it was another type, returns an empty string.\r\n * @todo Accept a \"recursive\" parameter (boolean) to affect multiple levels (array of arrays of strings, etc.).\r\n * @todo Consider accepting objects instead of arrays in the \"element\" parameter.\r\n * @todo Think about optimizing (using a counter for the number of occurrences in the loop and trim all the occurrences when finished).\r\n */","meta":{"range":[16577,18347],"filename":"CB_data.js","lineno":361,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100068731","name":"CB_ltrim","type":"FunctionDeclaration","paramnames":["element","undesiredStrings"]},"vars":{"x":"CB_ltrim~x","elementLength":"CB_ltrim~elementLength","element[undefined]":null,"element":"CB_ltrim~element","undesiredStrings":"CB_ltrim~undesiredStrings","undesiredStringsLength":"CB_ltrim~undesiredStringsLength","undesiredStringFound":"CB_ltrim~undesiredStringFound"}},"description":"<p>Trims the left side of a given string or array of strings (modifying the given array), taking off the desired strings or otherwise trimming spaces, tabs (&quot;\\t&quot;), new lines (&quot;\\n&quot;) and carriage returns (&quot;\\r&quot;). Case sensitive.</p>","kind":"function","params":[{"type":{"names":["string","array"]},"description":"<p>The element that will be trimmed. It should be either a string or an array of strings.</p>","name":"element"},{"type":{"names":["string","array"]},"optional":true,"defaultvalue":"[ \" \", \"\\n\", \"\\r\", \"\\t\" ]","description":"<p>String or an array with the strings that we want to trim off the given element.</p>","name":"undesiredStrings"}],"returns":[{"type":{"names":["string","array"]},"description":"<p>Returns the given element again if it was an string, a number (it will be casted to a string) or an array of strings, trimmed if it has been possible. If it was another type, returns an empty string.</p>"}],"todo":["Accept a \"recursive\" parameter (boolean) to affect multiple levels (array of arrays of strings, etc.).","Consider accepting objects instead of arrays in the \"element\" parameter.","Think about optimizing (using a counter for the number of occurrences in the loop and trim all the occurrences when finished)."],"name":"CB_ltrim","longname":"CB_ltrim","scope":"global"},{"comment":"/**\r\n * Alias for {@link CB_nl2br}.\r\n * @function CB_nlToBr\r\n * @see {@link CB_nl2br}\r\n */","meta":{"filename":"CB_data.js","lineno":404,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{}},"description":"<p>Alias for {@link CB_nl2br}.</p>","kind":"function","name":"CB_nlToBr","see":["{@link CB_nl2br}"],"longname":"CB_nlToBr","scope":"global"},{"comment":"/**\r\n * Changes new lines (\\n) for &lt;br /&gt;'s in a given string.\r\n * @function\r\n * @param {string} string - The string we want to modify.\r\n * @returns {string} Returns the string with all the occurrences replaced or an empty string if the element given was not a string.\r\n */","meta":{"range":[18731,19002],"filename":"CB_data.js","lineno":415,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100068930","name":"CB_nl2br","type":"FunctionDeclaration","paramnames":["string"]},"vars":{"string":"CB_nl2br~string"}},"description":"<p>Changes new lines (\\n) for &lt;br /&gt;'s in a given string.</p>","kind":"function","params":[{"type":{"names":["string"]},"description":"<p>The string we want to modify.</p>","name":"string"}],"returns":[{"type":{"names":["string"]},"description":"<p>Returns the string with all the occurrences replaced or an empty string if the element given was not a string.</p>"}],"name":"CB_nl2br","longname":"CB_nl2br","scope":"global"},{"comment":"/**\r\n * Alias for {@link CB_br2nl}.\r\n * @function CB_brToNl\r\n * @see {@link CB_br2nl}\r\n */","meta":{"filename":"CB_data.js","lineno":430,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{}},"description":"<p>Alias for {@link CB_br2nl}.</p>","kind":"function","name":"CB_brToNl","see":["{@link CB_br2nl}"],"longname":"CB_brToNl","scope":"global"},{"comment":"/**\r\n * Changes &lt;br /&gt;'s, &lt;br/&gt;'s and &lt;br&gt;'s for new lines (\\n) in a given string.\r\n * @function\r\n * @param {string} string - The string we want to modify.\r\n * @returns {string} Returns the string with all the occurrences replaced or an empty string if the element given was not a string.\r\n */","meta":{"range":[19471,19834],"filename":"CB_data.js","lineno":441,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100068966","name":"CB_br2nl","type":"FunctionDeclaration","paramnames":["string"]},"vars":{"string":"CB_br2nl~string"}},"description":"<p>Changes &lt;br /&gt;'s, &lt;br/&gt;'s and &lt;br&gt;'s for new lines (\\n) in a given string.</p>","kind":"function","params":[{"type":{"names":["string"]},"description":"<p>The string we want to modify.</p>","name":"string"}],"returns":[{"type":{"names":["string"]},"description":"<p>Returns the string with all the occurrences replaced or an empty string if the element given was not a string.</p>"}],"name":"CB_br2nl","longname":"CB_br2nl","scope":"global"},{"comment":"/**\r\n * Tries to guess whether a given file path (absolute or relative) is a local address or not. It will be assumed as local if the path\r\n uses the \"file:\" protocol or the current script is running locally and the path does not use the \"http:\", \"https:\" or \"ftp:\" protocols.\r\n * @function\r\n * @param {string} filePath - The file path we want to check.\r\n * @returns {boolean} Returns whether the given file path is a local address or not.\r\n */","meta":{"range":[20344,20734],"filename":"CB_data.js","lineno":465,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100069020","name":"CB_isFileLocal","type":"FunctionDeclaration","paramnames":["filePath"]},"vars":{"isFileLocal":"CB_isFileLocal~isFileLocal","filePath":"CB_isFileLocal~filePath"}},"description":"<p>Tries to guess whether a given file path (absolute or relative) is a local address or not. It will be assumed as local if the path<br> uses the &quot;file:&quot; protocol or the current script is running locally and the path does not use the &quot;http:&quot;, &quot;https:&quot; or &quot;ftp:&quot; protocols.</p>","kind":"function","params":[{"type":{"names":["string"]},"description":"<p>The file path we want to check.</p>","name":"filePath"}],"returns":[{"type":{"names":["boolean"]},"description":"<p>Returns whether the given file path is a local address or not.</p>"}],"name":"CB_isFileLocal","longname":"CB_isFileLocal","scope":"global"},{"comment":"/**\r\n * Processes a given string as a template and returns it rendered (if possible) with the values of the given JSON object.\r\n Tries to use [Handlebars]{@link https://handlebarsjs.com/} as the first choice but if is is not available it will just replace all occurrences with\r\n vanilla JavaScript.\r\n * @function\r\n * @param {string} str - The string we want to render.\r\n * @param {Object} [JSONObject=CB_JSONData] - The JSON object which contains the values. If not provided, it will try to use the global CB_JSONData object in the case it exists.\r\n * @param {boolean} [forceVanilla=false] - Forces vanilla JavaScript rendering instead of using [Handlebars]{@link https://handlebarsjs.com/}.\r\n * @param {integer} [depthLevelMax=10] - Maximum depth level allowed to read the object to render the string. Only applies when it is rendered by vanilla JavaScript. For performance purposes.\r\n * @returns {str}\r\n */","meta":{"range":[21660,22501],"filename":"CB_data.js","lineno":494,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100069087","name":"CB_renderString","type":"FunctionDeclaration","paramnames":["string","JSONObject","forceVanilla","depthLevelMax"]},"vars":{"string":"CB_renderString~string","JSONObject":"CB_renderString~JSONObject"}},"description":"<p>Processes a given string as a template and returns it rendered (if possible) with the values of the given JSON object.<br> Tries to use [Handlebars]{@link https://handlebarsjs.com/} as the first choice but if is is not available it will just replace all occurrences with<br> vanilla JavaScript.</p>","kind":"function","params":[{"type":{"names":["string"]},"description":"<p>The string we want to render.</p>","name":"str"},{"type":{"names":["Object"]},"optional":true,"defaultvalue":"CB_JSONData","description":"<p>The JSON object which contains the values. If not provided, it will try to use the global CB_JSONData object in the case it exists.</p>","name":"JSONObject"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>Forces vanilla JavaScript rendering instead of using [Handlebars]{@link https://handlebarsjs.com/}.</p>","name":"forceVanilla"},{"type":{"names":["integer"]},"optional":true,"defaultvalue":10,"description":"<p>Maximum depth level allowed to read the object to render the string. Only applies when it is rendered by vanilla JavaScript. For performance purposes.</p>","name":"depthLevelMax"}],"returns":[{"type":{"names":["str"]}}],"name":"CB_renderString","longname":"CB_renderString","scope":"global"},{"comment":"/**\r\n * Tells whether a given email is valid or not. Not really precise.\r\n * @function\r\n * @param {string} email - Possible email that we want to validate.\r\n * @returns {boolean}\r\n */","meta":{"range":[24255,25269],"filename":"CB_data.js","lineno":551,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100069352","name":"CB_isEmail","type":"FunctionDeclaration","paramnames":["email"]}},"description":"<p>Tells whether a given email is valid or not. Not really precise.</p>","kind":"function","params":[{"type":{"names":["string"]},"description":"<p>Possible email that we want to validate.</p>","name":"email"}],"returns":[{"type":{"names":["boolean"]}}],"name":"CB_isEmail","longname":"CB_isEmail","scope":"global"},{"comment":"/**\r\n * Returns the given number with the desired decimals and make it a string if we want to (so it will be able to have trailing zeros). Uses decimal numeral system only. It will perform ceiling round automatically if needed.\r\n * @function\r\n * @param {integer|float|string} number - The number that we want to format. It can be a string.\r\n * @param {integer} [decimals=2] - The number of decimals we want to allow.\r\n * @param {boolean} [stringify=false] - Set to true if we want it to return a string (filled with trailing zeros to reach the desired number of decimals).\r\n * @returns {integer|float|string} Returns zero in the case a non-valid number has been provided.\r\n *\t@todo Allow to define a minimum length for the integer part of the \"number\" parameter, so it will fill with leading zeros if needed (when \"stringify\" is set to true). Think about allowing to define a maximum too.\r\n */","meta":{"range":[26175,26904],"filename":"CB_data.js","lineno":566,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100069375","name":"CB_numberFormat","type":"FunctionDeclaration","paramnames":["number","decimals","stringify"]},"vars":{"number":"CB_numberFormat~number","decimals":"CB_numberFormat~decimals"}},"description":"<p>Returns the given number with the desired decimals and make it a string if we want to (so it will be able to have trailing zeros). Uses decimal numeral system only. It will perform ceiling round automatically if needed.</p>","kind":"function","params":[{"type":{"names":["integer","float","string"]},"description":"<p>The number that we want to format. It can be a string.</p>","name":"number"},{"type":{"names":["integer"]},"optional":true,"defaultvalue":2,"description":"<p>The number of decimals we want to allow.</p>","name":"decimals"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>Set to true if we want it to return a string (filled with trailing zeros to reach the desired number of decimals).</p>","name":"stringify"}],"returns":[{"type":{"names":["integer","float","string"]},"description":"<p>Returns zero in the case a non-valid number has been provided.</p>"}],"todo":["Allow to define a minimum length for the integer part of the \"number\" parameter, so it will fill with leading zeros if needed (when \"stringify\" is set to true). Think about allowing to define a maximum too."],"name":"CB_numberFormat","longname":"CB_numberFormat","scope":"global"},{"comment":"/**\r\n * Alias for {@link CB_countDecimalPart}.\r\n * @function CB_countDecimals\r\n * @see {@link CB_countDecimalPart}\r\n */","meta":{"filename":"CB_data.js","lineno":592,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{}},"description":"<p>Alias for {@link CB_countDecimalPart}.</p>","kind":"function","name":"CB_countDecimals","see":["{@link CB_countDecimalPart}"],"longname":"CB_countDecimals","scope":"global"},{"comment":"/**\r\n * Alias for {@link CB_countDecimalPart}.\r\n * @function CB_countDecimalDigits\r\n * @see {@link CB_countDecimalPart}\r\n */","meta":{"filename":"CB_data.js","lineno":597,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{}},"description":"<p>Alias for {@link CB_countDecimalPart}.</p>","kind":"function","name":"CB_countDecimalDigits","see":["{@link CB_countDecimalPart}"],"longname":"CB_countDecimalDigits","scope":"global"},{"comment":"/**\r\n * Alias for {@link CB_countDecimalPart}.\r\n * @function CB_numberOfDecimals\r\n * @see {@link CB_countDecimalPart}\r\n */","meta":{"filename":"CB_data.js","lineno":602,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{}},"description":"<p>Alias for {@link CB_countDecimalPart}.</p>","kind":"function","name":"CB_numberOfDecimals","see":["{@link CB_countDecimalPart}"],"longname":"CB_numberOfDecimals","scope":"global"},{"comment":"/**\r\n * Alias for {@link CB_countDecimalPart}.\r\n * @function CB_numberOfDecimalDigits\r\n * @see {@link CB_countDecimalPart}\r\n */","meta":{"filename":"CB_data.js","lineno":607,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{}},"description":"<p>Alias for {@link CB_countDecimalPart}.</p>","kind":"function","name":"CB_numberOfDecimalDigits","see":["{@link CB_countDecimalPart}"],"longname":"CB_numberOfDecimalDigits","scope":"global"},{"comment":"/**\r\n * Returns the number of decimals of the given number. It also works with numbers in exponential notation (as for example '1e-13' which would be 0.0000000000001).\r\n * @function\r\n * @param {integer|float|string} number - The number whose decimals we want to count. It can be a string.\r\n * @returns {integer} Returns zero in the case a non-valid number has been provided. Otherwise, it returns the number of decimals counted.\r\n */","meta":{"range":[27860,28618],"filename":"CB_data.js","lineno":618,"columnno":4,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100069490","name":"CB_countDecimalPart","type":"AssignmentExpression","value":"CB_countDecimalDigits"}},"description":"<p>Returns the number of decimals of the given number. It also works with numbers in exponential notation (as for example '1e-13' which would be 0.0000000000001).</p>","kind":"function","params":[{"type":{"names":["integer","float","string"]},"description":"<p>The number whose decimals we want to count. It can be a string.</p>","name":"number"}],"returns":[{"type":{"names":["integer"]},"description":"<p>Returns zero in the case a non-valid number has been provided. Otherwise, it returns the number of decimals counted.</p>"}],"name":"CB_countDecimalPart","longname":"CB_countDecimalPart","scope":"global"},{"comment":"/**\r\n * Alias for {@link CB_countIntegerPart}.\r\n * @function CB_numberOfIntegerDigits\r\n * @see {@link CB_countIntegerPart}\r\n */","meta":{"filename":"CB_data.js","lineno":638,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{}},"description":"<p>Alias for {@link CB_countIntegerPart}.</p>","kind":"function","name":"CB_numberOfIntegerDigits","see":["{@link CB_countIntegerPart}"],"longname":"CB_numberOfIntegerDigits","scope":"global"},{"comment":"/**\r\n * Alias for {@link CB_countIntegerPart}.\r\n * @function CB_countIntegerDigits\r\n * @see {@link CB_countIntegerPart}\r\n */","meta":{"filename":"CB_data.js","lineno":643,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{}},"description":"<p>Alias for {@link CB_countIntegerPart}.</p>","kind":"function","name":"CB_countIntegerDigits","see":["{@link CB_countIntegerPart}"],"longname":"CB_countIntegerDigits","scope":"global"},{"comment":"/**\r\n * Returns the number of integer digits (the number of digits that belong to the integer part) of the given number. It also works with numbers in exponential notation (as for example '1e-13' which would be 0.0000000000001).\r\n * @function\r\n * @param {integer|float|string} number - The number whose integer digits (the digits that belong to the integer part) we want to count. It can be a string.\r\n * @returns {integer} Returns zero in the case a non-valid number has been provided. Otherwise, it returns the number of integer digits (the number of digits that belong to the integer part) counted.\r\n */","meta":{"range":[29499,30204],"filename":"CB_data.js","lineno":654,"columnno":4,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100069594","name":"CB_countIntegerPart","type":"AssignmentExpression","value":"CB_countIntegerDigits"}},"description":"<p>Returns the number of integer digits (the number of digits that belong to the integer part) of the given number. It also works with numbers in exponential notation (as for example '1e-13' which would be 0.0000000000001).</p>","kind":"function","params":[{"type":{"names":["integer","float","string"]},"description":"<p>The number whose integer digits (the digits that belong to the integer part) we want to count. It can be a string.</p>","name":"number"}],"returns":[{"type":{"names":["integer"]},"description":"<p>Returns zero in the case a non-valid number has been provided. Otherwise, it returns the number of integer digits (the number of digits that belong to the integer part) counted.</p>"}],"name":"CB_countIntegerPart","longname":"CB_countIntegerPart","scope":"global"},{"comment":"/**\r\n * Returns the value of a desired path in an object or an empty string if it cannot be found.\r\n * @function\r\n * @param {Object} object - The object where we want to find the path.\r\n * @param {string} path - The path that will be search in the given object to retrieve the value. It should use the string defined in the \"splitString\" parameter to separate items. If it is empty or not provided, it will just return the given \"object\" again.\r\n * @param {string} [splitString=\".\"] - The string that will be used to separate one item from another one. By default, it will be a dot (\".\") so, for example, a given \"path\" with a value of \"hello.world\" will indicate the \"object.hello.world\" path.\r\n * @returns {*} Returns the value of a desired path in an object or an empty string if it cannot be found. If the \"path\" parameter is empty or not provided, it will just return the given \"object\" again.\r\n */","meta":{"range":[31122,31755],"filename":"CB_data.js","lineno":683,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100069689","name":"CB_getValuePath","type":"FunctionDeclaration","paramnames":["object","path","splitString"]},"vars":{"path":"CB_getValuePath~path","splitString":"CB_getValuePath~splitString","indexes":"CB_getValuePath~indexes","indexesLength":"CB_getValuePath~indexesLength","index":"CB_getValuePath~index","value":"CB_getValuePath~value","x":"CB_getValuePath~x"}},"description":"<p>Returns the value of a desired path in an object or an empty string if it cannot be found.</p>","kind":"function","params":[{"type":{"names":["Object"]},"description":"<p>The object where we want to find the path.</p>","name":"object"},{"type":{"names":["string"]},"description":"<p>The path that will be search in the given object to retrieve the value. It should use the string defined in the &quot;splitString&quot; parameter to separate items. If it is empty or not provided, it will just return the given &quot;object&quot; again.</p>","name":"path"},{"type":{"names":["string"]},"optional":true,"defaultvalue":"\".\"","description":"<p>The string that will be used to separate one item from another one. By default, it will be a dot (&quot;.&quot;) so, for example, a given &quot;path&quot; with a value of &quot;hello.world&quot; will indicate the &quot;object.hello.world&quot; path.</p>","name":"splitString"}],"returns":[{"type":{"names":["*"]},"description":"<p>Returns the value of a desired path in an object or an empty string if it cannot be found. If the &quot;path&quot; parameter is empty or not provided, it will just return the given &quot;object&quot; again.</p>"}],"name":"CB_getValuePath","longname":"CB_getValuePath","scope":"global"},{"comment":"/**\r\n * Stores a value using [Web Storage API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Web_Storage_API} ([localStorage]{@link https://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage}). It can use [localStorage]{@link https://github.com/mortzdk/localStorage} as a fallback or cookies instead.\r\n * @function\r\n * @param {string|number} index - The index where the value given will be stored.\r\n * @param {string|number} value - The value we want to store. It should be a string or a number.\r\n * @param {integer} [days] - The number of days after which the cookie will expire (in the case that cookies are used). It belongs to the \"expires=\" parameter of the cookie. If not provided, the parameter will not be used at all.\r\n * @param {string} [path] - The path where the cookie will be stored (in the case that cookies are used). It belongs to the \"path=\" parameter of the cookie. If not provided, the parameter will not be used at all.\r\n * @param {boolean} [forceCookie=false] - Forces to use cookies instead of [Web Storage API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Web_Storage_API} ([localStorage]{@link https://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage}).\r\n * @returns {boolean} Returns true if the value has been stored successfully (not totally reliable, it should be checked with {@link CB_getDatum} after a while).\r\n */","meta":{"range":[33198,34085],"filename":"CB_data.js","lineno":717,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100069811","name":"CB_setDatum","type":"FunctionDeclaration","paramnames":["index","value","days","path","forceCookie"]},"vars":{"index":"CB_setDatum~index","value":"CB_setDatum~value","path":"CB_setDatum~path","expires":"CB_setDatum~expires","document.cookie":"document.cookie"}},"description":"<p>Stores a value using [Web Storage API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Web_Storage_API} ([localStorage]{@link https://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage}). It can use [localStorage]{@link https://github.com/mortzdk/localStorage} as a fallback or cookies instead.</p>","kind":"function","params":[{"type":{"names":["string","number"]},"description":"<p>The index where the value given will be stored.</p>","name":"index"},{"type":{"names":["string","number"]},"description":"<p>The value we want to store. It should be a string or a number.</p>","name":"value"},{"type":{"names":["integer"]},"optional":true,"description":"<p>The number of days after which the cookie will expire (in the case that cookies are used). It belongs to the &quot;expires=&quot; parameter of the cookie. If not provided, the parameter will not be used at all.</p>","name":"days"},{"type":{"names":["string"]},"optional":true,"description":"<p>The path where the cookie will be stored (in the case that cookies are used). It belongs to the &quot;path=&quot; parameter of the cookie. If not provided, the parameter will not be used at all.</p>","name":"path"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>Forces to use cookies instead of [Web Storage API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Web_Storage_API} ([localStorage]{@link https://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage}).</p>","name":"forceCookie"}],"returns":[{"type":{"names":["boolean"]},"description":"<p>Returns true if the value has been stored successfully (not totally reliable, it should be checked with {@link CB_getDatum} after a while).</p>"}],"name":"CB_setDatum","longname":"CB_setDatum","scope":"global"},{"comment":"/**\r\n * Stores a cookie.\r\n * @function\r\n * @param {string|number} index - The index where the value given will be stored.\r\n * @param {string|number} value - The value we want to store. It should be a string or a number.\r\n * @param {integer} [days] - The number of days after which the cookie will expire. It belongs to the \"expires=\" parameter of the cookie. If not provided, the parameter will not be used at all.\r\n * @param {string} [path] - The path where the cookie will be stored. It belongs to the \"path=\" parameter of the cookie. If not provided, the parameter will not be used at all.\r\n * @returns {boolean} Returns true if the value has been stored successfully (not totally reliable, it should be checked with {@link CB_getCookie} after a while).\r\n */","meta":{"range":[34860,34967],"filename":"CB_data.js","lineno":763,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100069966","name":"CB_setCookie","type":"FunctionDeclaration","paramnames":["index","value","days","path"]}},"description":"<p>Stores a cookie.</p>","kind":"function","params":[{"type":{"names":["string","number"]},"description":"<p>The index where the value given will be stored.</p>","name":"index"},{"type":{"names":["string","number"]},"description":"<p>The value we want to store. It should be a string or a number.</p>","name":"value"},{"type":{"names":["integer"]},"optional":true,"description":"<p>The number of days after which the cookie will expire. It belongs to the &quot;expires=&quot; parameter of the cookie. If not provided, the parameter will not be used at all.</p>","name":"days"},{"type":{"names":["string"]},"optional":true,"description":"<p>The path where the cookie will be stored. It belongs to the &quot;path=&quot; parameter of the cookie. If not provided, the parameter will not be used at all.</p>","name":"path"}],"returns":[{"type":{"names":["boolean"]},"description":"<p>Returns true if the value has been stored successfully (not totally reliable, it should be checked with {@link CB_getCookie} after a while).</p>"}],"name":"CB_setCookie","longname":"CB_setCookie","scope":"global"},{"comment":"/**\r\n * Gets, from its index, a previous value stored. It will try to get it using [Web Storage API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Web_Storage_API} ([localStorage]{@link https://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage}). It can use [localStorage]{@link https://github.com/mortzdk/localStorage} as a fallback or cookies instead.\r\n * @function\r\n * @param {string} index - The index whose value we want to retrieve.\r\n * @param {boolean} [forceCookie=false] - Forces to use cookies instead of [Web Storage API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Web_Storage_API} ([localStorage]{@link https://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage}).\r\n * @param {boolean} [unescapeIndex=false] - Applies the unescape function to the value before returning it. Only applies when cookies are used.\r\n * @returns {string|null} Returns null when the value cannot be found.\r\n */","meta":{"range":[35920,36618],"filename":"CB_data.js","lineno":777,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100069981","name":"CB_getDatum","type":"FunctionDeclaration","paramnames":["index","forceCookie","unescapeIndex"]},"vars":{"itemFound":"CB_getDatum~itemFound","index":"CB_getDatum~index","cookies":"CB_getDatum~cookies","cookies_length":"CB_getDatum~cookies_length","x":"CB_getDatum~x"}},"description":"<p>Gets, from its index, a previous value stored. It will try to get it using [Web Storage API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Web_Storage_API} ([localStorage]{@link https://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage}). It can use [localStorage]{@link https://github.com/mortzdk/localStorage} as a fallback or cookies instead.</p>","kind":"function","params":[{"type":{"names":["string"]},"description":"<p>The index whose value we want to retrieve.</p>","name":"index"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>Forces to use cookies instead of [Web Storage API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Web_Storage_API} ([localStorage]{@link https://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage}).</p>","name":"forceCookie"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>Applies the unescape function to the value before returning it. Only applies when cookies are used.</p>","name":"unescapeIndex"}],"returns":[{"type":{"names":["string","null"]},"description":"<p>Returns null when the value cannot be found.</p>"}],"name":"CB_getDatum","longname":"CB_getDatum","scope":"global"},{"comment":"/**\r\n * Returns, from its index, a previous stored cookie.\r\n * @function\r\n * @param {string} index - The index whose value we want to retrieve.\r\n * @returns {string|null} Returns null when the value cannot be found.\r\n */","meta":{"range":[36849,36918],"filename":"CB_data.js","lineno":808,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100070110","name":"CB_getCookie","type":"FunctionDeclaration","paramnames":["index"]}},"description":"<p>Returns, from its index, a previous stored cookie.</p>","kind":"function","params":[{"type":{"names":["string"]},"description":"<p>The index whose value we want to retrieve.</p>","name":"index"}],"returns":[{"type":{"names":["string","null"]},"description":"<p>Returns null when the value cannot be found.</p>"}],"name":"CB_getCookie","longname":"CB_getCookie","scope":"global"},{"comment":"/**\r\n * Gets the value from a given object which belongs to the desired index or returns the value of \"returnValueOnFail\" if it cannot be found.\r\n * @function\r\n * @param {Object} object - The object from which we want to get the value.\r\n * @param {string} index - The index whose value we want to retrieve.\r\n * @param {*} [returnValueOnFail=undefined] - The value we want it to return in the case that the property cannot be found. If not provided, undefined will be returned.\r\n * @returns {*} Returns the value from a given object which belongs to the desired index or the value of \"returnValueOnFail\" otherwise if it cannot be found.\r\n */","meta":{"range":[37571,37823],"filename":"CB_data.js","lineno":822,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100070119","name":"CB_getValueIndex","type":"FunctionDeclaration","paramnames":["object","index","returnValueOnFail"]}},"description":"<p>Gets the value from a given object which belongs to the desired index or returns the value of &quot;returnValueOnFail&quot; if it cannot be found.</p>","kind":"function","params":[{"type":{"names":["Object"]},"description":"<p>The object from which we want to get the value.</p>","name":"object"},{"type":{"names":["string"]},"description":"<p>The index whose value we want to retrieve.</p>","name":"index"},{"type":{"names":["*"]},"optional":true,"description":"<p>The value we want it to return in the case that the property cannot be found. If not provided, undefined will be returned.</p>","name":"returnValueOnFail"}],"returns":[{"type":{"names":["*"]},"description":"<p>Returns the value from a given object which belongs to the desired index or the value of &quot;returnValueOnFail&quot; otherwise if it cannot be found.</p>"}],"name":"CB_getValueIndex","longname":"CB_getValueIndex","scope":"global"},{"comment":"/**\r\n * Returns an object copied from the given one.\r\n * @function\r\n * @param {object} element - The element whose properties and values we want to copy. It should be an object.\r\n * @param {boolean} [onlyOwn=false] - If the \"element\" given is not an object, this parameter will be ignored. Otherwise, if it is set to true, it will only have into account the properties which the object has as their own property and have not been inherited (using the [Object.hasOwnProperty]{@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/hasOwnProperty} method).\r\n * @returns {object} Returns an object copied from the given one. Returns an empty object if the given \"element\" was not an object.\r\n */","meta":{"range":[38566,38852],"filename":"CB_data.js","lineno":836,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100070155","name":"CB_copyObject","type":"FunctionDeclaration","paramnames":["object","onlyOwn"]},"vars":{"newObject":"CB_copyObject~newObject","key":"CB_copyObject~key","newObject[undefined]":"CB_copyObject~newObject.undefined]"}},"description":"<p>Returns an object copied from the given one.</p>","kind":"function","params":[{"type":{"names":["object"]},"description":"<p>The element whose properties and values we want to copy. It should be an object.</p>","name":"element"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If the &quot;element&quot; given is not an object, this parameter will be ignored. Otherwise, if it is set to true, it will only have into account the properties which the object has as their own property and have not been inherited (using the [Object.hasOwnProperty]{@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/hasOwnProperty} method).</p>","name":"onlyOwn"}],"returns":[{"type":{"names":["object"]},"description":"<p>Returns an object copied from the given one. Returns an empty object if the given &quot;element&quot; was not an object.</p>"}],"name":"CB_copyObject","longname":"CB_copyObject","scope":"global"},{"comment":"/**\r\n * Gets the value of a desired property of a given JSON object. Uses the {@link CB_getValueIndex} function internally.\r\n * @function\r\n * @param {Object|string} JSONObject - The JSON object from which we want to get the value. If it is a string, it will try to parse it to create a real object from it. Used as the \"object\" parameter when calling the {@link CB_getValueIndex} function internally.\r\n * @param {string} property - The property whose value we want to retrieve. If not provided, the given object will be returned again. Used as the \"index\" parameter when calling the {@link CB_getValueIndex} function internally.\r\n * @param {*} [returnValueOnFail] - The value we want it to return in the case it cannot be parsed. If not provided, undefined will be returned. Used as the \"returnValueOnFail\" parameter when calling the {@link CB_getValueIndex} function internally.\r\n * @returns {*} Returns the given \"JSONObject\" again (after trying to parse it if it was a string, if possible) if the \"property\" value was not given. Returns the value from the given object which belongs to the desired property or the value of \"returnValueOnFail\" otherwise if it cannot be found.\r\n */","meta":{"range":[40048,40985],"filename":"CB_data.js","lineno":856,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100070202","name":"CB_getJSONPropertyValue","type":"FunctionDeclaration","paramnames":["JSONObject","property","returnValueOnFail"]},"vars":{"JSONObject":"CB_getJSONPropertyValue~JSONObject"}},"description":"<p>Gets the value of a desired property of a given JSON object. Uses the {@link CB_getValueIndex} function internally.</p>","kind":"function","params":[{"type":{"names":["Object","string"]},"description":"<p>The JSON object from which we want to get the value. If it is a string, it will try to parse it to create a real object from it. Used as the &quot;object&quot; parameter when calling the {@link CB_getValueIndex} function internally.</p>","name":"JSONObject"},{"type":{"names":["string"]},"description":"<p>The property whose value we want to retrieve. If not provided, the given object will be returned again. Used as the &quot;index&quot; parameter when calling the {@link CB_getValueIndex} function internally.</p>","name":"property"},{"type":{"names":["*"]},"optional":true,"description":"<p>The value we want it to return in the case it cannot be parsed. If not provided, undefined will be returned. Used as the &quot;returnValueOnFail&quot; parameter when calling the {@link CB_getValueIndex} function internally.</p>","name":"returnValueOnFail"}],"returns":[{"type":{"names":["*"]},"description":"<p>Returns the given &quot;JSONObject&quot; again (after trying to parse it if it was a string, if possible) if the &quot;property&quot; value was not given. Returns the value from the given object which belongs to the desired property or the value of &quot;returnValueOnFail&quot; otherwise if it cannot be found.</p>"}],"name":"CB_getJSONPropertyValue","longname":"CB_getJSONPropertyValue","scope":"global"},{"comment":"/**\r\n * Tries to parse a given string to convert it into a JSON object. Internally it will use the native [JSON.parse]{@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse} method or otherwise use [JSON 3]{@link https://bestiejs.github.io/json3/} instead.\r\n * @function\r\n * @param {string} objectString - The JSON object we want to parse, in string format. First parameter when calling the [JSON.parse]{@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse} method (or equivalent)\r\n * @param {function} [reviver] - Second parameter when calling the [JSON.parse]{@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse} method (or equivalent).\r\n * @param {*} [returnValueOnFail] - The value we want it to return in the case it cannot be parsed. If not provided, undefined will be returned.\r\n * @param {boolean} [acceptUndefinedOrNull=false] - If it is set to true and the given objectString is undefined or null, an empty object ({}) will be used as the objectString.\r\n * @param {function} [onError] - Callback which will be called if it failed to be parsed (it will receive the \"objectString\" as the unique parameter).\r\n * @returns {*} Returns the object parsed from the given string or the value of \"returnValueOnFail\" otherwise (which will be undefined if not provided).\r\n */","meta":{"range":[42408,42846],"filename":"CB_data.js","lineno":888,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100070239","name":"CB_parseJSON","type":"FunctionDeclaration","paramnames":["objectString","reviver","returnValueOnFail","acceptUndefinedOrNull","onError"]},"vars":{"objectString":"CB_parseJSON~objectString"}},"description":"<p>Tries to parse a given string to convert it into a JSON object. Internally it will use the native [JSON.parse]{@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse} method or otherwise use [JSON 3]{@link https://bestiejs.github.io/json3/} instead.</p>","kind":"function","params":[{"type":{"names":["string"]},"description":"<p>The JSON object we want to parse, in string format. First parameter when calling the [JSON.parse]{@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse} method (or equivalent)</p>","name":"objectString"},{"type":{"names":["function"]},"optional":true,"description":"<p>Second parameter when calling the [JSON.parse]{@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse} method (or equivalent).</p>","name":"reviver"},{"type":{"names":["*"]},"optional":true,"description":"<p>The value we want it to return in the case it cannot be parsed. If not provided, undefined will be returned.</p>","name":"returnValueOnFail"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If it is set to true and the given objectString is undefined or null, an empty object ({}) will be used as the objectString.</p>","name":"acceptUndefinedOrNull"},{"type":{"names":["function"]},"optional":true,"description":"<p>Callback which will be called if it failed to be parsed (it will receive the &quot;objectString&quot; as the unique parameter).</p>","name":"onError"}],"returns":[{"type":{"names":["*"]},"description":"<p>Returns the object parsed from the given string or the value of &quot;returnValueOnFail&quot; otherwise (which will be undefined if not provided).</p>"}],"name":"CB_parseJSON","longname":"CB_parseJSON","scope":"global"},{"comment":"/**\r\n * Tries to create a JSON valid string from a given JSON object or value. Internally it will use the native [JSON.stringify]{@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify} method or otherwise use [JSON 3]{@link https://bestiejs.github.io/json3/} instead.\r\n * @function\r\n * @param {*} objectOrValue - The object or value that we want to stringify. First parameter when calling the [JSON.stringify]{@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify} method (or equivalent).\r\n * @param {function} [replacer] - Second parameter when calling the [JSON.stringify]{@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify} method (or equivalent).\r\n * @param {string|integer} [space] - Third parameter when calling the [JSON.stringify]{@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify} method (or equivalent).\r\n * @param {*} [returnValueOnFail] - The value we want it to return in the case it cannot be stringify. If not provided, undefined will be returned.\r\n * @param {boolean} [failIfUndefinedOrNull=false] - If it is set to true and the returning value is undefined or null, the value of \"returnValueOnFail\" will be returned.\r\n * @param {function} [onError] - Callback which will be called if it failed to be stringified (it will receive the \"objectOrValue\" as the unique parameter).\r\n * @returns {string} Returns the object stringified from the given object or value if possible or the value of \"returnValueOnFail\" otherwise (which will be undefined if not provided). Avoids returning undefined or null if \"failIfUndefinedOrNull\" is set to true, returning the value of \"returnValueOnFail\" instead.\r\n */","meta":{"range":[44672,45168],"filename":"CB_data.js","lineno":916,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100070292","name":"CB_stringifyJSON","type":"FunctionDeclaration","paramnames":["objectOrValue","replacer","space","returnValueOnFail","failIfUndefinedOrNull","onError"]},"vars":{"valueReturned":"CB_stringifyJSON~valueReturned"}},"description":"<p>Tries to create a JSON valid string from a given JSON object or value. Internally it will use the native [JSON.stringify]{@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify} method or otherwise use [JSON 3]{@link https://bestiejs.github.io/json3/} instead.</p>","kind":"function","params":[{"type":{"names":["*"]},"description":"<p>The object or value that we want to stringify. First parameter when calling the [JSON.stringify]{@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify} method (or equivalent).</p>","name":"objectOrValue"},{"type":{"names":["function"]},"optional":true,"description":"<p>Second parameter when calling the [JSON.stringify]{@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify} method (or equivalent).</p>","name":"replacer"},{"type":{"names":["string","integer"]},"optional":true,"description":"<p>Third parameter when calling the [JSON.stringify]{@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify} method (or equivalent).</p>","name":"space"},{"type":{"names":["*"]},"optional":true,"description":"<p>The value we want it to return in the case it cannot be stringify. If not provided, undefined will be returned.</p>","name":"returnValueOnFail"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If it is set to true and the returning value is undefined or null, the value of &quot;returnValueOnFail&quot; will be returned.</p>","name":"failIfUndefinedOrNull"},{"type":{"names":["function"]},"optional":true,"description":"<p>Callback which will be called if it failed to be stringified (it will receive the &quot;objectOrValue&quot; as the unique parameter).</p>","name":"onError"}],"returns":[{"type":{"names":["string"]},"description":"<p>Returns the object stringified from the given object or value if possible or the value of &quot;returnValueOnFail&quot; otherwise (which will be undefined if not provided). Avoids returning undefined or null if &quot;failIfUndefinedOrNull&quot; is set to true, returning the value of &quot;returnValueOnFail&quot; instead.</p>"}],"name":"CB_stringifyJSON","longname":"CB_stringifyJSON","scope":"global"},{"comment":"/**\r\n * Tries to combine two given values guessing the best way to do it and returns their combination. Using the following rules:\r\n\t<br />\r\n\tIf both values are either undefined or null, returns null.\r\n\t<br />\r\n\tOtherwise, if both values are boolean, returns the AND operation for the two of them (a && b).\r\n\t<br />\r\n\tOtherwise, if either of the two is a string (not empty) and is not JSON valid, combines them as URL (GET) parameters using {@link CB_combineURIParameters}.\r\n\t<br />\r\n\tOtherwise, if either of them is JSON valid, combines them as JSON using {@link CB_combineJSON} (passing the received avoidDuplicatedValuesInArray value as a parameter).\r\n\t<br />\r\n\tOtherwise, combines them as arrays or objects using {@link CB_combineArraysOrObjects} (passing the received \"avoidDuplicatedValuesInArray\" value as a parameter).\r\n * @function\r\n * @param {*} [a=null|[]|{}] - First value. It can be optional if \"b\" is a valid value, defined and not null.\r\n * @param {*} [b=null|[]|{}] - Second value. It can be optional if \"a\" is a valid value, defined and not null.\r\n * @param {boolean} [avoidDuplicatedValuesInArray=false] - Parameter that will be used in the case that {@link CB_combineJSON} or {@link CB_combineArraysOrObjects} is called.\r\n * @param {boolean} [modifyArrayOrObjectA=false] - Parameter that will be used in the case that {@link CB_combineJSON} or {@link CB_combineArraysOrObjects} is called. If set to true, it will modify the original \"a\" array or object.\r\n * @returns {*} \r\n */","meta":{"range":[46677,47860],"filename":"CB_data.js","lineno":951,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100070346","name":"CB_combineAutomatically","type":"FunctionDeclaration","paramnames":["a","b","avoidDuplicatedValuesInArray","modifyArrayOrObjectA"]},"vars":{"aJSON":"CB_combineAutomatically~aJSON","bJSON":"CB_combineAutomatically~bJSON"}},"description":"<p>Tries to combine two given values guessing the best way to do it and returns their combination. Using the following rules:<br> <br /><br> If both values are either undefined or null, returns null.<br> <br /><br> Otherwise, if both values are boolean, returns the AND operation for the two of them (a &amp;&amp; b).<br> <br /><br> Otherwise, if either of the two is a string (not empty) and is not JSON valid, combines them as URL (GET) parameters using {@link CB_combineURIParameters}.<br> <br /><br> Otherwise, if either of them is JSON valid, combines them as JSON using {@link CB_combineJSON} (passing the received avoidDuplicatedValuesInArray value as a parameter).<br> <br /><br> Otherwise, combines them as arrays or objects using {@link CB_combineArraysOrObjects} (passing the received &quot;avoidDuplicatedValuesInArray&quot; value as a parameter).</p>","kind":"function","params":[{"type":{"names":["*"]},"optional":true,"defaultvalue":"null|[]|{}","description":"<p>First value. It can be optional if &quot;b&quot; is a valid value, defined and not null.</p>","name":"a"},{"type":{"names":["*"]},"optional":true,"defaultvalue":"null|[]|{}","description":"<p>Second value. It can be optional if &quot;a&quot; is a valid value, defined and not null.</p>","name":"b"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>Parameter that will be used in the case that {@link CB_combineJSON} or {@link CB_combineArraysOrObjects} is called.</p>","name":"avoidDuplicatedValuesInArray"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>Parameter that will be used in the case that {@link CB_combineJSON} or {@link CB_combineArraysOrObjects} is called. If set to true, it will modify the original &quot;a&quot; array or object.</p>","name":"modifyArrayOrObjectA"}],"returns":[{"type":{"names":["*"]}}],"name":"CB_combineAutomatically","longname":"CB_combineAutomatically","scope":"global"},{"comment":"/**\r\n * Alias for {@link CB_combineURIParameters}.\r\n * @function CB_combineURLParameters\r\n * @see {@link CB_combineURIParameters}\r\n */","meta":{"filename":"CB_data.js","lineno":968,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{}},"description":"<p>Alias for {@link CB_combineURIParameters}.</p>","kind":"function","name":"CB_combineURLParameters","see":["{@link CB_combineURIParameters}"],"longname":"CB_combineURLParameters","scope":"global"},{"comment":"/**\r\n * Combines two strings as URL (GET) parameters. If either \"parametersA\" or \"parametersB\" is not a string, internally it will use the native [JSON.stringify]{@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify} method if available or otherwise it will use [JSON 3]{@link https://bestiejs.github.io/json3/} instead.\r\n * @function\r\n * @param {string} parametersA - String with the desired parameter or parameters. It can be optional if \"parametersB\" is a valid string. It will trim any \"&\" and \"?\" character at the beginning and at the end, and finally use \"&\" to concatenate the two strings (if needed).\r\n * @param {string} parametersB - String with the desired parameter or parameters. It can be optional if \"parametersA\" is a valid string. It will trim any \"&\" and \"?\" character at the beginning and at the end, and finally use \"&\" to concatenate the two strings (if needed).\r\n * @returns {string} For example, if parametersA is \"parameter1=value1&amp;parameter2=value2\" and parametersB is \"parameter3=value3&amp;what=ever\" then it will return \"parameter1=value1&amp;parameter2=value2&amp;parameter3=value3&amp;what=ever\".\r\n */","meta":{"range":[49193,49931],"filename":"CB_data.js","lineno":980,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100070495","name":"CB_combineURIParameters","type":"FunctionDeclaration","paramnames":["parametersA","parametersB"]},"vars":{"parametersA":"CB_combineURIParameters~parametersA","parametersB":"CB_combineURIParameters~parametersB"}},"description":"<p>Combines two strings as URL (GET) parameters. If either &quot;parametersA&quot; or &quot;parametersB&quot; is not a string, internally it will use the native [JSON.stringify]{@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify} method if available or otherwise it will use [JSON 3]{@link https://bestiejs.github.io/json3/} instead.</p>","kind":"function","params":[{"type":{"names":["string"]},"description":"<p>String with the desired parameter or parameters. It can be optional if &quot;parametersB&quot; is a valid string. It will trim any &quot;&amp;&quot; and &quot;?&quot; character at the beginning and at the end, and finally use &quot;&amp;&quot; to concatenate the two strings (if needed).</p>","name":"parametersA"},{"type":{"names":["string"]},"description":"<p>String with the desired parameter or parameters. It can be optional if &quot;parametersA&quot; is a valid string. It will trim any &quot;&amp;&quot; and &quot;?&quot; character at the beginning and at the end, and finally use &quot;&amp;&quot; to concatenate the two strings (if needed).</p>","name":"parametersB"}],"returns":[{"type":{"names":["string"]},"description":"<p>For example, if parametersA is &quot;parameter1=value1&amp;parameter2=value2&quot; and parametersB is &quot;parameter3=value3&amp;what=ever&quot; then it will return &quot;parameter1=value1&amp;parameter2=value2&amp;parameter3=value3&amp;what=ever&quot;.</p>"}],"name":"CB_combineURIParameters","longname":"CB_combineURIParameters","scope":"global"},{"comment":"/**\r\n * Returns a combined array or object from two arrays or objects. Using the following rules:\r\n\t<br />\r\n\tIf they both are arrays (numeric indexes), it will keep all elements (attaching the elements of the second array after the elements of the first one).\r\n\t<br />\r\n\tOtherwise, if either of them is not an array (it should be an associative array which is an object in JavaScript), it will merge the elements (overwritting those whose index is the same and keeping the ones from the second array/object):\r\n * @function\r\n * @param {array|Object|string|null|undefined} [arrayOrObjectA=[]|{}] - One of the arrays (numeric indexes) or associative arrays (object) that we want to combine. If a string is provided, it will try to convert it into a new object (the string should be a JSON-valid string). It can be optional if \"arrayOrObjectB\" is a valid value and neither null nor undefined. If not provided but the \"arrayOrObjectB\" is provided, it will be a new empty array if the \"arrayOrObjectB\" is an array or it will be an empty object otherwise.\r\n * @param {array|Object|string|null|undefined} [arrayOrObjectB=[]|{}] - One of the arrays (numeric indexes) or associative arrays (object) that we want to combine. If a string is provided, it will try to convert it into a new object (the string should be a JSON-valid string). It can be optional if \"arrayOrObjectA\" is a valid value and neither null nor undefined. If not provided but the \"arrayOrObjectA\" is provided, it will be a new empty array if the \"arrayOrObjectA\" is an array or it will be an empty object otherwise.\r\n * @param {boolean} avoidDuplicatedValuesInArray - Tells whether to avoid or allow items with duplicated values in the returned array or not. Only applies when both arrays to combine are numeric arrays.\r\n * @param {boolean} [modifyArrayOrObjectA=false] - Parameter that will be used in the case that {@link CB_combineJSON} or {@link CB_combineArraysOrObjects} is called. If set to true, it will modify the original \"arrayOrObjectA\" array or object.\r\n * @returns {array|Object}\r\n */","meta":{"range":[52084,54854],"filename":"CB_data.js","lineno":1006,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100070621","name":"CB_combineArraysOrObjects","type":"FunctionDeclaration","paramnames":["arrayOrObjectA","arrayOrObjectB","avoidDuplicatedValuesInArray","modifyArrayOrObjectA"]},"vars":{"arrayOrObjectA":"CB_combineArraysOrObjects~arrayOrObjectA","arrayOrObjectB":"CB_combineArraysOrObjects~arrayOrObjectB","mergedObjectOrArray":"CB_combineArraysOrObjects~mergedObjectOrArray","arrayOrObjectALength":"CB_combineArraysOrObjects~arrayOrObjectALength","x":"CB_combineArraysOrObjects~x","mergedObjectOrArray[undefined]":"CB_combineArraysOrObjects~mergedObjectOrArray.undefined]","arrayOrObjectBLength":"CB_combineArraysOrObjects~arrayOrObjectBLength","propertyName":"CB_combineArraysOrObjects~propertyName"}},"description":"<p>Returns a combined array or object from two arrays or objects. Using the following rules:<br> <br /><br> If they both are arrays (numeric indexes), it will keep all elements (attaching the elements of the second array after the elements of the first one).<br> <br /><br> Otherwise, if either of them is not an array (it should be an associative array which is an object in JavaScript), it will merge the elements (overwritting those whose index is the same and keeping the ones from the second array/object):</p>","kind":"function","params":[{"type":{"names":["array","Object","string","null","undefined"]},"optional":true,"defaultvalue":"[]|{}","description":"<p>One of the arrays (numeric indexes) or associative arrays (object) that we want to combine. If a string is provided, it will try to convert it into a new object (the string should be a JSON-valid string). It can be optional if &quot;arrayOrObjectB&quot; is a valid value and neither null nor undefined. If not provided but the &quot;arrayOrObjectB&quot; is provided, it will be a new empty array if the &quot;arrayOrObjectB&quot; is an array or it will be an empty object otherwise.</p>","name":"arrayOrObjectA"},{"type":{"names":["array","Object","string","null","undefined"]},"optional":true,"defaultvalue":"[]|{}","description":"<p>One of the arrays (numeric indexes) or associative arrays (object) that we want to combine. If a string is provided, it will try to convert it into a new object (the string should be a JSON-valid string). It can be optional if &quot;arrayOrObjectA&quot; is a valid value and neither null nor undefined. If not provided but the &quot;arrayOrObjectA&quot; is provided, it will be a new empty array if the &quot;arrayOrObjectA&quot; is an array or it will be an empty object otherwise.</p>","name":"arrayOrObjectB"},{"type":{"names":["boolean"]},"description":"<p>Tells whether to avoid or allow items with duplicated values in the returned array or not. Only applies when both arrays to combine are numeric arrays.</p>","name":"avoidDuplicatedValuesInArray"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>Parameter that will be used in the case that {@link CB_combineJSON} or {@link CB_combineArraysOrObjects} is called. If set to true, it will modify the original &quot;arrayOrObjectA&quot; array or object.</p>","name":"modifyArrayOrObjectA"}],"returns":[{"type":{"names":["array","Object"]}}],"name":"CB_combineArraysOrObjects","longname":"CB_combineArraysOrObjects","scope":"global"},{"comment":"/**\r\n * Alias for {@link CB_combineArraysOrObjects}.\r\n * @function CB_combineJSON\r\n * @see {@link CB_combineArraysOrObjects}\r\n */","meta":{"filename":"CB_data.js","lineno":1088,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{}},"description":"<p>Alias for {@link CB_combineArraysOrObjects}.</p>","kind":"function","name":"CB_combineJSON","see":["{@link CB_combineArraysOrObjects}"],"longname":"CB_combineJSON","scope":"global"},{"comment":"/**\r\n Object that contains different properties and methods that can be used as the \"baseSymbols\" parameter for the {@link CB_intToBase} and {@link CB_baseToInt} functions. Each property is a numeric array of characters.\r\n * @namespace\r\n * @type {Object}\r\n */","meta":{"range":[55546,67444],"filename":"CB_data.js","lineno":1107,"columnno":4,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100070920","name":"CB_baseSymbols","type":"ObjectExpression","value":"{\"undefined\":\"\"}"}},"description":"<p>Object that contains different properties and methods that can be used as the &quot;baseSymbols&quot; parameter for the {@link CB_intToBase} and {@link CB_baseToInt} functions. Each property is a numeric array of characters.</p>","kind":"namespace","type":{"names":["Object"]},"name":"CB_baseSymbols","longname":"CB_baseSymbols","scope":"global","params":[]},{"comment":"/**\r\n\t * Function that will return a numeric array of characters containing as many items as the desired base. Uses a cache internally.\r\n\t * @function\r\n\t * @param {integer} [base=256] - The desired base (number of items, each with a character, that the returning array will contain). Minimum value is 1. The maximum can differ one client to another but it is not recommended to exceed 4096 (or even lower, depending on the client, although some clients could support up to 63988 or even more). All arrays of bases lower than 87 use the symbols included also in base 87.\r\n\t * @returns {array} Returns a numeric array of characters containing as many items as the desired base. All arrays of bases lower than 87 use the symbols included also in base 87. When the base is greater than 87 and it is not not created by default (88 and 128), each item of the returning array will be the result of calling the [String.fromCharCode]{@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/fromCharCode} function from 0 to one number less than the desired base number.\r\n\t */","meta":{"range":[56712,57572],"filename":"CB_data.js","lineno":1117,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100070927","name":"get","type":"FunctionExpression"},"vars":{"base":"CB_baseSymbols.get~base","baseSymbols":"CB_baseSymbols.get~baseSymbols","_getCacheLength":"CB_baseSymbols.get~_getCacheLength","x":"CB_baseSymbols.get~x","baseSymbols[undefined]":"CB_baseSymbols.get~baseSymbols.undefined]","CB_baseSymbols._getCache.max[undefined]":"CB_baseSymbols._getCache.max[undefined]","CB_baseSymbols._getCache[undefined]":"CB_baseSymbols._getCache[undefined]"}},"description":"<p>Function that will return a numeric array of characters containing as many items as the desired base. Uses a cache internally.</p>","kind":"function","params":[{"type":{"names":["integer"]},"optional":true,"defaultvalue":256,"description":"<p>The desired base (number of items, each with a character, that the returning array will contain). Minimum value is 1. The maximum can differ one client to another but it is not recommended to exceed 4096 (or even lower, depending on the client, although some clients could support up to 63988 or even more). All arrays of bases lower than 87 use the symbols included also in base 87.</p>","name":"base"}],"returns":[{"type":{"names":["array"]},"description":"<p>Returns a numeric array of characters containing as many items as the desired base. All arrays of bases lower than 87 use the symbols included also in base 87. When the base is greater than 87 and it is not not created by default (88 and 128), each item of the returning array will be the result of calling the [String.fromCharCode]{@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/fromCharCode} function from 0 to one number less than the desired base number.</p>"}],"name":"get","longname":"CB_baseSymbols.get","memberof":"CB_baseSymbols","scope":"static"},{"comment":"/**\r\n * Converts a given integer into a desired base.\r\n * @function\r\n * @param {integer|string} number - The integer that we want to convert to the desired base. For bigger numbers (up to 999999999999999934464 or even lower, depending on the client and the \"baseSymbols\" used), it is recommended to use a string which will allow to accept a slightly bigger number (up to 999999999999999999999999 or lower, depending on the client and the \"baseSymbols\" used). Really big numbers will not be codified properly even when passed as a string due to the limitations of JavaScript engines and maximum number allowed to be stored in a variable.\r\n * @param {array|integer} [baseSymbols={@link CB_baseSymbols.66}] - Array with the desired symbols, using only one per index (their value will correspond to their index). The base (radix) will be the total number of indexes. If an integer greater or equal than 2 is provided, it will try to use it as an index of the {@link CB_baseSymbols} object and use it if found or use it as a parameter to call the {@link CB_baseSymbols.get} function otherwise. If not provided or the integer is lower than 2, it will use base 66 (defined in the {@link CB_baseSymbols._66} property of the {@link CB_baseSymbols} object). It is recommended not to exceed 4096 (or even lower, depending on the client, although some clients could support up to 63988 or even more). The properties of the {@link CB_baseSymbols} object or the {@link CB_baseSymbols.get} function can be used for this parameter.\r\n * @param {boolean} [unsigned=false] - Determines whether to treat the input and output numbers as unsigned or not.\r\n * @param {string} [minusSymbol='-'|'0'] - Determines the minus symbol or string for the output, to mark negative numbers. If not provided, it will be '-' for bases equal or lower than 16 (hexadecimal) or '0' (zero character) otherwise. This parameter is ignored if the \"unsigned\" parameter is set to true.\r\n * @param {prefix} [prefix='0'|'0x'|''] - Determines the prefix for the output. If not provided, it will be '0' (zero character) for base 8 (octal), '0x' for base 16 (hexadecimal) or nothing (empty string) for all the others. Use an empty string to avoid using anything.\r\n * @returns {string} Returns an empty string in the case that the given number cannot be parsed as an integer. Otherwise, returns the given number in the desired base as a string.\r\n * @todo Think about allowing the \"number\" parameter to be a very long string, for bigger numbers (to exceed the limit for integers). Internally, it would need to perform operations comparisons, divisions, remainder calculation with strings, etc.\r\n * @todo Think about allowing to specify the base for the integer (now it is 16 if it begins with \"0x\", 8 if it begins with \"0\" and it is not a string or 10 otherwise, and newer clients can support '0b' for binaries, '0o' for octals, ).\r\n * @todo Think about accepting a decimal symbol to separate decimals and support float numbers.\r\n */","meta":{"range":[71195,72527],"filename":"CB_data.js","lineno":1287,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100071645","name":"CB_intToBase","type":"FunctionDeclaration","paramnames":["number","baseSymbols","unsigned","minusSymbol","prefix"]},"vars":{"number":"CB_intToBase~number","isNegative":"CB_intToBase~isNegative","baseSymbols":"CB_intToBase~baseSymbols","baseRadix":"CB_intToBase~baseRadix","minusSymbol":"CB_intToBase~minusSymbol","total":"CB_intToBase~total","prefix":"CB_intToBase~prefix"}},"description":"<p>Converts a given integer into a desired base.</p>","kind":"function","params":[{"type":{"names":["integer","string"]},"description":"<p>The integer that we want to convert to the desired base. For bigger numbers (up to 999999999999999934464 or even lower, depending on the client and the &quot;baseSymbols&quot; used), it is recommended to use a string which will allow to accept a slightly bigger number (up to 999999999999999999999999 or lower, depending on the client and the &quot;baseSymbols&quot; used). Really big numbers will not be codified properly even when passed as a string due to the limitations of JavaScript engines and maximum number allowed to be stored in a variable.</p>","name":"number"},{"type":{"names":["array","integer"]},"optional":true,"defaultvalue":"{@link CB_baseSymbols.66}","description":"<p>Array with the desired symbols, using only one per index (their value will correspond to their index). The base (radix) will be the total number of indexes. If an integer greater or equal than 2 is provided, it will try to use it as an index of the {@link CB_baseSymbols} object and use it if found or use it as a parameter to call the {@link CB_baseSymbols.get} function otherwise. If not provided or the integer is lower than 2, it will use base 66 (defined in the {@link CB_baseSymbols._66} property of the {@link CB_baseSymbols} object). It is recommended not to exceed 4096 (or even lower, depending on the client, although some clients could support up to 63988 or even more). The properties of the {@link CB_baseSymbols} object or the {@link CB_baseSymbols.get} function can be used for this parameter.</p>","name":"baseSymbols"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>Determines whether to treat the input and output numbers as unsigned or not.</p>","name":"unsigned"},{"type":{"names":["string"]},"optional":true,"defaultvalue":"'-'|'0'","description":"<p>Determines the minus symbol or string for the output, to mark negative numbers. If not provided, it will be '-' for bases equal or lower than 16 (hexadecimal) or '0' (zero character) otherwise. This parameter is ignored if the &quot;unsigned&quot; parameter is set to true.</p>","name":"minusSymbol"},{"type":{"names":["prefix"]},"optional":true,"defaultvalue":"'0'|'0x'|''","description":"<p>Determines the prefix for the output. If not provided, it will be '0' (zero character) for base 8 (octal), '0x' for base 16 (hexadecimal) or nothing (empty string) for all the others. Use an empty string to avoid using anything.</p>","name":"prefix"}],"returns":[{"type":{"names":["string"]},"description":"<p>Returns an empty string in the case that the given number cannot be parsed as an integer. Otherwise, returns the given number in the desired base as a string.</p>"}],"todo":["Think about allowing the \"number\" parameter to be a very long string, for bigger numbers (to exceed the limit for integers). Internally, it would need to perform operations comparisons, divisions, remainder calculation with strings, etc.","Think about allowing to specify the base for the integer (now it is 16 if it begins with \"0x\", 8 if it begins with \"0\" and it is not a string or 10 otherwise, and newer clients can support '0b' for binaries, '0o' for octals, ).","Think about accepting a decimal symbol to separate decimals and support float numbers."],"name":"CB_intToBase","longname":"CB_intToBase","scope":"global"},{"comment":"/**\r\n * Converts a given number which is already in a desired base into an integer (decimal base).\r\n\t<br />\r\n\tNote: It can return wrong values when the value exceeds the maximum allowed by a number in the client's JavaScript engine. It can also depend on the \"baseSymbols\" used.\r\n * @function\r\n * @param {string} number - A string containing the number which is already in the desired base and that we want to convert to an integer.\r\n * @param {array|integer} [baseSymbols={@link CB_baseSymbols.66}] - Array with the desired symbols, using only one per index (their value will correspond to their index). The base (radix) will be the total number of indexes. It should be the base which is already being used by the given number. If an integer greater or equal than 2 is provided, it will try to use it as an index of the {@link CB_baseSymbols} object and use it if found or use it as a parameter to call the {@link CB_baseSymbols.get} function otherwise. If not provided or the integer is lower than 2, it will use base 66 (defined in the {@link CB_baseSymbols._66} property of the {@link CB_baseSymbols} object). It is recommended not to exceed 4096 (or even lower, depending on the client, although some clients could support up to 63988 or even more). The properties of the {@link CB_baseSymbols} object or the {@link CB_baseSymbols.get} function can be used for this parameter.\r\n * @param {boolean} [unsigned=false] - Determines whether to treat the input and output numbers as unsigned or not.\r\n * @param {string} [minusSymbol='-'|'0'] - Determines the minus symbol or string for the input, to mark negative numbers. If not provided, it will be '-' for bases equal or lower than 16 (hexadecimal) or '0' (zero character) otherwise. This parameter is ignored if the \"unsigned\" parameter is set to true.\r\n * @param {prefix} [prefix='0'|'0x'|''] - Determines the prefix for the input. If not provided, it will be '0' (zero character) for base 8 (octal), '0x' for base 16 (hexadecimal) or nothing (empty string) for all the others. Use an empty string to avoid using anything.\r\n * @returns {integer} Returns the integer number in decimal base.\r\n * @todo Think about allowing to return a string, for bigger numbers (to exceed the limit for integers). Internally, it would need to perform operations comparisons, multiplications with strings, etc.\r\n * @todo Think about allowing to specify the base for the integer.\r\n * @todo Think about accepting a decimal symbol to separate decimals and support float numbers.\r\n */","meta":{"range":[75061,76593],"filename":"CB_data.js","lineno":1348,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100071867","name":"CB_baseToInt","type":"FunctionDeclaration","paramnames":["number","baseSymbols","unsigned","minusSymbol","prefix"]},"vars":{"number":"CB_baseToInt~number","baseSymbols":"CB_baseToInt~baseSymbols","value":"CB_baseToInt~value","baseRadix":"CB_baseToInt~baseRadix","isNegative":"CB_baseToInt~isNegative","minusSymbol":"CB_baseToInt~minusSymbol","prefix":"CB_baseToInt~prefix"}},"description":"<p>Converts a given number which is already in a desired base into an integer (decimal base).<br> <br /><br> Note: It can return wrong values when the value exceeds the maximum allowed by a number in the client's JavaScript engine. It can also depend on the &quot;baseSymbols&quot; used.</p>","kind":"function","params":[{"type":{"names":["string"]},"description":"<p>A string containing the number which is already in the desired base and that we want to convert to an integer.</p>","name":"number"},{"type":{"names":["array","integer"]},"optional":true,"defaultvalue":"{@link CB_baseSymbols.66}","description":"<p>Array with the desired symbols, using only one per index (their value will correspond to their index). The base (radix) will be the total number of indexes. It should be the base which is already being used by the given number. If an integer greater or equal than 2 is provided, it will try to use it as an index of the {@link CB_baseSymbols} object and use it if found or use it as a parameter to call the {@link CB_baseSymbols.get} function otherwise. If not provided or the integer is lower than 2, it will use base 66 (defined in the {@link CB_baseSymbols._66} property of the {@link CB_baseSymbols} object). It is recommended not to exceed 4096 (or even lower, depending on the client, although some clients could support up to 63988 or even more). The properties of the {@link CB_baseSymbols} object or the {@link CB_baseSymbols.get} function can be used for this parameter.</p>","name":"baseSymbols"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>Determines whether to treat the input and output numbers as unsigned or not.</p>","name":"unsigned"},{"type":{"names":["string"]},"optional":true,"defaultvalue":"'-'|'0'","description":"<p>Determines the minus symbol or string for the input, to mark negative numbers. If not provided, it will be '-' for bases equal or lower than 16 (hexadecimal) or '0' (zero character) otherwise. This parameter is ignored if the &quot;unsigned&quot; parameter is set to true.</p>","name":"minusSymbol"},{"type":{"names":["prefix"]},"optional":true,"defaultvalue":"'0'|'0x'|''","description":"<p>Determines the prefix for the input. If not provided, it will be '0' (zero character) for base 8 (octal), '0x' for base 16 (hexadecimal) or nothing (empty string) for all the others. Use an empty string to avoid using anything.</p>","name":"prefix"}],"returns":[{"type":{"names":["integer"]},"description":"<p>Returns the integer number in decimal base.</p>"}],"todo":["Think about allowing to return a string, for bigger numbers (to exceed the limit for integers). Internally, it would need to perform operations comparisons, multiplications with strings, etc.","Think about allowing to specify the base for the integer.","Think about accepting a decimal symbol to separate decimals and support float numbers."],"name":"CB_baseToInt","longname":"CB_baseToInt","scope":"global"},{"comment":"/**\r\n * Converts a given number which is already in a desired base into another chosen base.\r\n\t<br />\r\n\tNote: Uses {@link CB_baseToInt} and {@link CB_intToBase} internally.\r\n * @function\r\n * @param {string} number - A string containing the number which is already in the desired base and that we want to convert into the another chosen base. Used as the \"number\" parameter for calling both {@link CB_intToBase} and {@link CB_baseToInt} functions internally.\r\n * @param {array|integer} [baseSymbolsOrigin={@link CB_baseSymbols.66}] - Used as the \"baseSymbols\" parameter when calling the {@link CB_baseToInt} function internally.\r\n * @param {array|integer} [baseSymbolsDestiny={@link CB_baseSymbols.66}] - Used as the \"baseSymbols\" parameter when calling the {@link CB_intToBase} function internally.\r\n * @param {boolean} [unsigned=false] - Determines whether to treat the input and output numbers as unsigned or not. Used as the \"unsigned\" parameter for calling both {@link CB_intToBase} and {@link CB_baseToInt} functions internally.\r\n * @param {string} [minusSymbolOrigin='-'|'0'] - Used as the \"minusSymbol\" parameter when calling the {@link CB_baseToInt} function internally.\r\n * @param {string} [minusSymbolDestiny='-'|'0'] - Used as the \"minusSymbol\" parameter when calling the {@link CB_intToBase} function internally.\r\n * @param {prefix} [prefixOrigin='0'|'0x'|''] - Used as the \"prefix\" parameter when calling the {@link CB_baseToInt} function internally.\r\n * @param {prefix} [prefixDestiny='0'|'0x'|''] - Used as the \"prefix\" parameter when calling the {@link CB_intToBase} function internally.\r\n * @returns {string} Returns the returning value of the internal call to the {@link CB_intToBase} function.\r\n * @todo Think about accepting a decimal symbol to separate decimals and support float numbers.\r\n */","meta":{"range":[78428,78790],"filename":"CB_data.js","lineno":1420,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100072131","name":"CB_baseToBase","type":"FunctionDeclaration","paramnames":["number","baseSymbolsOrigin","baseSymbolsDestiny","unsigned","minusSymbolOrigin","minusSymbolDestiny","prefixOrigin","prefixDestiny"]},"vars":{"numberDecimal":"CB_baseToBase~numberDecimal"}},"description":"<p>Converts a given number which is already in a desired base into another chosen base.<br> <br /><br> Note: Uses {@link CB_baseToInt} and {@link CB_intToBase} internally.</p>","kind":"function","params":[{"type":{"names":["string"]},"description":"<p>A string containing the number which is already in the desired base and that we want to convert into the another chosen base. Used as the &quot;number&quot; parameter for calling both {@link CB_intToBase} and {@link CB_baseToInt} functions internally.</p>","name":"number"},{"type":{"names":["array","integer"]},"optional":true,"defaultvalue":"{@link CB_baseSymbols.66}","description":"<p>Used as the &quot;baseSymbols&quot; parameter when calling the {@link CB_baseToInt} function internally.</p>","name":"baseSymbolsOrigin"},{"type":{"names":["array","integer"]},"optional":true,"defaultvalue":"{@link CB_baseSymbols.66}","description":"<p>Used as the &quot;baseSymbols&quot; parameter when calling the {@link CB_intToBase} function internally.</p>","name":"baseSymbolsDestiny"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>Determines whether to treat the input and output numbers as unsigned or not. Used as the &quot;unsigned&quot; parameter for calling both {@link CB_intToBase} and {@link CB_baseToInt} functions internally.</p>","name":"unsigned"},{"type":{"names":["string"]},"optional":true,"defaultvalue":"'-'|'0'","description":"<p>Used as the &quot;minusSymbol&quot; parameter when calling the {@link CB_baseToInt} function internally.</p>","name":"minusSymbolOrigin"},{"type":{"names":["string"]},"optional":true,"defaultvalue":"'-'|'0'","description":"<p>Used as the &quot;minusSymbol&quot; parameter when calling the {@link CB_intToBase} function internally.</p>","name":"minusSymbolDestiny"},{"type":{"names":["prefix"]},"optional":true,"defaultvalue":"'0'|'0x'|''","description":"<p>Used as the &quot;prefix&quot; parameter when calling the {@link CB_baseToInt} function internally.</p>","name":"prefixOrigin"},{"type":{"names":["prefix"]},"optional":true,"defaultvalue":"'0'|'0x'|''","description":"<p>Used as the &quot;prefix&quot; parameter when calling the {@link CB_intToBase} function internally.</p>","name":"prefixDestiny"}],"returns":[{"type":{"names":["string"]},"description":"<p>Returns the returning value of the internal call to the {@link CB_intToBase} function.</p>"}],"todo":["Think about accepting a decimal symbol to separate decimals and support float numbers."],"name":"CB_baseToBase","longname":"CB_baseToBase","scope":"global"},{"comment":"/**\r\n * Returns the string or array of strings with all the desired occurrences replaced. Calls itself recursively and calls the {@link CB_regularExpressionString} function internally.\r\n * @function\r\n * @param {string|array} stringOrArray - An string or an array of strings whose content we want to replace. It can also be an array of arrays of strings (as many levels as you wish). If an array is given, it will not be modified and a copy from it will be generated and returned with the occurrences replaced.\r\n * @param {string|array} stringOrArrayFind - An string or an array of strings (not a regular expressions) that we want to find to be replaced (special characters will be escaped).\r\n * @param {string} [stringReplace=\"\"] - The string that will replace \"stringFind\". If not provided, it will be replaced as an empty string (it will just remove the occurrences found).\r\n * @param {boolean} [caseInsensitive=false] - Defines whether we want to be case insensitive or not.\r\n * @returns {string|array} Returns the \"stringOrArray\" given with occurrences replaced. If the \"stringOrArray\" given was neither a string nor an array, it will be returned without being modified.\r\n */","meta":{"range":[79983,80792],"filename":"CB_data.js","lineno":1436,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100072160","name":"CB_replaceAll","type":"FunctionDeclaration","paramnames":["stringOrArray","stringOrArrayFind","stringReplace","caseInsensitive"]},"vars":{"arrayCopy":"CB_replaceAll~arrayCopy","x":"CB_replaceAll~x","arrayCopy[undefined]":"CB_replaceAll~arrayCopy.undefined]","stringOrArray":"CB_replaceAll~stringOrArray","stringOrArrayFind":"CB_replaceAll~stringOrArrayFind"}},"description":"<p>Returns the string or array of strings with all the desired occurrences replaced. Calls itself recursively and calls the {@link CB_regularExpressionString} function internally.</p>","kind":"function","params":[{"type":{"names":["string","array"]},"description":"<p>An string or an array of strings whose content we want to replace. It can also be an array of arrays of strings (as many levels as you wish). If an array is given, it will not be modified and a copy from it will be generated and returned with the occurrences replaced.</p>","name":"stringOrArray"},{"type":{"names":["string","array"]},"description":"<p>An string or an array of strings (not a regular expressions) that we want to find to be replaced (special characters will be escaped).</p>","name":"stringOrArrayFind"},{"type":{"names":["string"]},"optional":true,"defaultvalue":"\"\"","description":"<p>The string that will replace &quot;stringFind&quot;. If not provided, it will be replaced as an empty string (it will just remove the occurrences found).</p>","name":"stringReplace"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>Defines whether we want to be case insensitive or not.</p>","name":"caseInsensitive"}],"returns":[{"type":{"names":["string","array"]},"description":"<p>Returns the &quot;stringOrArray&quot; given with occurrences replaced. If the &quot;stringOrArray&quot; given was neither a string nor an array, it will be returned without being modified.</p>"}],"name":"CB_replaceAll","longname":"CB_replaceAll","scope":"global"},{"comment":"/**\r\n * Returns a desired regular expression (escaping the string) using the native JavaScript's [RegExp]{@link https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/RegExp} from a given string.\r\n * @function\r\n * @param {string} string - The string (not a regular expression) that we want to use (special characters will be escaped).\r\n * @param {boolean} [allOccurrences=false] - Defines whether we want the regular expression returned to match all occurrences of the given string or only first found.\r\n * @param {boolean} [caseInsensitive=false] - Defines whether we want the regular expression returned to be case insensitive or not.\r\n * @returns {RegExp} Returns the desired regular expression (escaping the string) using the native JavaScript's [RegExp]{@link https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/RegExp} from a given string.\r\n */","meta":{"range":[81821,82129],"filename":"CB_data.js","lineno":1469,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100072253","name":"CB_regularExpressionString","type":"FunctionDeclaration","paramnames":["string","allOccurrences","caseInsensitive"]},"vars":{"parameters":"CB_regularExpressionString~parameters"}},"description":"<p>Returns a desired regular expression (escaping the string) using the native JavaScript's [RegExp]{@link https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/RegExp} from a given string.</p>","kind":"function","params":[{"type":{"names":["string"]},"description":"<p>The string (not a regular expression) that we want to use (special characters will be escaped).</p>","name":"string"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>Defines whether we want the regular expression returned to match all occurrences of the given string or only first found.</p>","name":"allOccurrences"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>Defines whether we want the regular expression returned to be case insensitive or not.</p>","name":"caseInsensitive"}],"returns":[{"type":{"names":["RegExp"]},"description":"<p>Returns the desired regular expression (escaping the string) using the native JavaScript's [RegExp]{@link https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/RegExp} from a given string.</p>"}],"name":"CB_regularExpressionString","longname":"CB_regularExpressionString","scope":"global"},{"comment":"/**\r\n * Returns the \"LZString\" object (used by the [lz-string]{@link http://pieroxy.net/blog/pages/lz-string/index.html} library), if any. Useful for compressing/decompressing strings.\r\n * @function\r\n * @returns {Object} Returns the \"LZString\" object (used by the [lz-string]{@link http://pieroxy.net/blog/pages/lz-string/index.html} library) if available or null otherwise.\r\n */","meta":{"range":[82518,82615],"filename":"CB_data.js","lineno":1483,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100072292","name":"CB_getLZStringObject","type":"FunctionDeclaration","paramnames":[]}},"description":"<p>Returns the &quot;LZString&quot; object (used by the [lz-string]{@link http://pieroxy.net/blog/pages/lz-string/index.html} library), if any. Useful for compressing/decompressing strings.</p>","kind":"function","returns":[{"type":{"names":["Object"]},"description":"<p>Returns the &quot;LZString&quot; object (used by the [lz-string]{@link http://pieroxy.net/blog/pages/lz-string/index.html} library) if available or null otherwise.</p>"}],"name":"CB_getLZStringObject","longname":"CB_getLZStringObject","scope":"global","params":[]},{"comment":"/**\r\n * Returns the \"Base64String\" object (used by the base64-string library included in [lz-string]{@link http://pieroxy.net/blog/pages/lz-string/index.html}), if any. Useful for compressing/decompressing base64 code.\r\n * @function\r\n * @returns {Object} Returns the \"Base64String\" object (used by the base64-string library included in [lz-string]{@link http://pieroxy.net/blog/pages/lz-string/index.html}) if available or null otherwise.\r\n */","meta":{"range":[83068,83177],"filename":"CB_data.js","lineno":1494,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100072303","name":"CB_getBase64StringObject","type":"FunctionDeclaration","paramnames":[]}},"description":"<p>Returns the &quot;Base64String&quot; object (used by the base64-string library included in [lz-string]{@link http://pieroxy.net/blog/pages/lz-string/index.html}), if any. Useful for compressing/decompressing base64 code.</p>","kind":"function","returns":[{"type":{"names":["Object"]},"description":"<p>Returns the &quot;Base64String&quot; object (used by the base64-string library included in [lz-string]{@link http://pieroxy.net/blog/pages/lz-string/index.html}) if available or null otherwise.</p>"}],"name":"CB_getBase64StringObject","longname":"CB_getBase64StringObject","scope":"global","params":[]},{"comment":"/**\r\n * @file DOM elements management. Contains the {@link CB_Elements} static class.\r\n * @author Joan Alba Maldonado <workindalian@gmail.com>\r\n */","meta":{"filename":"CB_Elements.js","lineno":1,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{}},"name":"CrossBase/general/CB_Elements.js","kind":"file","description":"<p>DOM elements management. Contains the {@link CB_Elements} static class.</p>","preserveName":true,"author":["Joan Alba Maldonado <workindalian@gmail.com>"],"longname":"CrossBase/general/CB_Elements.js","scope":"global"},{"comment":"/**\r\n * Static class to manage DOM elements. It will return itself if it is tried to be instantiated.\r\n * @namespace\r\n * @todo Think about creating a function called \"add\" or \"create\" to create a new element (it could accept \"tagName\", \"id\" and \"content\" parameters).\r\n * @todo Think about creating \"setStyle\" and \"setStyleById\" methods to add a given style attribute and also supporting a boolean parameter to also add the style attribute with vendor prefixes (webkit, moz, ms, o, khtml) if we want to.\r\n */","meta":{"range":[669,717],"filename":"CB_Elements.js","lineno":13,"columnno":4,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100072317","name":"CB_Elements","type":"FunctionExpression"}},"description":"<p>Static class to manage DOM elements. It will return itself if it is tried to be instantiated.</p>","kind":"namespace","todo":["Think about creating a function called \"add\" or \"create\" to create a new element (it could accept \"tagName\", \"id\" and \"content\" parameters).","Think about creating \"setStyle\" and \"setStyleById\" methods to add a given style attribute and also supporting a boolean parameter to also add the style attribute with vendor prefixes (webkit, moz, ms, o, khtml) if we want to."],"name":"CB_Elements","longname":"CB_Elements","scope":"global","params":[]},{"comment":"/**\r\n\t * Returns elements by their tag name.\r\n\t * @function\r\n\t * @param {string} [tagName='*'] - The name of the tag whose elements we want to find. Use asterisk (\"*\") in the case that we want all the elements.\r\n\t * @param {Node} [baseElement=document] - The node element parent where we want to focus our search.\r\n\t * @param {boolean} [useCache={@link CB_Configuration.CrossBase.CB_Elements_tag_USE_CACHE}] - Defines whether to try to get the result from an internal cache (it will exist if we previously called the function with the same parameters) or not. The internal cache will be updated when this parameter is set to false or it will be created automatically when it did not exist before.\r\n\t * @returns {NodeList|array} Returns the elements (NodeList or array, depending on the web client).\r\n\t */","meta":{"range":[2205,6605],"filename":"CB_Elements.js","lineno":51,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100072405","name":"CB_Elements.tag","type":"FunctionExpression","paramnames":["tagName","baseElement","useCache"]},"vars":{"baseElement":"CB_Elements.tag~baseElement","useCache":"CB_Elements.tag~useCache","tagName":"CB_Elements.tag~tagName","CB_Elements._tagCache[undefined]":"CB_Elements._tagCache[undefined]","CB_Elements._tagCache[undefined][undefined]":"CB_Elements._tagCache[undefined][undefined]","allElements":"CB_Elements.tag~allElements","allElementsLength":"CB_Elements.tag~allElementsLength","elementCurrent":"CB_Elements.tag~elementCurrent","x":"CB_Elements.tag~x"}},"description":"<p>Returns elements by their tag name.</p>","kind":"function","params":[{"type":{"names":["string"]},"optional":true,"defaultvalue":"'*'","description":"<p>The name of the tag whose elements we want to find. Use asterisk (&quot;*&quot;) in the case that we want all the elements.</p>","name":"tagName"},{"type":{"names":["Node"]},"optional":true,"defaultvalue":"document","description":"<p>The node element parent where we want to focus our search.</p>","name":"baseElement"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":"{@link CB_Configuration.CrossBase.CB_Elements_tag_USE_CACHE}","description":"<p>Defines whether to try to get the result from an internal cache (it will exist if we previously called the function with the same parameters) or not. The internal cache will be updated when this parameter is set to false or it will be created automatically when it did not exist before.</p>","name":"useCache"}],"returns":[{"type":{"names":["NodeList","array"]},"description":"<p>Returns the elements (NodeList or array, depending on the web client).</p>"}],"name":"tag","longname":"CB_Elements.tag","memberof":"CB_Elements","scope":"static"},{"comment":"/**\r\n\t * Returns elements by their tag name, updating (or creating) the internal cache. Calls the {@link CB_Elements.tag} function internally, with the \"useCache\" parameter set to false.\r\n\t * @function\r\n\t * @param {string} [tagName='*'] - The name of the tag whose elements we want to find. Use asterisk (\"*\") in the case that we want all the elements.\r\n\t * @param {Node} [baseElement=document] - The node element parent where we want to focus our search.\r\n\t * @returns {NodeList|array} Returns the elements (NodeList or array, depending on the web client).\r\n\t */","meta":{"range":[7182,7305],"filename":"CB_Elements.js","lineno":171,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100072924","name":"CB_Elements.tagCacheUpdate","type":"FunctionExpression","paramnames":["tagName","baseElement"]}},"description":"<p>Returns elements by their tag name, updating (or creating) the internal cache. Calls the {@link CB_Elements.tag} function internally, with the &quot;useCache&quot; parameter set to false.</p>","kind":"function","params":[{"type":{"names":["string"]},"optional":true,"defaultvalue":"'*'","description":"<p>The name of the tag whose elements we want to find. Use asterisk (&quot;*&quot;) in the case that we want all the elements.</p>","name":"tagName"},{"type":{"names":["Node"]},"optional":true,"defaultvalue":"document","description":"<p>The node element parent where we want to focus our search.</p>","name":"baseElement"}],"returns":[{"type":{"names":["NodeList","array"]},"description":"<p>Returns the elements (NodeList or array, depending on the web client).</p>"}],"name":"tagCacheUpdate","longname":"CB_Elements.tagCacheUpdate","memberof":"CB_Elements","scope":"static"},{"comment":"/**\r\n\t * Clears the internal cache user by {@link CB_Elements.tag} and others. If no parameter is given, whole internal cache will be cleared.\r\n\t * @function\r\n\t * @param {string} [tagName] - The name of the tag whose internal cache we want to clear. Use asterisk (\"*\") in the case that we want to clear the internal cache for {@link CB_Elements.tag} which is used when it is called with this exact parameter. If not provided, it will clear the whole internal cache or the internal cache that belongs to the \"baseElement\" given (if provided).\r\n\t * @param {Node} [baseElement] - The node element parent whose internal cache we want to clear. If not provided but \"tagName\" is provided, it will clear the internal cache which matches the given \"tagName\" for any nodes. If it is provided but \"tagName\" is not, it will clear all the internal cache that belongs to this node element.\r\n\t * @returns {Object} Returns the current internal cache after clearing it (if it is has been possible), which is an associative array of two dimensions (JavaScript object) whose first index belongs to the nodes, the second and last index belongs to the tag name and the value belongs to the returning value of the {@link CB_Elements.tag} function when it was called for those parameters.\r\n\t */","meta":{"range":[8592,10395],"filename":"CB_Elements.js","lineno":184,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100072941","name":"CB_Elements.tagCacheClear","type":"FunctionExpression","paramnames":["tagName","baseElement"]},"vars":{"tagName":"CB_Elements.tagCacheClear~tagName","CB_Elements._tagCache":"CB_Elements._tagCache","CB_Elements._tagCache[undefined][undefined]":"CB_Elements._tagCache[undefined][undefined]","CB_Elements._tagCache[undefined]":"CB_Elements._tagCache[undefined]","currentBaseElement":"CB_Elements.tagCacheClear~currentBaseElement"}},"description":"<p>Clears the internal cache user by {@link CB_Elements.tag} and others. If no parameter is given, whole internal cache will be cleared.</p>","kind":"function","params":[{"type":{"names":["string"]},"optional":true,"description":"<p>The name of the tag whose internal cache we want to clear. Use asterisk (&quot;*&quot;) in the case that we want to clear the internal cache for {@link CB_Elements.tag} which is used when it is called with this exact parameter. If not provided, it will clear the whole internal cache or the internal cache that belongs to the &quot;baseElement&quot; given (if provided).</p>","name":"tagName"},{"type":{"names":["Node"]},"optional":true,"description":"<p>The node element parent whose internal cache we want to clear. If not provided but &quot;tagName&quot; is provided, it will clear the internal cache which matches the given &quot;tagName&quot; for any nodes. If it is provided but &quot;tagName&quot; is not, it will clear all the internal cache that belongs to this node element.</p>","name":"baseElement"}],"returns":[{"type":{"names":["Object"]},"description":"<p>Returns the current internal cache after clearing it (if it is has been possible), which is an associative array of two dimensions (JavaScript object) whose first index belongs to the nodes, the second and last index belongs to the tag name and the value belongs to the returning value of the {@link CB_Elements.tag} function when it was called for those parameters.</p>"}],"name":"tagCacheClear","longname":"CB_Elements.tagCacheClear","memberof":"CB_Elements","scope":"static"},{"comment":"/**\r\n\t * Alias for {@link CB_Elements.tagRemove}.\r\n\t * @function CB_Elements.removeByTagName\r\n\t * @see {@link CB_Elements.tagRemove}\r\n\t */","meta":{"filename":"CB_Elements.js","lineno":228,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{}},"description":"<p>Alias for {@link CB_Elements.tagRemove}.</p>","kind":"function","name":"removeByTagName","see":["{@link CB_Elements.tagRemove}"],"memberof":"CB_Elements","longname":"CB_Elements.removeByTagName","scope":"static"},{"comment":"/**\r\n\t * Removes elements by their tag name.\r\n\t * @function\r\n\t * @param {string} [tagName='*'] - The name of the tag whose elements we want to delete. Use asterisk (\"*\") in the case that we want all the elements.\r\n\t * @param {Node} [baseElement=document] - The node element parent where we want to focus our search.\r\n\t * @param {boolean} [useCache={@link CB_Configuration.CrossBase.CB_Elements_tag_USE_CACHE}] - Defines whether to try to get the result from an internal cache (it will exist if we previously called the function with the same parameters) or not. The internal cache will be updated when this parameter is set to false or it will be created automatically when it did not exist before.\r\n\t */","meta":{"range":[11257,12259],"filename":"CB_Elements.js","lineno":240,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100073137","name":"CB_Elements.tagRemove","type":"AssignmentExpression","value":"CB_Elements.removeByTagName","paramnames":[]}},"description":"<p>Removes elements by their tag name.</p>","kind":"function","params":[{"type":{"names":["string"]},"optional":true,"defaultvalue":"'*'","description":"<p>The name of the tag whose elements we want to delete. Use asterisk (&quot;*&quot;) in the case that we want all the elements.</p>","name":"tagName"},{"type":{"names":["Node"]},"optional":true,"defaultvalue":"document","description":"<p>The node element parent where we want to focus our search.</p>","name":"baseElement"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":"{@link CB_Configuration.CrossBase.CB_Elements_tag_USE_CACHE}","description":"<p>Defines whether to try to get the result from an internal cache (it will exist if we previously called the function with the same parameters) or not. The internal cache will be updated when this parameter is set to false or it will be created automatically when it did not exist before.</p>","name":"useCache"}],"name":"tagRemove","longname":"CB_Elements.tagRemove","memberof":"CB_Elements","scope":"static"},{"comment":"/**\r\n\t * Returns elements by their class or classes name.\r\n\t * @function\r\n\t * @param {string} classNames - The name of the class or classes (separated by a blank space) whose elements we want to find. The order of the classes is just important for the internal cache.\r\n\t * @param {Node} [baseElement=document] - The node element parent where we want to focus our search.\r\n\t * @param {boolean} [useCache={@link CB_Configuration.CrossBase.CB_Elements_classes_USE_CACHE}] - Defines whether to try to get the result from an internal cache (it will exist if we previously called the function with the same parameters) or not. The internal cache will be updated when this parameter is set to false or it will be created automatically when it did not exist before.\r\n\t * @returns {NodeList|array} Returns the elements (NodeList or array, depending on the web client).\r\n\t */","meta":{"range":[13173,18442],"filename":"CB_Elements.js","lineno":273,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100073289","name":"CB_Elements.classes","type":"FunctionExpression","paramnames":["classNames","baseElement","useCache"]},"vars":{"useCache":"CB_Elements.classes~useCache","baseElement":"CB_Elements.classes~baseElement","classNames":"CB_Elements.classes~classNames","CB_Elements._classesCache[undefined]":"CB_Elements._classesCache[undefined]","CB_Elements._classesCache[undefined][undefined]":"CB_Elements._classesCache[undefined][undefined]","allElements":"CB_Elements.classes~allElements","allElementsLength":"CB_Elements.classes~allElementsLength","classesDesired":"CB_Elements.classes~classesDesired","classesDesiredLength":"CB_Elements.classes~classesDesiredLength","x":"CB_Elements.classes~x","classesDesired[undefined]":"CB_Elements.classes~classesDesired.undefined]","elementCurrent":"CB_Elements.classes~elementCurrent","elementCurrentClass":"CB_Elements.classes~elementCurrentClass","classes":"CB_Elements.classes~classes","classesLength":"CB_Elements.classes~classesLength","y":"CB_Elements.classes~y","z":"CB_Elements.classes~z","allClassesFound":"CB_Elements.classes~allClassesFound","classes[undefined]":"CB_Elements.classes~classes.undefined]"}},"description":"<p>Returns elements by their class or classes name.</p>","kind":"function","params":[{"type":{"names":["string"]},"description":"<p>The name of the class or classes (separated by a blank space) whose elements we want to find. The order of the classes is just important for the internal cache.</p>","name":"classNames"},{"type":{"names":["Node"]},"optional":true,"defaultvalue":"document","description":"<p>The node element parent where we want to focus our search.</p>","name":"baseElement"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":"{@link CB_Configuration.CrossBase.CB_Elements_classes_USE_CACHE}","description":"<p>Defines whether to try to get the result from an internal cache (it will exist if we previously called the function with the same parameters) or not. The internal cache will be updated when this parameter is set to false or it will be created automatically when it did not exist before.</p>","name":"useCache"}],"returns":[{"type":{"names":["NodeList","array"]},"description":"<p>Returns the elements (NodeList or array, depending on the web client).</p>"}],"name":"classes","longname":"CB_Elements.classes","memberof":"CB_Elements","scope":"static"},{"comment":"/**\r\n\t * Returns elements by their class or classes name, updating (or creating) the internal cache. Calls the {@link CB_Elements.classes} function internally, with the \"useCache\" parameter set to false.\r\n\t * @function\r\n\t * @param {string} classNames - The name of the class or classes (separated by a blank space) whose elements we want to find. The order of the classes is just important for the internal cache.\r\n\t * @param {Node} [baseElement=document] - The node element parent where we want to focus our search.\r\n\t * @returns {NodeList|array} Returns the elements (NodeList or array, depending on the web client).\r\n\t */","meta":{"range":[19080,19217],"filename":"CB_Elements.js","lineno":426,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100073741","name":"CB_Elements.classesCacheUpdate","type":"FunctionExpression","paramnames":["classNames","baseElement"]}},"description":"<p>Returns elements by their class or classes name, updating (or creating) the internal cache. Calls the {@link CB_Elements.classes} function internally, with the &quot;useCache&quot; parameter set to false.</p>","kind":"function","params":[{"type":{"names":["string"]},"description":"<p>The name of the class or classes (separated by a blank space) whose elements we want to find. The order of the classes is just important for the internal cache.</p>","name":"classNames"},{"type":{"names":["Node"]},"optional":true,"defaultvalue":"document","description":"<p>The node element parent where we want to focus our search.</p>","name":"baseElement"}],"returns":[{"type":{"names":["NodeList","array"]},"description":"<p>Returns the elements (NodeList or array, depending on the web client).</p>"}],"name":"classesCacheUpdate","longname":"CB_Elements.classesCacheUpdate","memberof":"CB_Elements","scope":"static"},{"comment":"/**\r\n\t * Clears the internal cache used by {@link CB_Elements.classes} and others. If no parameter is given, whole internal cache will be cleared.\r\n\t * @function\r\n\t * @param {string} [classNames] - The name of the class or classes (separated by a blank space) whose internal cache we want to clear. The order of the classes is important for the internal cache. If not provided, it will clear the whole internal cache or the internal cache that belongs to the \"baseElement\" given (if provided).\r\n\t * @param {Node} [baseElement] - The node element parent whose internal cache we want to clear. If not provided but \"classNames\" is provided, it will clear the internal cache which matches the given \"classNames\" for any nodes. If it is provided but \"classNames\" is not, it will clear all the internal cache that belongs to this node element.\r\n\t * @returns {Object} Returns the current internal cache after cleaning it (if it is has been possible), which is an associative array of two dimensions (JavaScript object) whose first index belongs to the nodes, the second and last index belongs to the class name or class names and the value belongs to the returning value of the {@link CB_Elements.classes} function when it was called for those parameters.\r\n\t */","meta":{"range":[20485,22405],"filename":"CB_Elements.js","lineno":439,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100073758","name":"CB_Elements.classesCacheClear","type":"FunctionExpression","paramnames":["classNames","baseElement"]},"vars":{"classNames":"CB_Elements.classesCacheClear~classNames","CB_Elements._classesCache":"CB_Elements._classesCache","CB_Elements._classesCache[undefined][undefined]":"CB_Elements._classesCache[undefined][undefined]","CB_Elements._classesCache[undefined]":"CB_Elements._classesCache[undefined]","currentBaseElement":"CB_Elements.classesCacheClear~currentBaseElement"}},"description":"<p>Clears the internal cache used by {@link CB_Elements.classes} and others. If no parameter is given, whole internal cache will be cleared.</p>","kind":"function","params":[{"type":{"names":["string"]},"optional":true,"description":"<p>The name of the class or classes (separated by a blank space) whose internal cache we want to clear. The order of the classes is important for the internal cache. If not provided, it will clear the whole internal cache or the internal cache that belongs to the &quot;baseElement&quot; given (if provided).</p>","name":"classNames"},{"type":{"names":["Node"]},"optional":true,"description":"<p>The node element parent whose internal cache we want to clear. If not provided but &quot;classNames&quot; is provided, it will clear the internal cache which matches the given &quot;classNames&quot; for any nodes. If it is provided but &quot;classNames&quot; is not, it will clear all the internal cache that belongs to this node element.</p>","name":"baseElement"}],"returns":[{"type":{"names":["Object"]},"description":"<p>Returns the current internal cache after cleaning it (if it is has been possible), which is an associative array of two dimensions (JavaScript object) whose first index belongs to the nodes, the second and last index belongs to the class name or class names and the value belongs to the returning value of the {@link CB_Elements.classes} function when it was called for those parameters.</p>"}],"name":"classesCacheClear","longname":"CB_Elements.classesCacheClear","memberof":"CB_Elements","scope":"static"},{"comment":"/**\r\n\t * Alias for {@link CB_Elements.classesRemove}.\r\n\t * @function CB_Elements.removeByClasses\r\n\t * @see {@link CB_Elements.classesRemove}\r\n\t */","meta":{"filename":"CB_Elements.js","lineno":483,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{}},"description":"<p>Alias for {@link CB_Elements.classesRemove}.</p>","kind":"function","name":"removeByClasses","see":["{@link CB_Elements.classesRemove}"],"memberof":"CB_Elements","longname":"CB_Elements.removeByClasses","scope":"static"},{"comment":"/**\r\n\t * Removes elements by their class or classes name.\r\n\t * @function\r\n\t * @param {string} classNames - The name of the class or classes (separated by a blank space) whose elements we want to delete. The order of the classes is just important for the internal cache.\r\n\t * @param {Node} [baseElement=document] - The node element parent where we want to focus our search.\r\n\t * @param {boolean} [useCache={@link CB_Configuration.CrossBase.CB_Elements_classes_USE_CACHE}] - Defines whether to try to get the result from an internal cache (it will exist if we previously called the function with the same parameters) or not. The internal cache will be updated when this parameter is set to false or it will be created automatically when it did not exist before.\r\n\t */","meta":{"range":[23336,24343],"filename":"CB_Elements.js","lineno":495,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100073951","name":"CB_Elements.classesRemove","type":"AssignmentExpression","value":"CB_Elements.removeByClasses","paramnames":[]}},"description":"<p>Removes elements by their class or classes name.</p>","kind":"function","params":[{"type":{"names":["string"]},"description":"<p>The name of the class or classes (separated by a blank space) whose elements we want to delete. The order of the classes is just important for the internal cache.</p>","name":"classNames"},{"type":{"names":["Node"]},"optional":true,"defaultvalue":"document","description":"<p>The node element parent where we want to focus our search.</p>","name":"baseElement"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":"{@link CB_Configuration.CrossBase.CB_Elements_classes_USE_CACHE}","description":"<p>Defines whether to try to get the result from an internal cache (it will exist if we previously called the function with the same parameters) or not. The internal cache will be updated when this parameter is set to false or it will be created automatically when it did not exist before.</p>","name":"useCache"}],"name":"classesRemove","longname":"CB_Elements.classesRemove","memberof":"CB_Elements","scope":"static"},{"comment":"/**\r\n\t * Alias for {@link CB_Elements.id}.\r\n\t * @function CB_Elements.byId\r\n\t * @see {@link CB_Elements.id}\r\n\t */","meta":{"filename":"CB_Elements.js","lineno":520,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{}},"description":"<p>Alias for {@link CB_Elements.id}.</p>","kind":"function","name":"byId","see":["{@link CB_Elements.id}"],"memberof":"CB_Elements","longname":"CB_Elements.byId","scope":"static"},{"comment":"/**\r\n\t * Alias for {@link CB_Elements.id}.\r\n\t * @function CB_Elements.get\r\n\t * @see {@link CB_Elements.id}\r\n\t */","meta":{"filename":"CB_Elements.js","lineno":525,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{}},"description":"<p>Alias for {@link CB_Elements.id}.</p>","kind":"function","name":"get","see":["{@link CB_Elements.id}"],"memberof":"CB_Elements","longname":"CB_Elements.get","scope":"static"},{"comment":"/**\r\n\t * Alias for {@link CB_Elements.id}.\r\n\t * @function CB_Elements.getById\r\n\t * @see {@link CB_Elements.id}\r\n\t */","meta":{"filename":"CB_Elements.js","lineno":530,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{}},"description":"<p>Alias for {@link CB_Elements.id}.</p>","kind":"function","name":"getById","see":["{@link CB_Elements.id}"],"memberof":"CB_Elements","longname":"CB_Elements.getById","scope":"static"},{"comment":"/**\r\n\t * Returns an element by its ID.\r\n\t * @function\r\n\t * @param {string} id - The identifier of the element that we want to find.\r\n\t * @param {boolean} [useCache={@link CB_Configuration.CrossBase.CB_Elements_id_USE_CACHE}] - Defines whether to try to get the result from an internal cache (it will exist if we previously called the function with the same parameters) or not. The internal cache will be updated when this parameter is set to false or it will be created automatically when it did not exist before.\r\n\t * @returns {Node|Object|null} Returns the elements (Node or object, depending on the web client). It will return null when not found.\r\n\t */","meta":{"range":[25401,26561],"filename":"CB_Elements.js","lineno":542,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100074100","name":"CB_Elements.id","type":"AssignmentExpression","value":"CB_Elements.byId","paramnames":[]}},"description":"<p>Returns an element by its ID.</p>","kind":"function","params":[{"type":{"names":["string"]},"description":"<p>The identifier of the element that we want to find.</p>","name":"id"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":"{@link CB_Configuration.CrossBase.CB_Elements_id_USE_CACHE}","description":"<p>Defines whether to try to get the result from an internal cache (it will exist if we previously called the function with the same parameters) or not. The internal cache will be updated when this parameter is set to false or it will be created automatically when it did not exist before.</p>","name":"useCache"}],"returns":[{"type":{"names":["Node","Object","null"]},"description":"<p>Returns the elements (Node or object, depending on the web client). It will return null when not found.</p>"}],"name":"id","longname":"CB_Elements.id","memberof":"CB_Elements","scope":"static"},{"comment":"/**\r\n\t * Returns an element by its ID, updating (or creating) the internal cache. Calls the {@link CB_Elements.id} function internally, with the \"useCache\" parameter set to false.\r\n\t * @function\r\n\t * @param {string} id - The identifier of the element that we want to find.\r\n\t * @returns {node|Object|null} Returns the elements (Node or object, depending on the web client). It will return null when not found.\r\n\t */","meta":{"range":[26989,27074],"filename":"CB_Elements.js","lineno":588,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100074293","name":"CB_Elements.idCacheUpdate","type":"FunctionExpression","paramnames":["id"]}},"description":"<p>Returns an element by its ID, updating (or creating) the internal cache. Calls the {@link CB_Elements.id} function internally, with the &quot;useCache&quot; parameter set to false.</p>","kind":"function","params":[{"type":{"names":["string"]},"description":"<p>The identifier of the element that we want to find.</p>","name":"id"}],"returns":[{"type":{"names":["node","Object","null"]},"description":"<p>Returns the elements (Node or object, depending on the web client). It will return null when not found.</p>"}],"name":"idCacheUpdate","longname":"CB_Elements.idCacheUpdate","memberof":"CB_Elements","scope":"static"},{"comment":"/**\r\n\t * Clears the internal cache used by {@link CB_Elements.id} and others. If no parameter is given, whole internal cache will be cleared.\r\n\t * @function\r\n\t * @param {string} [id] - The identifier of the element whose internal cache we want to clear. If not provided, it will clear the whole internal cache.\r\n\t * @returns {Object} Returns the current internal cache after cleaning it (if it is has been possible), which is an associative array of one dimension (JavaScript object) whose first and unique index belongs to the identifier and the value belongs to each element.\r\n\t */","meta":{"range":[27670,27864],"filename":"CB_Elements.js","lineno":600,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100074308","name":"CB_Elements.idCacheClear","type":"FunctionExpression","paramnames":["id"]},"vars":{"id":"CB_Elements.idCacheClear~id","CB_Elements._idCache":"CB_Elements._idCache","CB_Elements._idCache[undefined]":"CB_Elements._idCache[undefined]"}},"description":"<p>Clears the internal cache used by {@link CB_Elements.id} and others. If no parameter is given, whole internal cache will be cleared.</p>","kind":"function","params":[{"type":{"names":["string"]},"optional":true,"description":"<p>The identifier of the element whose internal cache we want to clear. If not provided, it will clear the whole internal cache.</p>","name":"id"}],"returns":[{"type":{"names":["Object"]},"description":"<p>Returns the current internal cache after cleaning it (if it is has been possible), which is an associative array of one dimension (JavaScript object) whose first and unique index belongs to the identifier and the value belongs to each element.</p>"}],"name":"idCacheClear","longname":"CB_Elements.idCacheClear","memberof":"CB_Elements","scope":"static"},{"comment":"/**\r\n\t * Alias for {@link CB_Elements.idRemove}.\r\n\t * @function CB_Elements.removeById\r\n\t * @see {@link CB_Elements.idRemove}\r\n\t */","meta":{"filename":"CB_Elements.js","lineno":609,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{}},"description":"<p>Alias for {@link CB_Elements.idRemove}.</p>","kind":"function","name":"removeById","see":["{@link CB_Elements.idRemove}"],"memberof":"CB_Elements","longname":"CB_Elements.removeById","scope":"static"},{"comment":"/**\r\n\t * Removes an element by its ID.\r\n\t * @function\r\n\t * @param {string} id - The identifier of the element that we want to delete.\r\n\t * @param {boolean} [useCache={@link CB_Configuration.CrossBase.CB_Elements_id_USE_CACHE}] - Defines whether to try to get the result from an internal cache (it will exist if we previously called the function with the same parameters) or not. The internal cache will be updated when this parameter is set to false or it will be created automatically when it did not exist before.\r\n\t */","meta":{"range":[28534,28896],"filename":"CB_Elements.js","lineno":620,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100074346","name":"CB_Elements.idRemove","type":"AssignmentExpression","value":"CB_Elements.removeById","paramnames":[]}},"description":"<p>Removes an element by its ID.</p>","kind":"function","params":[{"type":{"names":["string"]},"description":"<p>The identifier of the element that we want to delete.</p>","name":"id"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":"{@link CB_Configuration.CrossBase.CB_Elements_id_USE_CACHE}","description":"<p>Defines whether to try to get the result from an internal cache (it will exist if we previously called the function with the same parameters) or not. The internal cache will be updated when this parameter is set to false or it will be created automatically when it did not exist before.</p>","name":"useCache"}],"name":"idRemove","longname":"CB_Elements.idRemove","memberof":"CB_Elements","scope":"static"},{"comment":"/**\r\n\t * Removes an element given.\r\n\t * @function\r\n\t * @param {Node} element - The element that we want to delete.\r\n\t */","meta":{"range":[29028,30644],"filename":"CB_Elements.js","lineno":638,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100074394","name":"CB_Elements.remove","type":"FunctionExpression","paramnames":["element"]},"vars":{"elementParent":"CB_Elements.remove~elementParent","document.all[undefined].innerHTML":"document.all[undefined].innerHTML","document.all[undefined].outerHTML":"document.all[undefined].outerHTML",".innerHTML":"CB_Elements.remove~.innerHTML",".outerHTML":"CB_Elements.remove~.outerHTML","document.layers[undefined].visibility":"document.layers[undefined].visibility","element":"CB_Elements.remove~element"}},"description":"<p>Removes an element given.</p>","kind":"function","params":[{"type":{"names":["Node"]},"description":"<p>The element that we want to delete.</p>","name":"element"}],"name":"remove","longname":"CB_Elements.remove","memberof":"CB_Elements","scope":"static"},{"comment":"/**\r\n\t * Returns an array with the parents of a given element, with the topmost parent in the highest index:\r\n\t * @function\r\n\t * @param {Node} element - The element whose parents we want to get.\r\n\t * @returns {array}\r\n\t */","meta":{"range":[30879,31157],"filename":"CB_Elements.js","lineno":688,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100074610","name":"CB_Elements.getParents","type":"FunctionExpression","paramnames":["element"]},"vars":{"elementParents":"CB_Elements.getParents~elementParents","x":"CB_Elements.getParents~x","currentParent":"CB_Elements.getParents~currentParent","elementParents[undefined]":"CB_Elements.getParents~elementParents.undefined]","element":"CB_Elements.getParents~element"}},"description":"<p>Returns an array with the parents of a given element, with the topmost parent in the highest index:</p>","kind":"function","params":[{"type":{"names":["Node"]},"description":"<p>The element whose parents we want to get.</p>","name":"element"}],"returns":[{"type":{"names":["array"]}}],"name":"getParents","longname":"CB_Elements.getParents","memberof":"CB_Elements","scope":"static"},{"comment":"/**\r\n\t * Returns an array with the parents of a given element (by its identifier), with the topmost parent in the highest index:\r\n\t * @function\r\n\t * @param {string} elementId - The identifier of the element whose parents we want to get.\r\n\t * @returns {array}\r\n\t */","meta":{"range":[31434,31551],"filename":"CB_Elements.js","lineno":708,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100074651","name":"CB_Elements.getParentsById","type":"FunctionExpression","paramnames":["elementId"]}},"description":"<p>Returns an array with the parents of a given element (by its identifier), with the topmost parent in the highest index:</p>","kind":"function","params":[{"type":{"names":["string"]},"description":"<p>The identifier of the element whose parents we want to get.</p>","name":"elementId"}],"returns":[{"type":{"names":["array"]}}],"name":"getParentsById","longname":"CB_Elements.getParentsById","memberof":"CB_Elements","scope":"static"},{"comment":"/**\r\n\t * Returns the first parent of a given element:\r\n\t * @function\r\n\t * @param {Node} element - The element whose parent we want to get.\r\n\t * @returns {Node|null} Returns null if the parent cannot be found.\r\n\t */","meta":{"range":[31778,32236],"filename":"CB_Elements.js","lineno":720,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100074669","name":"CB_Elements.getParent","type":"FunctionExpression","paramnames":["element"]},"vars":{"elementParent":"CB_Elements.getParent~elementParent"}},"description":"<p>Returns the first parent of a given element:</p>","kind":"function","params":[{"type":{"names":["Node"]},"description":"<p>The element whose parent we want to get.</p>","name":"element"}],"returns":[{"type":{"names":["Node","null"]},"description":"<p>Returns null if the parent cannot be found.</p>"}],"name":"getParent","longname":"CB_Elements.getParent","memberof":"CB_Elements","scope":"static"},{"comment":"/**\r\n\t * Returns the first parent of a given element (by its identifier):\r\n\t * @function\r\n\t * @param {string} elementId - The identifier of the element whose parent we want to get.\r\n\t * @returns {Node|null} Returns null if the parent cannot be found.\r\n\t */","meta":{"range":[32505,32620],"filename":"CB_Elements.js","lineno":742,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100074735","name":"CB_Elements.getParentById","type":"FunctionExpression","paramnames":["elementId"]}},"description":"<p>Returns the first parent of a given element (by its identifier):</p>","kind":"function","params":[{"type":{"names":["string"]},"description":"<p>The identifier of the element whose parent we want to get.</p>","name":"elementId"}],"returns":[{"type":{"names":["Node","null"]},"description":"<p>Returns null if the parent cannot be found.</p>"}],"name":"getParentById","longname":"CB_Elements.getParentById","memberof":"CB_Elements","scope":"static"},{"comment":"/**\r\n\t * Changes a desired element property with the given value.\r\n\t * @function\r\n\t * @param {Node} element - The element whose property we want to modify.\r\n\t * @param {string} property - The name of the property that we want to modify.\r\n\t * @param {*} propertyValue - The value desired for the property.\r\n\t * @param {boolean} [checkValues=false] - If set to true, it will only modify the property if the current value is different from the given one.\r\n\t * @param {function} [onSetProperty] - Callback function that will be called if the property of the element has been set, after doing it (this will happens always if \"checkValues\" is false). The first and unique parameter passed will be the affected element itself.\r\n\t * @returns {Node|null} Returns the given element again or null.\r\n\t */","meta":{"range":[33429,33812],"filename":"CB_Elements.js","lineno":758,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100074753","name":"CB_Elements.setProperty","type":"FunctionExpression","paramnames":["element","property","propertyValue","checkValues","onSetProperty"]},"vars":{"element[undefined]":null}},"description":"<p>Changes a desired element property with the given value.</p>","kind":"function","params":[{"type":{"names":["Node"]},"description":"<p>The element whose property we want to modify.</p>","name":"element"},{"type":{"names":["string"]},"description":"<p>The name of the property that we want to modify.</p>","name":"property"},{"type":{"names":["*"]},"description":"<p>The value desired for the property.</p>","name":"propertyValue"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If set to true, it will only modify the property if the current value is different from the given one.</p>","name":"checkValues"},{"type":{"names":["function"]},"optional":true,"description":"<p>Callback function that will be called if the property of the element has been set, after doing it (this will happens always if &quot;checkValues&quot; is false). The first and unique parameter passed will be the affected element itself.</p>","name":"onSetProperty"}],"returns":[{"type":{"names":["Node","null"]},"description":"<p>Returns the given element again or null.</p>"}],"name":"setProperty","longname":"CB_Elements.setProperty","memberof":"CB_Elements","scope":"static"},{"comment":"/**\r\n\t * Changes a desired element property with the given value (by its identifier).\r\n\t * @function\r\n\t * @param {string} elementId - The identifier of the element whose property we want to modify.\r\n\t * @param {string} property - The name of the property that we want to modify.\r\n\t * @param {*} propertyValue - The value desired for the property.\r\n\t * @param {boolean} [checkValues=false] - If set to true, it will only modify the property if the current value is different from the given one.\r\n\t * @param {function} [onSetProperty] - Callback function that will be called if the property of the element has been set, after doing it (this will happens always if \"checkValues\" is false). The first and unique parameter passed will be the affected element itself.\r\n\t * @returns {Node|null} Returns the affected element (if any) or null otherwise.\r\n\t */","meta":{"range":[34679,34904],"filename":"CB_Elements.js","lineno":780,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100074805","name":"CB_Elements.setPropertyById","type":"FunctionExpression","paramnames":["elementId","property","propertyValue","checkValues","onSetProperty"]}},"description":"<p>Changes a desired element property with the given value (by its identifier).</p>","kind":"function","params":[{"type":{"names":["string"]},"description":"<p>The identifier of the element whose property we want to modify.</p>","name":"elementId"},{"type":{"names":["string"]},"description":"<p>The name of the property that we want to modify.</p>","name":"property"},{"type":{"names":["*"]},"description":"<p>The value desired for the property.</p>","name":"propertyValue"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If set to true, it will only modify the property if the current value is different from the given one.</p>","name":"checkValues"},{"type":{"names":["function"]},"optional":true,"description":"<p>Callback function that will be called if the property of the element has been set, after doing it (this will happens always if &quot;checkValues&quot; is false). The first and unique parameter passed will be the affected element itself.</p>","name":"onSetProperty"}],"returns":[{"type":{"names":["Node","null"]},"description":"<p>Returns the affected element (if any) or null otherwise.</p>"}],"name":"setPropertyById","longname":"CB_Elements.setPropertyById","memberof":"CB_Elements","scope":"static"},{"comment":"/**\r\n\t * Inserts the desired content inside a given element (using [innerHTML]{@link https://developer.mozilla.org/en-US/docs/Web/API/Element/innerHTML}).\r\n\t * @function\r\n\t * @param {Node} container - The element whose content we want to modify.\r\n\t * @param {string} content - The content that we want to add.\r\n\t * @param {string} [displayValue] - If provided, it will call {@link CB_Elements.show} internally after inserting the content to set the given [display]{@link https://developer.mozilla.org/en-US/docs/Web/CSS/display} property to the element.\r\n\t * @param {boolean} [checkValues=false] - If it is set to true, it will only change the content if the current one is different from the given one and it will pass the same parameter to {@link CB_Elements.show} if it is called internally (when \"displayValue\" is given).\r\n\t * @param {boolean} [computed=false] - If \"displayValue\" is given, it will pass this parameter to {@link CB_Elements.show} if it is called internally (when \"displayValue\" is given).\r\n\t * @param {function} [onContentWritten] - Callback function that will be called if the content has been written, after doing it (this will happens always if \"checkValues\" is false). The unique parameter passed will be the container itself.\r\n\t * @param {function} [onShow] - If \"displayValue\" is given, it will pass this parameter to {@link CB_Elements.show} when it is called internally.\r\n\t * @param {boolean} [append=false] - If set to true, it will append the given content to the existing one instead of overwritten it. By default, it appends it at the end unless that the \"appendAtBeginning\" is set to true.\r\n\t * @param {boolean} [appendAtBeginning=false] - If set to true, it will append the given content to the existing one instead of overwritten it.\r\n\t * @returns {Node} Returns the given container again.\r\n\t */","meta":{"range":[36756,37418],"filename":"CB_Elements.js","lineno":800,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100074831","name":"CB_Elements.insertContent","type":"FunctionExpression","paramnames":["container","content","displayValue","checkValues","computed","onContentWritten","onShow","append","appendAtBeginning"]},"vars":{"container.innerHTML":"container.innerHTML"}},"description":"<p>Inserts the desired content inside a given element (using [innerHTML]{@link https://developer.mozilla.org/en-US/docs/Web/API/Element/innerHTML}).</p>","kind":"function","params":[{"type":{"names":["Node"]},"description":"<p>The element whose content we want to modify.</p>","name":"container"},{"type":{"names":["string"]},"description":"<p>The content that we want to add.</p>","name":"content"},{"type":{"names":["string"]},"optional":true,"description":"<p>If provided, it will call {@link CB_Elements.show} internally after inserting the content to set the given [display]{@link https://developer.mozilla.org/en-US/docs/Web/CSS/display} property to the element.</p>","name":"displayValue"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If it is set to true, it will only change the content if the current one is different from the given one and it will pass the same parameter to {@link CB_Elements.show} if it is called internally (when &quot;displayValue&quot; is given).</p>","name":"checkValues"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If &quot;displayValue&quot; is given, it will pass this parameter to {@link CB_Elements.show} if it is called internally (when &quot;displayValue&quot; is given).</p>","name":"computed"},{"type":{"names":["function"]},"optional":true,"description":"<p>Callback function that will be called if the content has been written, after doing it (this will happens always if &quot;checkValues&quot; is false). The unique parameter passed will be the container itself.</p>","name":"onContentWritten"},{"type":{"names":["function"]},"optional":true,"description":"<p>If &quot;displayValue&quot; is given, it will pass this parameter to {@link CB_Elements.show} when it is called internally.</p>","name":"onShow"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If set to true, it will append the given content to the existing one instead of overwritten it. By default, it appends it at the end unless that the &quot;appendAtBeginning&quot; is set to true.</p>","name":"append"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If set to true, it will append the given content to the existing one instead of overwritten it.</p>","name":"appendAtBeginning"}],"returns":[{"type":{"names":["Node"]},"description":"<p>Returns the given container again.</p>"}],"name":"insertContent","longname":"CB_Elements.insertContent","memberof":"CB_Elements","scope":"static"},{"comment":"/**\r\n\t * Appends the desired content inside a given element, keeping the existing one (using [innerHTML]{@link https://developer.mozilla.org/en-US/docs/Web/API/Element/innerHTML}). Calls the {@link CB_Elements.insertContent} internally.\r\n\t * @function\r\n\t * @param {Node} container - The element whose content we want to modify.\r\n\t * @param {string} content - The content that we want to add.\r\n\t * @param {string} [displayValue] - If provided, it will call {@link CB_Elements.show} internally after inserting the content to set the given [display]{@link https://developer.mozilla.org/en-US/docs/Web/CSS/display} property to the element.\r\n\t * @param {boolean} [checkValues=false] - If it is set to true, it will only change the content if the current one is different from the given one and it will pass the same parameter to {@link CB_Elements.show} if it is called internally (when \"displayValue\" is given).\r\n\t * @param {boolean} [computed=false] - If \"displayValue\" is given, it will pass this parameter to {@link CB_Elements.show} if it is called internally (when \"displayValue\" is given).\r\n\t * @param {function} [onContentWritten] - Callback function that will be called if the content has been written, after doing it (this will happens always if \"checkValues\" is false). The unique parameter passed will be the container itself.\r\n\t * @param {function} [onShow] - If \"displayValue\" is given, it will pass this parameter to {@link CB_Elements.show} when it is called internally.\r\n\t * @param {boolean} [appendAtBeginning=false] - If set to true, it will append the given content to the existing one instead of overwritten it.\r\n\t * @returns {Node} Returns the given container again.\r\n\t */","meta":{"range":[39127,39418],"filename":"CB_Elements.js","lineno":832,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100074916","name":"CB_Elements.appendContent","type":"FunctionExpression","paramnames":["container","content","displayValue","checkValues","computed","onContentWritten","onShow","appendAtBeginning"]}},"description":"<p>Appends the desired content inside a given element, keeping the existing one (using [innerHTML]{@link https://developer.mozilla.org/en-US/docs/Web/API/Element/innerHTML}). Calls the {@link CB_Elements.insertContent} internally.</p>","kind":"function","params":[{"type":{"names":["Node"]},"description":"<p>The element whose content we want to modify.</p>","name":"container"},{"type":{"names":["string"]},"description":"<p>The content that we want to add.</p>","name":"content"},{"type":{"names":["string"]},"optional":true,"description":"<p>If provided, it will call {@link CB_Elements.show} internally after inserting the content to set the given [display]{@link https://developer.mozilla.org/en-US/docs/Web/CSS/display} property to the element.</p>","name":"displayValue"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If it is set to true, it will only change the content if the current one is different from the given one and it will pass the same parameter to {@link CB_Elements.show} if it is called internally (when &quot;displayValue&quot; is given).</p>","name":"checkValues"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If &quot;displayValue&quot; is given, it will pass this parameter to {@link CB_Elements.show} if it is called internally (when &quot;displayValue&quot; is given).</p>","name":"computed"},{"type":{"names":["function"]},"optional":true,"description":"<p>Callback function that will be called if the content has been written, after doing it (this will happens always if &quot;checkValues&quot; is false). The unique parameter passed will be the container itself.</p>","name":"onContentWritten"},{"type":{"names":["function"]},"optional":true,"description":"<p>If &quot;displayValue&quot; is given, it will pass this parameter to {@link CB_Elements.show} when it is called internally.</p>","name":"onShow"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If set to true, it will append the given content to the existing one instead of overwritten it.</p>","name":"appendAtBeginning"}],"returns":[{"type":{"names":["Node"]},"description":"<p>Returns the given container again.</p>"}],"name":"appendContent","longname":"CB_Elements.appendContent","memberof":"CB_Elements","scope":"static"},{"comment":"/**\r\n\t * Appends the desired content inside a given element at the beginning, keeping the existing one (using [innerHTML]{@link https://developer.mozilla.org/en-US/docs/Web/API/Element/innerHTML}). Calls the {@link CB_Elements.insertContent} internally.\r\n\t * @function\r\n\t * @param {Node} container - The element whose content we want to modify.\r\n\t * @param {string} content - The content that we want to add.\r\n\t * @param {string} [displayValue] - If provided, it will call {@link CB_Elements.show} internally after inserting the content to set the given [display]{@link https://developer.mozilla.org/en-US/docs/Web/CSS/display} property to the element.\r\n\t * @param {boolean} [checkValues=false] - If it is set to true, it will only change the content if the current one is different from the given one and it will pass the same parameter to {@link CB_Elements.show} if it is called internally (when \"displayValue\" is given).\r\n\t * @param {boolean} [computed=false] - If \"displayValue\" is given, it will pass this parameter to {@link CB_Elements.show} if it is called internally (when \"displayValue\" is given).\r\n\t * @param {function} [onContentWritten] - Callback function that will be called if the content has been written, after doing it (this will happens always if \"checkValues\" is false). The unique parameter passed will be the container itself.\r\n\t * @param {function} [onShow] - If \"displayValue\" is given, it will pass this parameter to {@link CB_Elements.show} when it is called internally.\r\n\t * @returns {Node} Returns the given container again.\r\n\t */","meta":{"range":[40997,41265],"filename":"CB_Elements.js","lineno":850,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100074945","name":"CB_Elements.appendContentBeginning","type":"FunctionExpression","paramnames":["container","content","displayValue","checkValues","computed","onContentWritten","onShow"]}},"description":"<p>Appends the desired content inside a given element at the beginning, keeping the existing one (using [innerHTML]{@link https://developer.mozilla.org/en-US/docs/Web/API/Element/innerHTML}). Calls the {@link CB_Elements.insertContent} internally.</p>","kind":"function","params":[{"type":{"names":["Node"]},"description":"<p>The element whose content we want to modify.</p>","name":"container"},{"type":{"names":["string"]},"description":"<p>The content that we want to add.</p>","name":"content"},{"type":{"names":["string"]},"optional":true,"description":"<p>If provided, it will call {@link CB_Elements.show} internally after inserting the content to set the given [display]{@link https://developer.mozilla.org/en-US/docs/Web/CSS/display} property to the element.</p>","name":"displayValue"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If it is set to true, it will only change the content if the current one is different from the given one and it will pass the same parameter to {@link CB_Elements.show} if it is called internally (when &quot;displayValue&quot; is given).</p>","name":"checkValues"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If &quot;displayValue&quot; is given, it will pass this parameter to {@link CB_Elements.show} if it is called internally (when &quot;displayValue&quot; is given).</p>","name":"computed"},{"type":{"names":["function"]},"optional":true,"description":"<p>Callback function that will be called if the content has been written, after doing it (this will happens always if &quot;checkValues&quot; is false). The unique parameter passed will be the container itself.</p>","name":"onContentWritten"},{"type":{"names":["function"]},"optional":true,"description":"<p>If &quot;displayValue&quot; is given, it will pass this parameter to {@link CB_Elements.show} when it is called internally.</p>","name":"onShow"}],"returns":[{"type":{"names":["Node"]},"description":"<p>Returns the given container again.</p>"}],"name":"appendContentBeginning","longname":"CB_Elements.appendContentBeginning","memberof":"CB_Elements","scope":"static"},{"comment":"/**\r\n\t * Inserts the desired content inside a given element (using [innerHTML]{@link https://developer.mozilla.org/en-US/docs/Web/API/Element/innerHTML}), by its identifier.\r\n\t * @function\r\n\t * @param {string} containerId - The identifier of the element whose content we want to modify.\r\n\t * @param {string} content - The content that we want to add.\r\n\t * @param {string} [displayValue] - If provided, it will call {@link CB_Elements.show} internally after inserting the content to set the given [display]{@link https://developer.mozilla.org/en-US/docs/Web/CSS/display} property to the element.\r\n\t * @param {boolean} [checkValues=false] - If it is set to true, it will only change the content if the current one is different from the given one and it will pass the same parameter to {@link CB_Elements.show} if it is called internally (when \"displayValue\" is given).\r\n\t * @param {boolean} [computed=false] - If \"displayValue\" is given, it will pass this parameter to {@link CB_Elements.show} if it is called internally (when \"displayValue\" is given).\r\n\t * @param {function} [onContentWritten] - Callback function that will be called if the content has been written, after doing it (this will happens always if \"checkValues\" is false). The unique parameter passed will be the affected container itself.\r\n\t * @param {function} [onShow] - If \"displayValue\" is given, it will pass this parameter to {@link CB_Elements.show} when it is called internally.\r\n\t * @param {boolean} [append=false] - If set to true, it will append the given content to the existing one instead of overwritten it. By default, it appends it at the end unless that the \"appendAtBeginning\" is set to true.\r\n\t * @param {boolean} [appendAtBeginning=false] - If set to true, it will append the given content to the existing one instead of overwritten it.\r\n\t * @returns {Node|null} Returns the affected container (if any) or null otherwise.\r\n\t */","meta":{"range":[43196,43521],"filename":"CB_Elements.js","lineno":870,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100074973","name":"CB_Elements.insertContentById","type":"FunctionExpression","paramnames":["containerId","content","displayValue","checkValues","computed","onContentWritten","onShow","append","appendAtBeginning"]}},"description":"<p>Inserts the desired content inside a given element (using [innerHTML]{@link https://developer.mozilla.org/en-US/docs/Web/API/Element/innerHTML}), by its identifier.</p>","kind":"function","params":[{"type":{"names":["string"]},"description":"<p>The identifier of the element whose content we want to modify.</p>","name":"containerId"},{"type":{"names":["string"]},"description":"<p>The content that we want to add.</p>","name":"content"},{"type":{"names":["string"]},"optional":true,"description":"<p>If provided, it will call {@link CB_Elements.show} internally after inserting the content to set the given [display]{@link https://developer.mozilla.org/en-US/docs/Web/CSS/display} property to the element.</p>","name":"displayValue"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If it is set to true, it will only change the content if the current one is different from the given one and it will pass the same parameter to {@link CB_Elements.show} if it is called internally (when &quot;displayValue&quot; is given).</p>","name":"checkValues"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If &quot;displayValue&quot; is given, it will pass this parameter to {@link CB_Elements.show} if it is called internally (when &quot;displayValue&quot; is given).</p>","name":"computed"},{"type":{"names":["function"]},"optional":true,"description":"<p>Callback function that will be called if the content has been written, after doing it (this will happens always if &quot;checkValues&quot; is false). The unique parameter passed will be the affected container itself.</p>","name":"onContentWritten"},{"type":{"names":["function"]},"optional":true,"description":"<p>If &quot;displayValue&quot; is given, it will pass this parameter to {@link CB_Elements.show} when it is called internally.</p>","name":"onShow"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If set to true, it will append the given content to the existing one instead of overwritten it. By default, it appends it at the end unless that the &quot;appendAtBeginning&quot; is set to true.</p>","name":"append"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If set to true, it will append the given content to the existing one instead of overwritten it.</p>","name":"appendAtBeginning"}],"returns":[{"type":{"names":["Node","null"]},"description":"<p>Returns the affected container (if any) or null otherwise.</p>"}],"name":"insertContentById","longname":"CB_Elements.insertContentById","memberof":"CB_Elements","scope":"static"},{"comment":"/**\r\n\t * Appends the desired content inside a given element, keeping the existing one (using [innerHTML]{@link https://developer.mozilla.org/en-US/docs/Web/API/Element/innerHTML}), by its identifier. Calls the {@link CB_Elements.insertContent} internally.\r\n\t * @function\r\n\t * @param {string} containerId - The identifier of the element whose content we want to modify.\r\n\t * @param {string} content - The content that we want to add.\r\n\t * @param {string} [displayValue] - If provided, it will call {@link CB_Elements.show} internally after inserting the content to set the given [display]{@link https://developer.mozilla.org/en-US/docs/Web/CSS/display} property to the element.\r\n\t * @param {boolean} [checkValues=false] - If it is set to true, it will only change the content if the current one is different from the given one and it will pass the same parameter to {@link CB_Elements.show} if it is called internally (when \"displayValue\" is given).\r\n\t * @param {boolean} [computed=false] - If \"displayValue\" is given, it will pass this parameter to {@link CB_Elements.show} if it is called internally (when \"displayValue\" is given).\r\n\t * @param {function} [onContentWritten] - Callback function that will be called if the content has been written, after doing it (this will happens always if \"checkValues\" is false). The unique parameter passed will be the affected container itself.\r\n\t * @param {function} [onShow] - If \"displayValue\" is given, it will pass this parameter to {@link CB_Elements.show} when it is called internally.\r\n\t * @param {boolean} [append=false] - If set to true, it will append the given content to the existing one instead of overwritten it. By default, it appends it at the end unless that the \"appendAtBeginning\" is set to true.\r\n\t * @param {boolean} [appendAtBeginning=false] - If set to true, it will append the given content to the existing one instead of overwritten it.\r\n\t * @returns {Node|null} Returns the affected container (if any) or null otherwise.\r\n\t */","meta":{"range":[45534,45849],"filename":"CB_Elements.js","lineno":890,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100075007","name":"CB_Elements.appendContentById","type":"FunctionExpression","paramnames":["containerId","content","displayValue","checkValues","computed","onContentWritten","onShow","appendAtBeginning"]}},"description":"<p>Appends the desired content inside a given element, keeping the existing one (using [innerHTML]{@link https://developer.mozilla.org/en-US/docs/Web/API/Element/innerHTML}), by its identifier. Calls the {@link CB_Elements.insertContent} internally.</p>","kind":"function","params":[{"type":{"names":["string"]},"description":"<p>The identifier of the element whose content we want to modify.</p>","name":"containerId"},{"type":{"names":["string"]},"description":"<p>The content that we want to add.</p>","name":"content"},{"type":{"names":["string"]},"optional":true,"description":"<p>If provided, it will call {@link CB_Elements.show} internally after inserting the content to set the given [display]{@link https://developer.mozilla.org/en-US/docs/Web/CSS/display} property to the element.</p>","name":"displayValue"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If it is set to true, it will only change the content if the current one is different from the given one and it will pass the same parameter to {@link CB_Elements.show} if it is called internally (when &quot;displayValue&quot; is given).</p>","name":"checkValues"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If &quot;displayValue&quot; is given, it will pass this parameter to {@link CB_Elements.show} if it is called internally (when &quot;displayValue&quot; is given).</p>","name":"computed"},{"type":{"names":["function"]},"optional":true,"description":"<p>Callback function that will be called if the content has been written, after doing it (this will happens always if &quot;checkValues&quot; is false). The unique parameter passed will be the affected container itself.</p>","name":"onContentWritten"},{"type":{"names":["function"]},"optional":true,"description":"<p>If &quot;displayValue&quot; is given, it will pass this parameter to {@link CB_Elements.show} when it is called internally.</p>","name":"onShow"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If set to true, it will append the given content to the existing one instead of overwritten it. By default, it appends it at the end unless that the &quot;appendAtBeginning&quot; is set to true.</p>","name":"append"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If set to true, it will append the given content to the existing one instead of overwritten it.</p>","name":"appendAtBeginning"}],"returns":[{"type":{"names":["Node","null"]},"description":"<p>Returns the affected container (if any) or null otherwise.</p>"}],"name":"appendContentById","longname":"CB_Elements.appendContentById","memberof":"CB_Elements","scope":"static"},{"comment":"/**\r\n\t * Appends the desired content inside a given element at the beginning, keeping the existing one (using [innerHTML]{@link https://developer.mozilla.org/en-US/docs/Web/API/Element/innerHTML}), by its identifier. Calls the {@link CB_Elements.insertContent} internally.\r\n\t * @function\r\n\t * @param {string} containerId - The identifier of the element whose content we want to modify.\r\n\t * @param {string} content - The content that we want to add.\r\n\t * @param {string} [displayValue] - If provided, it will call {@link CB_Elements.show} internally after inserting the content to set the given [display]{@link https://developer.mozilla.org/en-US/docs/Web/CSS/display} property to the element.\r\n\t * @param {boolean} [checkValues=false] - If it is set to true, it will only change the content if the current one is different from the given one and it will pass the same parameter to {@link CB_Elements.show} if it is called internally (when \"displayValue\" is given).\r\n\t * @param {boolean} [computed=false] - If \"displayValue\" is given, it will pass this parameter to {@link CB_Elements.show} if it is called internally (when \"displayValue\" is given).\r\n\t * @param {function} [onContentWritten] - Callback function that will be called if the content has been written, after doing it (this will happens always if \"checkValues\" is false). The unique parameter passed will be the affected container itself.\r\n\t * @param {function} [onShow] - If \"displayValue\" is given, it will pass this parameter to {@link CB_Elements.show} when it is called internally.\r\n\t * @param {boolean} [append=false] - If set to true, it will append the given content to the existing one instead of overwritten it. By default, it appends it at the end unless that the \"appendAtBeginning\" is set to true.\r\n\t * @returns {Node|null} Returns the affected container (if any) or null otherwise.\r\n\t */","meta":{"range":[47732,48024],"filename":"CB_Elements.js","lineno":909,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100075040","name":"CB_Elements.appendContentByIdBeginning","type":"FunctionExpression","paramnames":["containerId","content","displayValue","checkValues","computed","onContentWritten","onShow"]}},"description":"<p>Appends the desired content inside a given element at the beginning, keeping the existing one (using [innerHTML]{@link https://developer.mozilla.org/en-US/docs/Web/API/Element/innerHTML}), by its identifier. Calls the {@link CB_Elements.insertContent} internally.</p>","kind":"function","params":[{"type":{"names":["string"]},"description":"<p>The identifier of the element whose content we want to modify.</p>","name":"containerId"},{"type":{"names":["string"]},"description":"<p>The content that we want to add.</p>","name":"content"},{"type":{"names":["string"]},"optional":true,"description":"<p>If provided, it will call {@link CB_Elements.show} internally after inserting the content to set the given [display]{@link https://developer.mozilla.org/en-US/docs/Web/CSS/display} property to the element.</p>","name":"displayValue"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If it is set to true, it will only change the content if the current one is different from the given one and it will pass the same parameter to {@link CB_Elements.show} if it is called internally (when &quot;displayValue&quot; is given).</p>","name":"checkValues"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If &quot;displayValue&quot; is given, it will pass this parameter to {@link CB_Elements.show} if it is called internally (when &quot;displayValue&quot; is given).</p>","name":"computed"},{"type":{"names":["function"]},"optional":true,"description":"<p>Callback function that will be called if the content has been written, after doing it (this will happens always if &quot;checkValues&quot; is false). The unique parameter passed will be the affected container itself.</p>","name":"onContentWritten"},{"type":{"names":["function"]},"optional":true,"description":"<p>If &quot;displayValue&quot; is given, it will pass this parameter to {@link CB_Elements.show} when it is called internally.</p>","name":"onShow"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If set to true, it will append the given content to the existing one instead of overwritten it. By default, it appends it at the end unless that the &quot;appendAtBeginning&quot; is set to true.</p>","name":"append"}],"returns":[{"type":{"names":["Node","null"]},"description":"<p>Returns the affected container (if any) or null otherwise.</p>"}],"name":"appendContentByIdBeginning","longname":"CB_Elements.appendContentByIdBeginning","memberof":"CB_Elements","scope":"static"},{"comment":"/**\r\n\t * Returns the style of an element, computed or static:\r\n\t * @function\r\n\t * @param {Node} element - The element whose style property we want to get.\r\n\t * @param {boolean} [computed=false] - If it is set to true, it will try to use the native function [window.getComputedStyle]{@link https://developer.mozilla.org/en-US/docs/Web/API/Window/getComputedStyle} (if available).\r\n\t * @returns {Object|null} Returns an associative array (JavaScript object) with all the styles retrieved or null if nothing can be retrieved.\r\n\t */","meta":{"range":[48566,49032],"filename":"CB_Elements.js","lineno":922,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100075072","name":"CB_Elements.getStyle","type":"FunctionExpression","paramnames":["element","computed"]}},"description":"<p>Returns the style of an element, computed or static:</p>","kind":"function","params":[{"type":{"names":["Node"]},"description":"<p>The element whose style property we want to get.</p>","name":"element"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If it is set to true, it will try to use the native function [window.getComputedStyle]{@link https://developer.mozilla.org/en-US/docs/Web/API/Window/getComputedStyle} (if available).</p>","name":"computed"}],"returns":[{"type":{"names":["Object","null"]},"description":"<p>Returns an associative array (JavaScript object) with all the styles retrieved or null if nothing can be retrieved.</p>"}],"name":"getStyle","longname":"CB_Elements.getStyle","memberof":"CB_Elements","scope":"static"},{"comment":"/**\r\n\t * Returns the style of an element, computed or static (by its identifier):\r\n\t * @function\r\n\t * @param {string} elementId - The identifier of the element whose style property we want to get.\r\n\t * @param {boolean} [computed=false] - If it is set to true, it will try to use the native function [window.getComputedStyle]{@link https://developer.mozilla.org/en-US/docs/Web/API/Window/getComputedStyle} (if available).\r\n\t * @returns {Object|null} Returns an associative array (JavaScript object) with all the styles retrieved or null if nothing can be retrieved.\r\n\t */","meta":{"range":[49616,49749],"filename":"CB_Elements.js","lineno":954,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100075132","name":"CB_Elements.getStyleById","type":"FunctionExpression","paramnames":["elementId","computed"]}},"description":"<p>Returns the style of an element, computed or static (by its identifier):</p>","kind":"function","params":[{"type":{"names":["string"]},"description":"<p>The identifier of the element whose style property we want to get.</p>","name":"elementId"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If it is set to true, it will try to use the native function [window.getComputedStyle]{@link https://developer.mozilla.org/en-US/docs/Web/API/Window/getComputedStyle} (if available).</p>","name":"computed"}],"returns":[{"type":{"names":["Object","null"]},"description":"<p>Returns an associative array (JavaScript object) with all the styles retrieved or null if nothing can be retrieved.</p>"}],"name":"getStyleById","longname":"CB_Elements.getStyleById","memberof":"CB_Elements","scope":"static"},{"comment":"/**\r\n\t * Returns the desired attribute value from the style of an element, computed or static:\r\n\t * @function\r\n\t * @param {Node} element - The element whose attribute value from its style we want to get.\r\n\t * @param {string} attribute - The name of the attribute whose value we want to get from the style.\r\n\t * @param {boolean} [computed=false] - If it is set to true, it will try to use the native function [window.getComputedStyle]{@link https://developer.mozilla.org/en-US/docs/Web/API/Window/getComputedStyle} (if available).\r\n\t * @returns {*} Returns null if nothing can be retrieved.\r\n\t * @todo Think about supporting a boolean parameter to try to find the attribute having into account vendor prefixes (webkit, moz, ms, o, khtml).\r\n\t */","meta":{"range":[50508,50963],"filename":"CB_Elements.js","lineno":969,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100075152","name":"CB_Elements.getStyleProperty","type":"FunctionExpression","paramnames":["element","attribute","computed"]},"vars":{"elementStyle":"CB_Elements.getStyleProperty~elementStyle"}},"description":"<p>Returns the desired attribute value from the style of an element, computed or static:</p>","kind":"function","params":[{"type":{"names":["Node"]},"description":"<p>The element whose attribute value from its style we want to get.</p>","name":"element"},{"type":{"names":["string"]},"description":"<p>The name of the attribute whose value we want to get from the style.</p>","name":"attribute"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If it is set to true, it will try to use the native function [window.getComputedStyle]{@link https://developer.mozilla.org/en-US/docs/Web/API/Window/getComputedStyle} (if available).</p>","name":"computed"}],"returns":[{"type":{"names":["*"]},"description":"<p>Returns null if nothing can be retrieved.</p>"}],"todo":["Think about supporting a boolean parameter to try to find the attribute having into account vendor prefixes (webkit, moz, ms, o, khtml)."],"name":"getStyleProperty","longname":"CB_Elements.getStyleProperty","memberof":"CB_Elements","scope":"static"},{"comment":"/**\r\n\t * Returns the desired attribute value from the style of an element, computed or static (by its identifier):\r\n\t * @function\r\n\t * @param {string} elementId - The identifier of the element whose attribute value from its style we want to get.\r\n\t * @param {string} attribute - The name of the attribute whose value we want to get from the style.\r\n\t * @param {boolean} [computed=false] - If it is set to true, it will try to use the native function [window.getComputedStyle]{@link https://developer.mozilla.org/en-US/docs/Web/API/Window/getComputedStyle} (if available).\r\n\t * @returns {*} Returns null if nothing can be retrieved.\r\n\t * @todo Think about supporting a boolean parameter to try to find the attribute having into account vendor prefixes (webkit, moz, ms, o, khtml).\r\n\t */","meta":{"range":[51764,51935],"filename":"CB_Elements.js","lineno":990,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100075189","name":"CB_Elements.getStylePropertyById","type":"FunctionExpression","paramnames":["elementId","attribute","computed"]}},"description":"<p>Returns the desired attribute value from the style of an element, computed or static (by its identifier):</p>","kind":"function","params":[{"type":{"names":["string"]},"description":"<p>The identifier of the element whose attribute value from its style we want to get.</p>","name":"elementId"},{"type":{"names":["string"]},"description":"<p>The name of the attribute whose value we want to get from the style.</p>","name":"attribute"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If it is set to true, it will try to use the native function [window.getComputedStyle]{@link https://developer.mozilla.org/en-US/docs/Web/API/Window/getComputedStyle} (if available).</p>","name":"computed"}],"returns":[{"type":{"names":["*"]},"description":"<p>Returns null if nothing can be retrieved.</p>"}],"todo":["Think about supporting a boolean parameter to try to find the attribute having into account vendor prefixes (webkit, moz, ms, o, khtml)."],"name":"getStylePropertyById","longname":"CB_Elements.getStylePropertyById","memberof":"CB_Elements","scope":"static"},{"comment":"/**\r\n\t * Returns the integer value or values (base decimal) of a desired attribute from the style of an element, computed or static:\r\n\t * @function\r\n\t * @param {Node} element - The element whose attribute value from its style we want to get.\r\n\t * @param {string} attribute - The name of the attribute whose value we want to get from the style.\r\n\t * @param {boolean} [computed=false] - If it is set to true, it will try to use the native function [window.getComputedStyle]{@link https://developer.mozilla.org/en-US/docs/Web/API/Window/getComputedStyle} (if available).\r\n\t * @returns {array} Returns a numeric array with the values retrieved. If nothing could be retrieved, the first and unique index of the array will contain the value of zero (0).\r\n\t * @todo Think about supporting a boolean parameter to try to find the attribute having into account vendor prefixes (webkit, moz, ms, o, khtml).\r\n\t */","meta":{"range":[52852,53019],"filename":"CB_Elements.js","lineno":1005,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100075211","name":"CB_Elements.getStylePropertyInteger","type":"FunctionExpression","paramnames":["element","attribute","computed"]}},"description":"<p>Returns the integer value or values (base decimal) of a desired attribute from the style of an element, computed or static:</p>","kind":"function","params":[{"type":{"names":["Node"]},"description":"<p>The element whose attribute value from its style we want to get.</p>","name":"element"},{"type":{"names":["string"]},"description":"<p>The name of the attribute whose value we want to get from the style.</p>","name":"attribute"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If it is set to true, it will try to use the native function [window.getComputedStyle]{@link https://developer.mozilla.org/en-US/docs/Web/API/Window/getComputedStyle} (if available).</p>","name":"computed"}],"returns":[{"type":{"names":["array"]},"description":"<p>Returns a numeric array with the values retrieved. If nothing could be retrieved, the first and unique index of the array will contain the value of zero (0).</p>"}],"todo":["Think about supporting a boolean parameter to try to find the attribute having into account vendor prefixes (webkit, moz, ms, o, khtml)."],"name":"getStylePropertyInteger","longname":"CB_Elements.getStylePropertyInteger","memberof":"CB_Elements","scope":"static"},{"comment":"/**\r\n\t * Returns the integer value or values (base decimal) of a desired attribute from the style of an element, computed or static (by its identifier):\r\n\t * @function\r\n\t * @param {string} elementId - The identifier of the element whose attribute value from its style we want to get.\r\n\t * @param {string} attribute - The name of the attribute whose value we want to get from the style.\r\n\t * @param {boolean} [computed=false] - If it is set to true, it will try to use the native function [window.getComputedStyle]{@link https://developer.mozilla.org/en-US/docs/Web/API/Window/getComputedStyle} (if available).\r\n\t * @returns {array} Returns a numeric array with the values retrieved. If nothing could be retrieved, the first and unique index of the array will contain the value of zero (0).\r\n\t * @todo Think about supporting a boolean parameter to try to find the attribute having into account vendor prefixes (webkit, moz, ms, o, khtml).\r\n\t */","meta":{"range":[53978,54163],"filename":"CB_Elements.js","lineno":1020,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100075230","name":"CB_Elements.getStylePropertyIntegerById","type":"FunctionExpression","paramnames":["elementId","attribute","computed"]}},"description":"<p>Returns the integer value or values (base decimal) of a desired attribute from the style of an element, computed or static (by its identifier):</p>","kind":"function","params":[{"type":{"names":["string"]},"description":"<p>The identifier of the element whose attribute value from its style we want to get.</p>","name":"elementId"},{"type":{"names":["string"]},"description":"<p>The name of the attribute whose value we want to get from the style.</p>","name":"attribute"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If it is set to true, it will try to use the native function [window.getComputedStyle]{@link https://developer.mozilla.org/en-US/docs/Web/API/Window/getComputedStyle} (if available).</p>","name":"computed"}],"returns":[{"type":{"names":["array"]},"description":"<p>Returns a numeric array with the values retrieved. If nothing could be retrieved, the first and unique index of the array will contain the value of zero (0).</p>"}],"todo":["Think about supporting a boolean parameter to try to find the attribute having into account vendor prefixes (webkit, moz, ms, o, khtml)."],"name":"getStylePropertyIntegerById","longname":"CB_Elements.getStylePropertyIntegerById","memberof":"CB_Elements","scope":"static"},{"comment":"/**\r\n\t * Returns the numeric value or values (base decimal) of a desired attribute from the style of an element, computed or static:\r\n\t * @function\r\n\t * @param {Node} element - The element whose attribute value from its style we want to get.\r\n\t * @param {string} attribute - The name of the attribute whose value we want to get from the style.\r\n\t * @param {boolean} [computed=false] - If it is set to true, it will try to use the native function [window.getComputedStyle]{@link https://developer.mozilla.org/en-US/docs/Web/API/Window/getComputedStyle} (if available).\r\n\t * @param {boolean} [parseToInteger=false] - If it is set to true, the value or values will be parsed to integer.\r\n\t * @returns {array} Returns a numeric array with the values retrieved. If nothing could be retrieved, the first and unique index of the array will contain the value of zero (0).\r\n\t * @todo Think about supporting a boolean parameter to try to find the attribute having into account vendor prefixes (webkit, moz, ms, o, khtml).\r\n\t */","meta":{"range":[55197,56547],"filename":"CB_Elements.js","lineno":1036,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100075252","name":"CB_Elements.getStylePropertyNumeric","type":"FunctionExpression","paramnames":["element","attribute","computed","parseToInteger"]},"vars":{"propertyValue":"CB_Elements.getStylePropertyNumeric~propertyValue","propertyValuesNumeric":"CB_Elements.getStylePropertyNumeric~propertyValuesNumeric","propertyValues":"CB_Elements.getStylePropertyNumeric~propertyValues","propertyValuesLength":"CB_Elements.getStylePropertyNumeric~propertyValuesLength","y":"CB_Elements.getStylePropertyNumeric~y","x":"CB_Elements.getStylePropertyNumeric~x","propertyValuesNumeric[undefined]":"CB_Elements.getStylePropertyNumeric~propertyValuesNumeric.undefined]","propertyValuesNumeric[0]":"CB_Elements.getStylePropertyNumeric~propertyValuesNumeric.0]"}},"description":"<p>Returns the numeric value or values (base decimal) of a desired attribute from the style of an element, computed or static:</p>","kind":"function","params":[{"type":{"names":["Node"]},"description":"<p>The element whose attribute value from its style we want to get.</p>","name":"element"},{"type":{"names":["string"]},"description":"<p>The name of the attribute whose value we want to get from the style.</p>","name":"attribute"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If it is set to true, it will try to use the native function [window.getComputedStyle]{@link https://developer.mozilla.org/en-US/docs/Web/API/Window/getComputedStyle} (if available).</p>","name":"computed"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If it is set to true, the value or values will be parsed to integer.</p>","name":"parseToInteger"}],"returns":[{"type":{"names":["array"]},"description":"<p>Returns a numeric array with the values retrieved. If nothing could be retrieved, the first and unique index of the array will contain the value of zero (0).</p>"}],"todo":["Think about supporting a boolean parameter to try to find the attribute having into account vendor prefixes (webkit, moz, ms, o, khtml)."],"name":"getStylePropertyNumeric","longname":"CB_Elements.getStylePropertyNumeric","memberof":"CB_Elements","scope":"static"},{"comment":"/**\r\n\t * Returns the numeric value or values (base decimal) of a desired attribute from the style of an element, computed or static (by its identifier):\r\n\t * @function\r\n\t * @param {string} elementId - The identifier of the element whose attribute value from its style we want to get.\r\n\t * @param {string} attribute - The name of the attribute whose value we want to get from the style.\r\n\t * @param {boolean} [computed=false] - If it is set to true, it will try to use the native function [window.getComputedStyle]{@link https://developer.mozilla.org/en-US/docs/Web/API/Window/getComputedStyle} (if available).\r\n\t * @param {boolean} [parseToInteger=false] - If it is set to true, the value or values will be parsed to integer.\r\n\t * @returns {array} Returns a numeric array with the values retrieved. If nothing could be retrieved, the first and unique index of the array will contain the value of zero (0).\r\n\t * @todo Think about supporting a boolean parameter to try to find the attribute having into account vendor prefixes (webkit, moz, ms, o, khtml).\r\n\t */","meta":{"range":[57623,57868],"filename":"CB_Elements.js","lineno":1081,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100075372","name":"CB_Elements.getStylePropertyNumericById","type":"FunctionExpression","paramnames":["elementId","attribute","computed","parseToInteger","parseToFloat"]}},"description":"<p>Returns the numeric value or values (base decimal) of a desired attribute from the style of an element, computed or static (by its identifier):</p>","kind":"function","params":[{"type":{"names":["string"]},"description":"<p>The identifier of the element whose attribute value from its style we want to get.</p>","name":"elementId"},{"type":{"names":["string"]},"description":"<p>The name of the attribute whose value we want to get from the style.</p>","name":"attribute"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If it is set to true, it will try to use the native function [window.getComputedStyle]{@link https://developer.mozilla.org/en-US/docs/Web/API/Window/getComputedStyle} (if available).</p>","name":"computed"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If it is set to true, the value or values will be parsed to integer.</p>","name":"parseToInteger"}],"returns":[{"type":{"names":["array"]},"description":"<p>Returns a numeric array with the values retrieved. If nothing could be retrieved, the first and unique index of the array will contain the value of zero (0).</p>"}],"todo":["Think about supporting a boolean parameter to try to find the attribute having into account vendor prefixes (webkit, moz, ms, o, khtml)."],"name":"getStylePropertyNumericById","longname":"CB_Elements.getStylePropertyNumericById","memberof":"CB_Elements","scope":"static"},{"comment":"/**\r\n\t * Toggles the [display]{@link https://developer.mozilla.org/en-US/docs/Web/CSS/display} property (from \"none\" to the desired value or vice versa) of a given element, to show or hide it.\r\n\t * If the element is hidden (its [display]{@link https://developer.mozilla.org/en-US/docs/Web/CSS/display} is \"none\"), it will call {@link CB_Elements.show} internally to show it. Otherwise, it will call {@link CB_Elements.hide} internally. Note that these two functions will also change the [visibility]{@link https://developer.mozilla.org/en-US/docs/Web/CSS/visibility} property (setting it to either \"visible\" or \"hidden\", respectively) of the element.\r\n\t * @function\r\n\t * @param {Node} element - The element whose [display]{@link https://developer.mozilla.org/en-US/docs/Web/CSS/display} property we want to toggle.\r\n\t * @param {string} [displayValue='block'] - The [display]{@link https://developer.mozilla.org/en-US/docs/Web/CSS/display} value when we want to show the element (it will be used only if the element is currently hidden, when it calls {@link CB_Elements.show} internally). The [display]{@link https://developer.mozilla.org/en-US/docs/Web/CSS/display} value to hide the element is always \"none\".\r\n\t * @param {boolean} [checkValues=false] - This parameter will be used when it calls either {@link CB_Elements.show} or {@link CB_Elements.hide} internally.\r\n\t * @param {boolean} [computed=false] - This parameter will be used to get the current style and also when it calls either {@link CB_Elements.show} or {@link CB_Elements.hide} internally.\r\n\t * @param {function} [onToggleDisplay] - This parameter will be used when it calls either {@link CB_Elements.show} if \"onShow\" is not provided or {@link CB_Elements.hide} if \"onHide\" is not provided, internally.\r\n\t * @param {function} [onShow] - This parameter will be used when it calls {@link CB_Elements.show} internally. If not provided but \"onToggleDisplay\" is provided, it will use the latter instead.\r\n\t * @param {function} [onHide] - This parameter will be used when it calls {@link CB_Elements.hide} internally. If not provided but \"onToggleDisplay\" is provided, it will use the latter instead.\r\n\t * @returns {Node} Returns the given element again.\r\n\t */","meta":{"range":[60109,60634],"filename":"CB_Elements.js","lineno":1100,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100075398","name":"CB_Elements.showHide","type":"FunctionExpression","paramnames":["element","displayValue","checkValues","computed","onToggleDisplay","onShow","onHide"]},"vars":{"style":"CB_Elements.showHide~style"}},"description":"<p>Toggles the [display]{@link https://developer.mozilla.org/en-US/docs/Web/CSS/display} property (from &quot;none&quot; to the desired value or vice versa) of a given element, to show or hide it.<br>If the element is hidden (its [display]{@link https://developer.mozilla.org/en-US/docs/Web/CSS/display} is &quot;none&quot;), it will call {@link CB_Elements.show} internally to show it. Otherwise, it will call {@link CB_Elements.hide} internally. Note that these two functions will also change the [visibility]{@link https://developer.mozilla.org/en-US/docs/Web/CSS/visibility} property (setting it to either &quot;visible&quot; or &quot;hidden&quot;, respectively) of the element.</p>","kind":"function","params":[{"type":{"names":["Node"]},"description":"<p>The element whose [display]{@link https://developer.mozilla.org/en-US/docs/Web/CSS/display} property we want to toggle.</p>","name":"element"},{"type":{"names":["string"]},"optional":true,"defaultvalue":"'block'","description":"<p>The [display]{@link https://developer.mozilla.org/en-US/docs/Web/CSS/display} value when we want to show the element (it will be used only if the element is currently hidden, when it calls {@link CB_Elements.show} internally). The [display]{@link https://developer.mozilla.org/en-US/docs/Web/CSS/display} value to hide the element is always &quot;none&quot;.</p>","name":"displayValue"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>This parameter will be used when it calls either {@link CB_Elements.show} or {@link CB_Elements.hide} internally.</p>","name":"checkValues"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>This parameter will be used to get the current style and also when it calls either {@link CB_Elements.show} or {@link CB_Elements.hide} internally.</p>","name":"computed"},{"type":{"names":["function"]},"optional":true,"description":"<p>This parameter will be used when it calls either {@link CB_Elements.show} if &quot;onShow&quot; is not provided or {@link CB_Elements.hide} if &quot;onHide&quot; is not provided, internally.</p>","name":"onToggleDisplay"},{"type":{"names":["function"]},"optional":true,"description":"<p>This parameter will be used when it calls {@link CB_Elements.show} internally. If not provided but &quot;onToggleDisplay&quot; is provided, it will use the latter instead.</p>","name":"onShow"},{"type":{"names":["function"]},"optional":true,"description":"<p>This parameter will be used when it calls {@link CB_Elements.hide} internally. If not provided but &quot;onToggleDisplay&quot; is provided, it will use the latter instead.</p>","name":"onHide"}],"returns":[{"type":{"names":["Node"]},"description":"<p>Returns the given element again.</p>"}],"name":"showHide","longname":"CB_Elements.showHide","memberof":"CB_Elements","scope":"static"},{"comment":"/**\r\n\t * Toggles the [display]{@link https://developer.mozilla.org/en-US/docs/Web/CSS/display} property (from \"none\" to the desired value or vice versa) of a given element, to show or hide it (by its identifier).\r\n\t * If the element is hidden (its [display]{@link https://developer.mozilla.org/en-US/docs/Web/CSS/display} is \"none\"), it will call {@link CB_Elements.show} internally to show it. Otherwise, it will call {@link CB_Elements.hide} internally. Note that these two functions will also change the [visibility]{@link https://developer.mozilla.org/en-US/docs/Web/CSS/visibility} property (setting it to either \"visible\" or \"hidden\", respectively) of the element.\r\n\t * @function\r\n\t * @param {string} elementId - The identifier of the element whose [display]{@link https://developer.mozilla.org/en-US/docs/Web/CSS/display} property we want to toggle.\r\n\t * @param {string} [displayValue='block'] - The [display]{@link https://developer.mozilla.org/en-US/docs/Web/CSS/display} value when we want to show the element (it will be used only if the element is currently hidden, when it calls {@link CB_Elements.show} internally). The [display]{@link https://developer.mozilla.org/en-US/docs/Web/CSS/display} value to hide the element is always \"none\".\r\n\t * @param {boolean} [checkValues=false] - This parameter will be used when it calls either {@link CB_Elements.show} or {@link CB_Elements.hide} internally.\r\n\t * @param {boolean} [computed=false] - This parameter will be used to get the current style and also when it calls either {@link CB_Elements.show} or {@link CB_Elements.hide} internally.\r\n\t * @param {function} [onToggleDisplay] - This parameter will be used when it calls either {@link CB_Elements.show} if \"onShow\" is not provided or {@link CB_Elements.hide} if \"onHide\" is not provided, internally.\r\n\t * @param {function} [onShow] - This parameter will be used when it calls {@link CB_Elements.show} internally. If not provided but \"onToggleDisplay\" is provided, it will use the latter instead.\r\n\t * @param {function} [onHide] - This parameter will be used when it calls {@link CB_Elements.hide} internally. If not provided but \"onToggleDisplay\" is provided, it will use the latter instead.\r\n\t * @returns {Node|null} Returns the affected element (if any) or null otherwise.\r\n\t */","meta":{"range":[62946,63199],"filename":"CB_Elements.js","lineno":1125,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100075467","name":"CB_Elements.showHideById","type":"FunctionExpression","paramnames":["elementId","displayValue","checkValues","computed","onToggleDisplay","onShow","onHide"]}},"description":"<p>Toggles the [display]{@link https://developer.mozilla.org/en-US/docs/Web/CSS/display} property (from &quot;none&quot; to the desired value or vice versa) of a given element, to show or hide it (by its identifier).<br>If the element is hidden (its [display]{@link https://developer.mozilla.org/en-US/docs/Web/CSS/display} is &quot;none&quot;), it will call {@link CB_Elements.show} internally to show it. Otherwise, it will call {@link CB_Elements.hide} internally. Note that these two functions will also change the [visibility]{@link https://developer.mozilla.org/en-US/docs/Web/CSS/visibility} property (setting it to either &quot;visible&quot; or &quot;hidden&quot;, respectively) of the element.</p>","kind":"function","params":[{"type":{"names":["string"]},"description":"<p>The identifier of the element whose [display]{@link https://developer.mozilla.org/en-US/docs/Web/CSS/display} property we want to toggle.</p>","name":"elementId"},{"type":{"names":["string"]},"optional":true,"defaultvalue":"'block'","description":"<p>The [display]{@link https://developer.mozilla.org/en-US/docs/Web/CSS/display} value when we want to show the element (it will be used only if the element is currently hidden, when it calls {@link CB_Elements.show} internally). The [display]{@link https://developer.mozilla.org/en-US/docs/Web/CSS/display} value to hide the element is always &quot;none&quot;.</p>","name":"displayValue"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>This parameter will be used when it calls either {@link CB_Elements.show} or {@link CB_Elements.hide} internally.</p>","name":"checkValues"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>This parameter will be used to get the current style and also when it calls either {@link CB_Elements.show} or {@link CB_Elements.hide} internally.</p>","name":"computed"},{"type":{"names":["function"]},"optional":true,"description":"<p>This parameter will be used when it calls either {@link CB_Elements.show} if &quot;onShow&quot; is not provided or {@link CB_Elements.hide} if &quot;onHide&quot; is not provided, internally.</p>","name":"onToggleDisplay"},{"type":{"names":["function"]},"optional":true,"description":"<p>This parameter will be used when it calls {@link CB_Elements.show} internally. If not provided but &quot;onToggleDisplay&quot; is provided, it will use the latter instead.</p>","name":"onShow"},{"type":{"names":["function"]},"optional":true,"description":"<p>This parameter will be used when it calls {@link CB_Elements.hide} internally. If not provided but &quot;onToggleDisplay&quot; is provided, it will use the latter instead.</p>","name":"onHide"}],"returns":[{"type":{"names":["Node","null"]},"description":"<p>Returns the affected element (if any) or null otherwise.</p>"}],"name":"showHideById","longname":"CB_Elements.showHideById","memberof":"CB_Elements","scope":"static"},{"comment":"/**\r\n\t * Changes the [display]{@link https://developer.mozilla.org/en-US/docs/Web/CSS/display} property to the desired value of a given element, to show it. Its [visibility]{@link https://developer.mozilla.org/en-US/docs/Web/CSS/visibility} property will be set to \"visible\".\r\n\t * @function\r\n\t * @param {Node} element - The element whose [display]{@link https://developer.mozilla.org/en-US/docs/Web/CSS/display} property we want to change.\r\n\t * @param {string} [displayValue='block'] - The [display]{@link https://developer.mozilla.org/en-US/docs/Web/CSS/display} value we want to set. If not provided or \"none\" is provided, it will use \"block\" instead.\r\n\t * @param {boolean} [checkValues=false] - If it is set to true, it will only perform the change if either the current [visibility]{@link https://developer.mozilla.org/en-US/docs/Web/CSS/visibility} property is not \"visible\" or the current [display]{@link https://developer.mozilla.org/en-US/docs/Web/CSS/display} property is different from the given one.\r\n\t * @param {boolean} [computed=false] - This parameter will be used when it calls {@link CB_Elements.getStyle} internally.\r\n\t * @param {function} [onShow] - Callback function that will be called if the change has been performed, after doing it (this will happens always if \"checkValues\" is false). The first parameter passed will be the affected element itself and the second and last parameter will be the new value of the [display]{@link https://developer.mozilla.org/en-US/docs/Web/CSS/display} property (not computed).\r\n\t * @returns {Node} Returns the given element again.\r\n\t */","meta":{"range":[64810,65420],"filename":"CB_Elements.js","lineno":1141,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100075497","name":"CB_Elements.show","type":"FunctionExpression","paramnames":["element","displayValue","checkValues","computed","onShow"]},"vars":{"style":"CB_Elements.show~style","displayValue":"CB_Elements.show~displayValue","element.style.visibility":"element.style.visibility","element.style.display":"element.style.display"}},"description":"<p>Changes the [display]{@link https://developer.mozilla.org/en-US/docs/Web/CSS/display} property to the desired value of a given element, to show it. Its [visibility]{@link https://developer.mozilla.org/en-US/docs/Web/CSS/visibility} property will be set to &quot;visible&quot;.</p>","kind":"function","params":[{"type":{"names":["Node"]},"description":"<p>The element whose [display]{@link https://developer.mozilla.org/en-US/docs/Web/CSS/display} property we want to change.</p>","name":"element"},{"type":{"names":["string"]},"optional":true,"defaultvalue":"'block'","description":"<p>The [display]{@link https://developer.mozilla.org/en-US/docs/Web/CSS/display} value we want to set. If not provided or &quot;none&quot; is provided, it will use &quot;block&quot; instead.</p>","name":"displayValue"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If it is set to true, it will only perform the change if either the current [visibility]{@link https://developer.mozilla.org/en-US/docs/Web/CSS/visibility} property is not &quot;visible&quot; or the current [display]{@link https://developer.mozilla.org/en-US/docs/Web/CSS/display} property is different from the given one.</p>","name":"checkValues"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>This parameter will be used when it calls {@link CB_Elements.getStyle} internally.</p>","name":"computed"},{"type":{"names":["function"]},"optional":true,"description":"<p>Callback function that will be called if the change has been performed, after doing it (this will happens always if &quot;checkValues&quot; is false). The first parameter passed will be the affected element itself and the second and last parameter will be the new value of the [display]{@link https://developer.mozilla.org/en-US/docs/Web/CSS/display} property (not computed).</p>","name":"onShow"}],"returns":[{"type":{"names":["Node"]},"description":"<p>Returns the given element again.</p>"}],"name":"show","longname":"CB_Elements.show","memberof":"CB_Elements","scope":"static"},{"comment":"/**\r\n\t * Changes the [display]{@link https://developer.mozilla.org/en-US/docs/Web/CSS/display} property to the desired value of a given element, to show it (by its identifier). Its [visibility]{@link https://developer.mozilla.org/en-US/docs/Web/CSS/visibility} property will be set to \"visible\".\r\n\t * @function\r\n\t * @param {string} elementId - The identifier of the element whose [display]{@link https://developer.mozilla.org/en-US/docs/Web/CSS/display} property we want to change.\r\n\t * @param {string} [displayValue='block'] - The [display]{@link https://developer.mozilla.org/en-US/docs/Web/CSS/display} value we want to set. If not provided or \"none\" is provided, it will use \"block\" instead.\r\n\t * @param {boolean} [checkValues=false] - If it is set to true, it will only perform the change if either the current [visibility]{@link https://developer.mozilla.org/en-US/docs/Web/CSS/visibility} property is not \"visible\" or the current [display]{@link https://developer.mozilla.org/en-US/docs/Web/CSS/display} property is different from the given one.\r\n\t * @param {boolean} [computed=false] - This parameter will be used when it calls {@link CB_Elements.getStyle} internally.\r\n\t * @param {function} [onShow] - Callback function that will be called if the change has been performed, after doing it (this will happens always if \"checkValues\" is false). The first parameter passed will be the affected element itself and the second and last parameter will be the new value of the [display]{@link https://developer.mozilla.org/en-US/docs/Web/CSS/display} property (not computed).\r\n\t * @returns {Node|null} Returns the affected element (if any) or null otherwise.\r\n\t */","meta":{"range":[67102,67297],"filename":"CB_Elements.js","lineno":1169,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100075594","name":"CB_Elements.showById","type":"FunctionExpression","paramnames":["elementId","displayValue","checkValues","computed","onShow"]}},"description":"<p>Changes the [display]{@link https://developer.mozilla.org/en-US/docs/Web/CSS/display} property to the desired value of a given element, to show it (by its identifier). Its [visibility]{@link https://developer.mozilla.org/en-US/docs/Web/CSS/visibility} property will be set to &quot;visible&quot;.</p>","kind":"function","params":[{"type":{"names":["string"]},"description":"<p>The identifier of the element whose [display]{@link https://developer.mozilla.org/en-US/docs/Web/CSS/display} property we want to change.</p>","name":"elementId"},{"type":{"names":["string"]},"optional":true,"defaultvalue":"'block'","description":"<p>The [display]{@link https://developer.mozilla.org/en-US/docs/Web/CSS/display} value we want to set. If not provided or &quot;none&quot; is provided, it will use &quot;block&quot; instead.</p>","name":"displayValue"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If it is set to true, it will only perform the change if either the current [visibility]{@link https://developer.mozilla.org/en-US/docs/Web/CSS/visibility} property is not &quot;visible&quot; or the current [display]{@link https://developer.mozilla.org/en-US/docs/Web/CSS/display} property is different from the given one.</p>","name":"checkValues"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>This parameter will be used when it calls {@link CB_Elements.getStyle} internally.</p>","name":"computed"},{"type":{"names":["function"]},"optional":true,"description":"<p>Callback function that will be called if the change has been performed, after doing it (this will happens always if &quot;checkValues&quot; is false). The first parameter passed will be the affected element itself and the second and last parameter will be the new value of the [display]{@link https://developer.mozilla.org/en-US/docs/Web/CSS/display} property (not computed).</p>","name":"onShow"}],"returns":[{"type":{"names":["Node","null"]},"description":"<p>Returns the affected element (if any) or null otherwise.</p>"}],"name":"showById","longname":"CB_Elements.showById","memberof":"CB_Elements","scope":"static"},{"comment":"/**\r\n\t * Hides a given element by changing its [display]{@link https://developer.mozilla.org/en-US/docs/Web/CSS/display} property to \"none\" and its [visibility]{@link https://developer.mozilla.org/en-US/docs/Web/CSS/visibility} to \"hidden\".\r\n\t * @function\r\n\t * @param {Node} element - The element that we want to hide.\r\n\t * @param {boolean} [checkValues=false] - If it is set to true, it will only perform the change if either the current [visibility]{@link https://developer.mozilla.org/en-US/docs/Web/CSS/visibility} property is not \"hidden\" or the current [display]{@link https://developer.mozilla.org/en-US/docs/Web/CSS/display} property is not \"none\".\r\n\t * @param {boolean} [computed=false] - This parameter will be used when it calls {@link CB_Elements.getStyle} internally.\r\n\t * @param {function} [onHide] - Callback function that will be called if the element has been hidden, after doing it (this will happens always if \"checkValues\" is false). The first parameter passed will be the affected element itself and the second and last parameter will be the new value of the [display]{@link https://developer.mozilla.org/en-US/docs/Web/CSS/display} property (not computed) which should be \"none\".\r\n\t * @returns {Node} Returns the given element again.\r\n\t */","meta":{"range":[68574,69015],"filename":"CB_Elements.js","lineno":1184,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100075620","name":"CB_Elements.hide","type":"FunctionExpression","paramnames":["element","checkValues","computed","onHide"]},"vars":{"style":"CB_Elements.hide~style","element.style.visibility":"element.style.visibility","element.style.display":"element.style.display"}},"description":"<p>Hides a given element by changing its [display]{@link https://developer.mozilla.org/en-US/docs/Web/CSS/display} property to &quot;none&quot; and its [visibility]{@link https://developer.mozilla.org/en-US/docs/Web/CSS/visibility} to &quot;hidden&quot;.</p>","kind":"function","params":[{"type":{"names":["Node"]},"description":"<p>The element that we want to hide.</p>","name":"element"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If it is set to true, it will only perform the change if either the current [visibility]{@link https://developer.mozilla.org/en-US/docs/Web/CSS/visibility} property is not &quot;hidden&quot; or the current [display]{@link https://developer.mozilla.org/en-US/docs/Web/CSS/display} property is not &quot;none&quot;.</p>","name":"checkValues"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>This parameter will be used when it calls {@link CB_Elements.getStyle} internally.</p>","name":"computed"},{"type":{"names":["function"]},"optional":true,"description":"<p>Callback function that will be called if the element has been hidden, after doing it (this will happens always if &quot;checkValues&quot; is false). The first parameter passed will be the affected element itself and the second and last parameter will be the new value of the [display]{@link https://developer.mozilla.org/en-US/docs/Web/CSS/display} property (not computed) which should be &quot;none&quot;.</p>","name":"onHide"}],"returns":[{"type":{"names":["Node"]},"description":"<p>Returns the given element again.</p>"}],"name":"hide","longname":"CB_Elements.hide","memberof":"CB_Elements","scope":"static"},{"comment":"/**\r\n\t * Hides a given element by changing its [display]{@link https://developer.mozilla.org/en-US/docs/Web/CSS/display} property to \"none\" and its [visibility]{@link https://developer.mozilla.org/en-US/docs/Web/CSS/visibility} to \"hidden\" (by its identifier).\r\n\t * @function\r\n\t * @param {string} elementId - The identifier of the element that we want to hide.\r\n\t * @param {boolean} [checkValues=false] - If it is set to true, it will only perform the change if either the current [visibility]{@link https://developer.mozilla.org/en-US/docs/Web/CSS/visibility} property is not \"hidden\" or the current [display]{@link https://developer.mozilla.org/en-US/docs/Web/CSS/display} property is not \"none\".\r\n\t * @param {boolean} [computed=false] - This parameter will be used when it calls {@link CB_Elements.getStyle} internally.\r\n\t * @param {function} [onHide] - Callback function that will be called if the element has been hidden, after doing it (this will happens always if \"checkValues\" is false). The first parameter passed will be the affected element itself and the second and last parameter will be the new value of the [display]{@link https://developer.mozilla.org/en-US/docs/Web/CSS/display} property (not computed) which should be \"none\".\r\n\t * @returns {Node|null} Returns the affected element (if any) or null otherwise.\r\n\t */","meta":{"range":[70363,70530],"filename":"CB_Elements.js","lineno":1209,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100075694","name":"CB_Elements.hideById","type":"FunctionExpression","paramnames":["elementId","checkValues","computed","onHide"]}},"description":"<p>Hides a given element by changing its [display]{@link https://developer.mozilla.org/en-US/docs/Web/CSS/display} property to &quot;none&quot; and its [visibility]{@link https://developer.mozilla.org/en-US/docs/Web/CSS/visibility} to &quot;hidden&quot; (by its identifier).</p>","kind":"function","params":[{"type":{"names":["string"]},"description":"<p>The identifier of the element that we want to hide.</p>","name":"elementId"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If it is set to true, it will only perform the change if either the current [visibility]{@link https://developer.mozilla.org/en-US/docs/Web/CSS/visibility} property is not &quot;hidden&quot; or the current [display]{@link https://developer.mozilla.org/en-US/docs/Web/CSS/display} property is not &quot;none&quot;.</p>","name":"checkValues"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>This parameter will be used when it calls {@link CB_Elements.getStyle} internally.</p>","name":"computed"},{"type":{"names":["function"]},"optional":true,"description":"<p>Callback function that will be called if the element has been hidden, after doing it (this will happens always if &quot;checkValues&quot; is false). The first parameter passed will be the affected element itself and the second and last parameter will be the new value of the [display]{@link https://developer.mozilla.org/en-US/docs/Web/CSS/display} property (not computed) which should be &quot;none&quot;.</p>","name":"onHide"}],"returns":[{"type":{"names":["Node","null"]},"description":"<p>Returns the affected element (if any) or null otherwise.</p>"}],"name":"hideById","longname":"CB_Elements.hideById","memberof":"CB_Elements","scope":"static"},{"comment":"/**\r\n\t * Toggles the class of a given element between two given classes or adds/removes the given class. The element can contain other classes and they will be kept.\r\n\t * @function\r\n\t * @param {Node} element - The element whose class we want to toggle.\r\n\t * @param {string} classA - The class that will be used in the case that the element is not using it already.\r\n\t * @param {string} [classB=''] - The class that will be used in the case that the given \"classA\" is being used by the element. If not given or an empty string is given, it will just remove the \"classA\" in the case it is being used by the element.\r\n\t * @param {function} [onToggleClass] - Callback function that will be called if the class of the element has been toggled or removed, after doing it. The first parameter passed will be the affected element itself and the second and last parameter will be the class used this time (or an empty string).\r\n\t * @returns {Node} Returns the given element again.\r\n\t */","meta":{"range":[71523,72782],"filename":"CB_Elements.js","lineno":1224,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100075718","name":"CB_Elements.toggleClass","type":"FunctionExpression","paramnames":["element","classA","classB","onToggleClass"]},"vars":{"classA":"CB_Elements.toggleClass~classA","classB":"CB_Elements.toggleClass~classB","classesUsed":"CB_Elements.toggleClass~classesUsed","element.className":"element.className"}},"description":"<p>Toggles the class of a given element between two given classes or adds/removes the given class. The element can contain other classes and they will be kept.</p>","kind":"function","params":[{"type":{"names":["Node"]},"description":"<p>The element whose class we want to toggle.</p>","name":"element"},{"type":{"names":["string"]},"description":"<p>The class that will be used in the case that the element is not using it already.</p>","name":"classA"},{"type":{"names":["string"]},"optional":true,"defaultvalue":"''","description":"<p>The class that will be used in the case that the given &quot;classA&quot; is being used by the element. If not given or an empty string is given, it will just remove the &quot;classA&quot; in the case it is being used by the element.</p>","name":"classB"},{"type":{"names":["function"]},"optional":true,"description":"<p>Callback function that will be called if the class of the element has been toggled or removed, after doing it. The first parameter passed will be the affected element itself and the second and last parameter will be the class used this time (or an empty string).</p>","name":"onToggleClass"}],"returns":[{"type":{"names":["Node"]},"description":"<p>Returns the given element again.</p>"}],"name":"toggleClass","longname":"CB_Elements.toggleClass","memberof":"CB_Elements","scope":"static"},{"comment":"/**\r\n\t * Toggles the class of a given element between two given classes (by its identifier). The element can contain other classes and they will be kept.\r\n\t * @function\r\n\t * @param {string} elementId - The identifier of the element whose class we want to toggle.\r\n\t * @param {string} classA - The class that will be used in the case that the element is not using it already.\r\n\t * @param {string} [classB=''] - The class that will be used in the case that the given \"classA\" is being used by the element. If not given or an empty string is given, it will just remove the \"classA\" in the case it is being used by the element.\r\n\t * @param {function} [onToggleClass] - Callback function that will be called if the class of the element has been toggled or removed, after doing it. The first parameter passed will be the affected element itself and the second and last parameter will be the class used this time (or an empty string).\r\n\t * @returns {Node|null} Returns the affected element (if any) or null otherwise.\r\n\t */","meta":{"range":[73814,73995],"filename":"CB_Elements.js","lineno":1262,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100075938","name":"CB_Elements.toggleClassById","type":"FunctionExpression","paramnames":["elementId","classA","classB","onToggleClass"]}},"description":"<p>Toggles the class of a given element between two given classes (by its identifier). The element can contain other classes and they will be kept.</p>","kind":"function","params":[{"type":{"names":["string"]},"description":"<p>The identifier of the element whose class we want to toggle.</p>","name":"elementId"},{"type":{"names":["string"]},"description":"<p>The class that will be used in the case that the element is not using it already.</p>","name":"classA"},{"type":{"names":["string"]},"optional":true,"defaultvalue":"''","description":"<p>The class that will be used in the case that the given &quot;classA&quot; is being used by the element. If not given or an empty string is given, it will just remove the &quot;classA&quot; in the case it is being used by the element.</p>","name":"classB"},{"type":{"names":["function"]},"optional":true,"description":"<p>Callback function that will be called if the class of the element has been toggled or removed, after doing it. The first parameter passed will be the affected element itself and the second and last parameter will be the class used this time (or an empty string).</p>","name":"onToggleClass"}],"returns":[{"type":{"names":["Node","null"]},"description":"<p>Returns the affected element (if any) or null otherwise.</p>"}],"name":"toggleClassById","longname":"CB_Elements.toggleClassById","memberof":"CB_Elements","scope":"static"},{"comment":"/**\r\n\t * Removes a desired class from a given element. The element can contain other classes and they will be kept.\r\n\t * @function\r\n\t * @param {Node} element - The element whose class we want to remove.\r\n\t * @param {string} className - The class that will be removed if the element is using it.\r\n\t * @param {boolean} [checkValues=false] - If it is set to true, it will only try to perform the action if the given \"className\" is being used. The result will be the same with either true or false, but depending on the client used it could gain or lose performance.\r\n\t * @param {function} [onRemoveClass] - Callback function that will be called if the class of the element has been tried to be removed, after doing it (this will happens always if \"checkValues\" is false). The first and unique parameter passed will be the affected element itself.\r\n\t * @returns {Node} Returns the given element again.\r\n\t * @todo Think about allowing to remove more than once class at the same time, regardless of the order given and order set.\r\n\t */","meta":{"range":[75041,75677],"filename":"CB_Elements.js","lineno":1278,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100075962","name":"CB_Elements.removeClass","type":"FunctionExpression","paramnames":["element","className","checkValues","onRemoveClass"]},"vars":{"className":"CB_Elements.removeClass~className","classesUsed":"CB_Elements.removeClass~classesUsed","element.className":"element.className"}},"description":"<p>Removes a desired class from a given element. The element can contain other classes and they will be kept.</p>","kind":"function","params":[{"type":{"names":["Node"]},"description":"<p>The element whose class we want to remove.</p>","name":"element"},{"type":{"names":["string"]},"description":"<p>The class that will be removed if the element is using it.</p>","name":"className"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If it is set to true, it will only try to perform the action if the given &quot;className&quot; is being used. The result will be the same with either true or false, but depending on the client used it could gain or lose performance.</p>","name":"checkValues"},{"type":{"names":["function"]},"optional":true,"description":"<p>Callback function that will be called if the class of the element has been tried to be removed, after doing it (this will happens always if &quot;checkValues&quot; is false). The first and unique parameter passed will be the affected element itself.</p>","name":"onRemoveClass"}],"returns":[{"type":{"names":["Node"]},"description":"<p>Returns the given element again.</p>"}],"todo":["Think about allowing to remove more than once class at the same time, regardless of the order given and order set."],"name":"removeClass","longname":"CB_Elements.removeClass","memberof":"CB_Elements","scope":"static"},{"comment":"/**\r\n\t * Removes a desired class from a given element (by its identifier). The element can contain other classes and they will be kept.\r\n\t * @function\r\n\t * @param {string} elementId - The identifier of the element whose class we want to remove.\r\n\t * @param {string} className - The class that will be removed if the element is using it.\r\n\t * @param {boolean} [checkValues=false] - If it is set to true, it will only try to perform the action if the given \"className\" is being used. The result will be the same with either true or false, but depending on the client used it could gain or lose performance.\r\n\t * @param {function} [onRemoveClass] - Callback function that will be called if the class of the element has been tried to be removed, after doing it (this will happens always if \"checkValues\" is false). The first and unique parameter passed will be the affected element itself.\r\n\t * @returns {Node|null} Returns the affected element (if any) or null otherwise.\r\n\t * @todo Think about allowing to remove more than once class at the same time, regardless of the order given and order set.\r\n\t */","meta":{"range":[76794,76991],"filename":"CB_Elements.js","lineno":1305,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100076064","name":"CB_Elements.removeClassById","type":"FunctionExpression","paramnames":["elementId","className","checkValues","onRemoveClass"]}},"description":"<p>Removes a desired class from a given element (by its identifier). The element can contain other classes and they will be kept.</p>","kind":"function","params":[{"type":{"names":["string"]},"description":"<p>The identifier of the element whose class we want to remove.</p>","name":"elementId"},{"type":{"names":["string"]},"description":"<p>The class that will be removed if the element is using it.</p>","name":"className"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If it is set to true, it will only try to perform the action if the given &quot;className&quot; is being used. The result will be the same with either true or false, but depending on the client used it could gain or lose performance.</p>","name":"checkValues"},{"type":{"names":["function"]},"optional":true,"description":"<p>Callback function that will be called if the class of the element has been tried to be removed, after doing it (this will happens always if &quot;checkValues&quot; is false). The first and unique parameter passed will be the affected element itself.</p>","name":"onRemoveClass"}],"returns":[{"type":{"names":["Node","null"]},"description":"<p>Returns the affected element (if any) or null otherwise.</p>"}],"todo":["Think about allowing to remove more than once class at the same time, regardless of the order given and order set."],"name":"removeClassById","longname":"CB_Elements.removeClassById","memberof":"CB_Elements","scope":"static"},{"comment":"/**\r\n\t * Adds a desired class to a given element. The element can contain other classes and they will be kept.\r\n\t * @function\r\n\t * @param {Node} element - The element that will get the new given class.\r\n\t * @param {string} className - The class that will be added.\r\n\t * @param {boolean} [checkValues=false] - If it is set to true, it will only try to add the given class if it is not being used already. It is recommended to use true to prevent some old clients from adding the same class multiple times.\r\n\t * @param {function} [onAddClass] - Callback function that will be called if the class of the element has been added, after doing it (this will happens always if \"checkValues\" is false). The first and unique parameter passed will be the affected element itself.\r\n\t * @returns {Node} Returns the given element again.\r\n\t * @todo Think about allowing to use more than once class (and think how many times the \"onAddClass\" function should be called).\r\n\t */","meta":{"range":[77967,78542],"filename":"CB_Elements.js","lineno":1321,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100076088","name":"CB_Elements.addClass","type":"FunctionExpression","paramnames":["element","className","checkValues","onAddClass"]},"vars":{"className":"CB_Elements.addClass~className","classesUsed":"CB_Elements.addClass~classesUsed","element.className":"element.className"}},"description":"<p>Adds a desired class to a given element. The element can contain other classes and they will be kept.</p>","kind":"function","params":[{"type":{"names":["Node"]},"description":"<p>The element that will get the new given class.</p>","name":"element"},{"type":{"names":["string"]},"description":"<p>The class that will be added.</p>","name":"className"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If it is set to true, it will only try to add the given class if it is not being used already. It is recommended to use true to prevent some old clients from adding the same class multiple times.</p>","name":"checkValues"},{"type":{"names":["function"]},"optional":true,"description":"<p>Callback function that will be called if the class of the element has been added, after doing it (this will happens always if &quot;checkValues&quot; is false). The first and unique parameter passed will be the affected element itself.</p>","name":"onAddClass"}],"returns":[{"type":{"names":["Node"]},"description":"<p>Returns the given element again.</p>"}],"todo":["Think about allowing to use more than once class (and think how many times the \"onAddClass\" function should be called)."],"name":"addClass","longname":"CB_Elements.addClass","memberof":"CB_Elements","scope":"static"},{"comment":"/**\r\n\t * Adds a desired class to a given element (by its identifier). The element can contain other classes and they will be kept.\r\n\t * @function\r\n\t * @param {string} elementId - The identifier of the element that will get the new given class.\r\n\t * @param {string} className - The class that will be added.\r\n\t * @param {boolean} [checkValues=false] - If it is set to true, it will only try to add the given class if it is not being used already. It is recommended to use true to prevent some old clients from adding the same class multiple times.\r\n\t * @param {function} [onAddClass] - Callback function that will be called if the class of the element has been added, after doing it (this will happens always if \"checkValues\" is false). The first and unique parameter passed will be the affected element itself.\r\n\t * @returns {Node|null} Returns the affected element (if any) or null otherwise.\r\n\t * @todo Think about allowing to use more than once class (and think how many times the \"onAddClass\" function should be called).\r\n\t */","meta":{"range":[79589,79774],"filename":"CB_Elements.js","lineno":1348,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100076183","name":"CB_Elements.addClassById","type":"FunctionExpression","paramnames":["elementId","className","checkValues","onAddClass"]}},"description":"<p>Adds a desired class to a given element (by its identifier). The element can contain other classes and they will be kept.</p>","kind":"function","params":[{"type":{"names":["string"]},"description":"<p>The identifier of the element that will get the new given class.</p>","name":"elementId"},{"type":{"names":["string"]},"description":"<p>The class that will be added.</p>","name":"className"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If it is set to true, it will only try to add the given class if it is not being used already. It is recommended to use true to prevent some old clients from adding the same class multiple times.</p>","name":"checkValues"},{"type":{"names":["function"]},"optional":true,"description":"<p>Callback function that will be called if the class of the element has been added, after doing it (this will happens always if &quot;checkValues&quot; is false). The first and unique parameter passed will be the affected element itself.</p>","name":"onAddClass"}],"returns":[{"type":{"names":["Node","null"]},"description":"<p>Returns the affected element (if any) or null otherwise.</p>"}],"todo":["Think about allowing to use more than once class (and think how many times the \"onAddClass\" function should be called)."],"name":"addClassById","longname":"CB_Elements.addClassById","memberof":"CB_Elements","scope":"static"},{"comment":"/**\r\n\t * Sets a desired class or classes to a given element. All previous classes (if any) will be replaced by the new one or new ones.\r\n\t * @function\r\n\t * @param {Node} element - The element that will get the new given class or classes.\r\n\t * @param {string} classNames - The class or classes that will be set. More than one class can be given (separated by blank spaces).\r\n\t * @param {boolean} [checkValues=false] - If it is set to true, it will only try to set the given class or classes if they are not being used already.\r\n\t * @param {function} [onSetClass] - Callback function that will be called if the class or classes of the element have been set, after doing it (this will happens always if \"checkValues\" is false). The first and unique parameter passed will be the affected element itself.\r\n\t * @returns {Node} Returns the given element again.\r\n\t */","meta":{"range":[80649,80999],"filename":"CB_Elements.js","lineno":1363,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100076207","name":"CB_Elements.setClass","type":"FunctionExpression","paramnames":["element","classNames","checkValues","onSetClass"]},"vars":{"element.className":"element.className"}},"description":"<p>Sets a desired class or classes to a given element. All previous classes (if any) will be replaced by the new one or new ones.</p>","kind":"function","params":[{"type":{"names":["Node"]},"description":"<p>The element that will get the new given class or classes.</p>","name":"element"},{"type":{"names":["string"]},"description":"<p>The class or classes that will be set. More than one class can be given (separated by blank spaces).</p>","name":"classNames"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If it is set to true, it will only try to set the given class or classes if they are not being used already.</p>","name":"checkValues"},{"type":{"names":["function"]},"optional":true,"description":"<p>Callback function that will be called if the class or classes of the element have been set, after doing it (this will happens always if &quot;checkValues&quot; is false). The first and unique parameter passed will be the affected element itself.</p>","name":"onSetClass"}],"returns":[{"type":{"names":["Node"]},"description":"<p>Returns the given element again.</p>"}],"name":"setClass","longname":"CB_Elements.setClass","memberof":"CB_Elements","scope":"static"},{"comment":"/**\r\n\t * Sets a desired class or classes to a given element (by its identifier). All previous classes (if any) will be replaced by the new one or new ones.\r\n\t * @function\r\n\t * @param {string} elementId - The identifier of the element that will get the new given class or classes.\r\n\t * @param {string} classNames - The class or classes that will be set. More than one class can be given (separated by blank spaces).\r\n\t * @param {boolean} [checkValues=false] - If it is set to true, it will only try to set the given class or classes if they are not being used already.\r\n\t * @param {function} [onSetClass] - Callback function that will be called if the class or classes of the element have been set, after doing it (this will happens always if \"checkValues\" is false). The first and unique parameter passed will be the affected element itself.\r\n\t * @returns {Node|null} Returns the affected element (if any) or null otherwise.\r\n\t */","meta":{"range":[81945,82132],"filename":"CB_Elements.js","lineno":1386,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100076256","name":"CB_Elements.setClassById","type":"FunctionExpression","paramnames":["elementId","classNames","checkValues","onSetClass"]}},"description":"<p>Sets a desired class or classes to a given element (by its identifier). All previous classes (if any) will be replaced by the new one or new ones.</p>","kind":"function","params":[{"type":{"names":["string"]},"description":"<p>The identifier of the element that will get the new given class or classes.</p>","name":"elementId"},{"type":{"names":["string"]},"description":"<p>The class or classes that will be set. More than one class can be given (separated by blank spaces).</p>","name":"classNames"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If it is set to true, it will only try to set the given class or classes if they are not being used already.</p>","name":"checkValues"},{"type":{"names":["function"]},"optional":true,"description":"<p>Callback function that will be called if the class or classes of the element have been set, after doing it (this will happens always if &quot;checkValues&quot; is false). The first and unique parameter passed will be the affected element itself.</p>","name":"onSetClass"}],"returns":[{"type":{"names":["Node","null"]},"description":"<p>Returns the affected element (if any) or null otherwise.</p>"}],"name":"setClassById","longname":"CB_Elements.setClassById","memberof":"CB_Elements","scope":"static"},{"comment":"/**\r\n\t * Returns the left position of an element (having in mind [getBoundingClientRect]{@link https://developer.mozilla.org/en-US/docs/Web/API/Element/getBoundingClientRect} if available, its parents, etc.).\r\n\t * @function\r\n\t * @param {Node} element - The element whose data we are interested in.\r\n\t * @param {boolean} [ignoreScroll=true] - If it is set to false, it will have in mind the current scroll position to calculate the result.\r\n\t * @param {function} [returnNullOnFail=false] - If it is set to true, it will return null instead of zero (0) in the case that something goes wrong.\r\n\t * @param {boolean} [computed=false] - This parameter will be used when it calls {@link CB_Elements.getStyleProperty} and {@link CB_Elements.getStylePropertyInteger} internally.\r\n\t * @returns {*} It could return zero (0) or even a non-numeric value if something fails (use \"returnNullOnFail\" set to true to return null when it fails).\r\n\t */","meta":{"range":[83080,86670],"filename":"CB_Elements.js","lineno":1401,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100076280","name":"CB_Elements.getLeft","type":"FunctionExpression","paramnames":["element","ignoreScroll","returnNullOnFail","computed"]},"vars":{"ignoreScroll":"CB_Elements.getLeft~ignoreScroll","elementLeft":"CB_Elements.getLeft~elementLeft","originalElement":"CB_Elements.getLeft~originalElement","rect":"CB_Elements.getLeft~rect","elementPosition":"CB_Elements.getLeft~elementPosition","element":"CB_Elements.getLeft~element","elementParent":"CB_Elements.getLeft~elementParent"}},"description":"<p>Returns the left position of an element (having in mind [getBoundingClientRect]{@link https://developer.mozilla.org/en-US/docs/Web/API/Element/getBoundingClientRect} if available, its parents, etc.).</p>","kind":"function","params":[{"type":{"names":["Node"]},"description":"<p>The element whose data we are interested in.</p>","name":"element"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":true,"description":"<p>If it is set to false, it will have in mind the current scroll position to calculate the result.</p>","name":"ignoreScroll"},{"type":{"names":["function"]},"optional":true,"defaultvalue":false,"description":"<p>If it is set to true, it will return null instead of zero (0) in the case that something goes wrong.</p>","name":"returnNullOnFail"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>This parameter will be used when it calls {@link CB_Elements.getStyleProperty} and {@link CB_Elements.getStylePropertyInteger} internally.</p>","name":"computed"}],"returns":[{"type":{"names":["*"]},"description":"<p>It could return zero (0) or even a non-numeric value if something fails (use &quot;returnNullOnFail&quot; set to true to return null when it fails).</p>"}],"name":"getLeft","longname":"CB_Elements.getLeft","memberof":"CB_Elements","scope":"static"},{"comment":"/**\r\n\t * Returns the left position of an element (having in mind [getBoundingClientRect]{@link https://developer.mozilla.org/en-US/docs/Web/API/Element/getBoundingClientRect} if available, its parents, etc.), by its identifier.\r\n\t * @function\r\n\t * @param {string} elementId - The identifier of the element whose data we are interested in.\r\n\t * @param {boolean} [ignoreScroll=true] - If it is set to false, it will have in mind the current scroll position to calculate the result.\r\n\t * @param {function} [returnNullOnFail=false] - If it is set to true, it will return null instead of zero (0) in the case that something goes wrong.\r\n\t * @param {boolean} [computed=false] - This parameter will be used when it calls {@link CB_Elements.getStyleProperty} and {@link CB_Elements.getStylePropertyInteger} internally.\r\n\t * @returns {*} It could return zero (0) or even a non-numeric value if something fails (use \"returnNullOnFail\" set to true to return null when it fails).\r\n\t */","meta":{"range":[87659,87854],"filename":"CB_Elements.js","lineno":1510,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100076674","name":"CB_Elements.getLeftById","type":"FunctionExpression","paramnames":["elementId","ignoreScroll","returnNullOnFail","computed"]}},"description":"<p>Returns the left position of an element (having in mind [getBoundingClientRect]{@link https://developer.mozilla.org/en-US/docs/Web/API/Element/getBoundingClientRect} if available, its parents, etc.), by its identifier.</p>","kind":"function","params":[{"type":{"names":["string"]},"description":"<p>The identifier of the element whose data we are interested in.</p>","name":"elementId"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":true,"description":"<p>If it is set to false, it will have in mind the current scroll position to calculate the result.</p>","name":"ignoreScroll"},{"type":{"names":["function"]},"optional":true,"defaultvalue":false,"description":"<p>If it is set to true, it will return null instead of zero (0) in the case that something goes wrong.</p>","name":"returnNullOnFail"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>This parameter will be used when it calls {@link CB_Elements.getStyleProperty} and {@link CB_Elements.getStylePropertyInteger} internally.</p>","name":"computed"}],"returns":[{"type":{"names":["*"]},"description":"<p>It could return zero (0) or even a non-numeric value if something fails (use &quot;returnNullOnFail&quot; set to true to return null when it fails).</p>"}],"name":"getLeftById","longname":"CB_Elements.getLeftById","memberof":"CB_Elements","scope":"static"},{"comment":"/**\r\n\t * Returns the top position of an element (having in mind [getBoundingClientRect]{@link https://developer.mozilla.org/en-US/docs/Web/API/Element/getBoundingClientRect} if available, its parents, etc.).\r\n\t * @function\r\n\t * @param {Node} element - The element whose data we are interested in.\r\n\t * @param {boolean} [ignoreScroll=true] - If it is set to false, it will have in mind the current scroll position to calculate the result.\r\n\t * @param {function} [returnNullOnFail=false] - If it is set to true, it will return null instead of zero (0) in the case that something goes wrong.\r\n\t * @param {boolean} [computed=false] - This parameter will be used when it calls {@link CB_Elements.getStyleProperty} and {@link CB_Elements.getStylePropertyInteger} internally.\r\n\t * @returns {*} It could return zero (0) or even a non-numeric value if something fails (use \"returnNullOnFail\" set to true to return null when it fails).\r\n\t */","meta":{"range":[88801,92396],"filename":"CB_Elements.js","lineno":1525,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100076698","name":"CB_Elements.getTop","type":"FunctionExpression","paramnames":["element","ignoreScroll","returnNullOnFail","computed"]},"vars":{"ignoreScroll":"CB_Elements.getTop~ignoreScroll","elementTop":"CB_Elements.getTop~elementTop","originalElement":"CB_Elements.getTop~originalElement","rect":"CB_Elements.getTop~rect","elementPosition":"CB_Elements.getTop~elementPosition","element":"CB_Elements.getTop~element","elementParent":"CB_Elements.getTop~elementParent"}},"description":"<p>Returns the top position of an element (having in mind [getBoundingClientRect]{@link https://developer.mozilla.org/en-US/docs/Web/API/Element/getBoundingClientRect} if available, its parents, etc.).</p>","kind":"function","params":[{"type":{"names":["Node"]},"description":"<p>The element whose data we are interested in.</p>","name":"element"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":true,"description":"<p>If it is set to false, it will have in mind the current scroll position to calculate the result.</p>","name":"ignoreScroll"},{"type":{"names":["function"]},"optional":true,"defaultvalue":false,"description":"<p>If it is set to true, it will return null instead of zero (0) in the case that something goes wrong.</p>","name":"returnNullOnFail"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>This parameter will be used when it calls {@link CB_Elements.getStyleProperty} and {@link CB_Elements.getStylePropertyInteger} internally.</p>","name":"computed"}],"returns":[{"type":{"names":["*"]},"description":"<p>It could return zero (0) or even a non-numeric value if something fails (use &quot;returnNullOnFail&quot; set to true to return null when it fails).</p>"}],"name":"getTop","longname":"CB_Elements.getTop","memberof":"CB_Elements","scope":"static"},{"comment":"/**\r\n\t * Returns the top position of an element (having in mind [getBoundingClientRect]{@link https://developer.mozilla.org/en-US/docs/Web/API/Element/getBoundingClientRect} if available, its parents, etc.), by its identifier.\r\n\t * @function\r\n\t * @param {string} elementId - The identifier of the element whose data we are interested in.\r\n\t * @param {boolean} [ignoreScroll=true] - If it is set to false, it will have in mind the current scroll position to calculate the result.\r\n\t * @param {function} [returnNullOnFail=false] - If it is set to true, it will return null instead of zero (0) in the case that something goes wrong.\r\n\t * @param {boolean} [computed=false] - This parameter will be used when it calls {@link CB_Elements.getStyleProperty} and {@link CB_Elements.getStylePropertyInteger} internally.\r\n\t * @returns {*} It could return zero (0) or even a non-numeric value if something fails (use \"returnNullOnFail\" set to true to return null when it fails).\r\n\t */","meta":{"range":[93384,93577],"filename":"CB_Elements.js","lineno":1637,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100077092","name":"CB_Elements.getTopById","type":"FunctionExpression","paramnames":["elementId","ignoreScroll","returnNullOnFail","computed"]}},"description":"<p>Returns the top position of an element (having in mind [getBoundingClientRect]{@link https://developer.mozilla.org/en-US/docs/Web/API/Element/getBoundingClientRect} if available, its parents, etc.), by its identifier.</p>","kind":"function","params":[{"type":{"names":["string"]},"description":"<p>The identifier of the element whose data we are interested in.</p>","name":"elementId"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":true,"description":"<p>If it is set to false, it will have in mind the current scroll position to calculate the result.</p>","name":"ignoreScroll"},{"type":{"names":["function"]},"optional":true,"defaultvalue":false,"description":"<p>If it is set to true, it will return null instead of zero (0) in the case that something goes wrong.</p>","name":"returnNullOnFail"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>This parameter will be used when it calls {@link CB_Elements.getStyleProperty} and {@link CB_Elements.getStylePropertyInteger} internally.</p>","name":"computed"}],"returns":[{"type":{"names":["*"]},"description":"<p>It could return zero (0) or even a non-numeric value if something fails (use &quot;returnNullOnFail&quot; set to true to return null when it fails).</p>"}],"name":"getTopById","longname":"CB_Elements.getTopById","memberof":"CB_Elements","scope":"static"},{"comment":"/**\r\n\t * Returns the width of an element (having in mind its border).\r\n\t * @function\r\n\t * @param {Node} element - The element whose data we are interested in.\r\n\t * @param {function} [returnNullOnFail=false] - If it is set to true, it will return null instead of zero (0) in the case that something goes wrong.\r\n\t * @param {boolean} [computed=false] - This parameter will be used when it calls {@link CB_Elements.getStylePropertyInteger} internally.\r\n\t * @returns {*} It could return zero (0) or even a non-numeric value if something fails (use \"returnNullOnFail\" set to true to return null when it fails).\r\n\t */","meta":{"range":[94203,96041],"filename":"CB_Elements.js","lineno":1651,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100077116","name":"CB_Elements.getWidth","type":"FunctionExpression","paramnames":["element","returnNullOnFail","computed"]},"vars":{"elementWidth":"CB_Elements.getWidth~elementWidth","rect":"CB_Elements.getWidth~rect"}},"description":"<p>Returns the width of an element (having in mind its border).</p>","kind":"function","params":[{"type":{"names":["Node"]},"description":"<p>The element whose data we are interested in.</p>","name":"element"},{"type":{"names":["function"]},"optional":true,"defaultvalue":false,"description":"<p>If it is set to true, it will return null instead of zero (0) in the case that something goes wrong.</p>","name":"returnNullOnFail"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>This parameter will be used when it calls {@link CB_Elements.getStylePropertyInteger} internally.</p>","name":"computed"}],"returns":[{"type":{"names":["*"]},"description":"<p>It could return zero (0) or even a non-numeric value if something fails (use &quot;returnNullOnFail&quot; set to true to return null when it fails).</p>"}],"name":"getWidth","longname":"CB_Elements.getWidth","memberof":"CB_Elements","scope":"static"},{"comment":"/**\r\n\t * Returns the width of an element (having in mind its border), by its identifier.\r\n\t * @function\r\n\t * @param {string} elementId - The identifier of the element whose data we are interested in.\r\n\t * @param {function} [returnNullOnFail=false] - If it is set to true, it will return null instead of zero (0) in the case that something goes wrong.\r\n\t * @param {boolean} [computed=false] - This parameter will be used when it calls {@link CB_Elements.getStylePropertyInteger} internally.\r\n\t * @returns {*} It could return zero (0) or even a non-numeric value if something fails (use \"returnNullOnFail\" set to true to return null when it fails).\r\n\t */","meta":{"range":[96708,96849],"filename":"CB_Elements.js","lineno":1701,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100077301","name":"CB_Elements.getWidthById","type":"FunctionExpression","paramnames":["elementId","returnNullOnFail","computed"]}},"description":"<p>Returns the width of an element (having in mind its border), by its identifier.</p>","kind":"function","params":[{"type":{"names":["string"]},"description":"<p>The identifier of the element whose data we are interested in.</p>","name":"elementId"},{"type":{"names":["function"]},"optional":true,"defaultvalue":false,"description":"<p>If it is set to true, it will return null instead of zero (0) in the case that something goes wrong.</p>","name":"returnNullOnFail"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>This parameter will be used when it calls {@link CB_Elements.getStylePropertyInteger} internally.</p>","name":"computed"}],"returns":[{"type":{"names":["*"]},"description":"<p>It could return zero (0) or even a non-numeric value if something fails (use &quot;returnNullOnFail&quot; set to true to return null when it fails).</p>"}],"name":"getWidthById","longname":"CB_Elements.getWidthById","memberof":"CB_Elements","scope":"static"},{"comment":"/**\r\n\t * Returns the height of an element (having in mind its border).\r\n\t * @function\r\n\t * @param {Node} element - The element whose data we are interested in.\r\n\t * @param {function} [returnNullOnFail=false] - If it is set to true, it will return null instead of zero (0) in the case that something goes wrong.\r\n\t * @param {boolean} [computed=false] - This parameter will be used when it calls {@link CB_Elements.getStylePropertyInteger} internally.\r\n\t * @returns {*} It could return zero (0) or even a non-numeric value if something fails (use \"returnNullOnFail\" set to true to return null when it fails).\r\n\t */","meta":{"range":[97476,99338],"filename":"CB_Elements.js","lineno":1715,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100077321","name":"CB_Elements.getHeight","type":"FunctionExpression","paramnames":["element","returnNullOnFail","computed"]},"vars":{"elementHeight":"CB_Elements.getHeight~elementHeight","rect":"CB_Elements.getHeight~rect"}},"description":"<p>Returns the height of an element (having in mind its border).</p>","kind":"function","params":[{"type":{"names":["Node"]},"description":"<p>The element whose data we are interested in.</p>","name":"element"},{"type":{"names":["function"]},"optional":true,"defaultvalue":false,"description":"<p>If it is set to true, it will return null instead of zero (0) in the case that something goes wrong.</p>","name":"returnNullOnFail"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>This parameter will be used when it calls {@link CB_Elements.getStylePropertyInteger} internally.</p>","name":"computed"}],"returns":[{"type":{"names":["*"]},"description":"<p>It could return zero (0) or even a non-numeric value if something fails (use &quot;returnNullOnFail&quot; set to true to return null when it fails).</p>"}],"name":"getHeight","longname":"CB_Elements.getHeight","memberof":"CB_Elements","scope":"static"},{"comment":"/**\r\n\t * Returns the height of an element (having in mind its border), by its identifier.\r\n\t * @function\r\n\t * @param {string} elementId - The identifier of the element whose data we are interested in.\r\n\t * @param {function} [returnNullOnFail=false] - If it is set to true, it will return null instead of zero (0) in the case that something goes wrong.\r\n\t * @param {boolean} [computed=false] - This parameter will be used when it calls {@link CB_Elements.getStylePropertyInteger} internally.\r\n\t * @returns {*} It could return zero (0) or even a non-numeric value if something fails (use \"returnNullOnFail\" set to true to return null when it fails).\r\n\t */","meta":{"range":[100006,100149],"filename":"CB_Elements.js","lineno":1765,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100077506","name":"CB_Elements.getHeightById","type":"FunctionExpression","paramnames":["elementId","returnNullOnFail","computed"]}},"description":"<p>Returns the height of an element (having in mind its border), by its identifier.</p>","kind":"function","params":[{"type":{"names":["string"]},"description":"<p>The identifier of the element whose data we are interested in.</p>","name":"elementId"},{"type":{"names":["function"]},"optional":true,"defaultvalue":false,"description":"<p>If it is set to true, it will return null instead of zero (0) in the case that something goes wrong.</p>","name":"returnNullOnFail"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>This parameter will be used when it calls {@link CB_Elements.getStylePropertyInteger} internally.</p>","name":"computed"}],"returns":[{"type":{"names":["*"]},"description":"<p>It could return zero (0) or even a non-numeric value if something fails (use &quot;returnNullOnFail&quot; set to true to return null when it fails).</p>"}],"name":"getHeightById","longname":"CB_Elements.getHeightById","memberof":"CB_Elements","scope":"static"},{"comment":"/**\r\n\t * Prevents or allows the possibility of selecting the content of a given element (makes it unselectable).\r\n\t * @function\r\n\t * @param {Node} element - The element which we want to affect.\r\n\t * @param {boolean} [avoidSelection=true] - If set to false, it will allow selecting the content. Otherwise, it will prevent it to be selected.\r\n\t * @returns {Node|null} Returns the given element again or null.\r\n\t */","meta":{"range":[100575,101938],"filename":"CB_Elements.js","lineno":1778,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100077526","name":"CB_Elements.preventSelection","type":"FunctionExpression","paramnames":["element","avoidSelection"]},"vars":{"avoidSelection":"CB_Elements.preventSelection~avoidSelection","element.unselectable":"element.unselectable","element.style.MozUserSelect":"element.style.MozUserSelect","element.style.WebkitUserSelect":"element.style.WebkitUserSelect","element.style.userSelect":"element.style.userSelect","element.style.KhtmlUserSelect":"element.style.KhtmlUserSelect","element.style.MsUserSelect":"element.style.MsUserSelect","element.style.MsTouchSelect":"element.style.MsTouchSelect","element.style.touchSelect":"element.style.touchSelect","element.onselectstart":"element.onselectstart","":null}},"description":"<p>Prevents or allows the possibility of selecting the content of a given element (makes it unselectable).</p>","kind":"function","params":[{"type":{"names":["Node"]},"description":"<p>The element which we want to affect.</p>","name":"element"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":true,"description":"<p>If set to false, it will allow selecting the content. Otherwise, it will prevent it to be selected.</p>","name":"avoidSelection"}],"returns":[{"type":{"names":["Node","null"]},"description":"<p>Returns the given element again or null.</p>"}],"name":"preventSelection","longname":"CB_Elements.preventSelection","memberof":"CB_Elements","scope":"static"},{"comment":"/**\r\n\t * Prevents or allows the possibility of selecting the content of a given element (makes it unselectable), by its ID.\r\n\t * @function\r\n\t * @param {string} elementId - The identifier of the element which we want to affect.\r\n\t * @param {boolean} [avoidSelection=true] - If set to false, it will allow selecting the content. Otherwise, it will prevent it to be selected.\r\n\t * @returns {Node|null} Returns the affected element (if any) or null otherwise.\r\n\t */","meta":{"range":[102413,102574],"filename":"CB_Elements.js","lineno":1825,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100077705","name":"CB_Elements.preventSelectionById","type":"FunctionExpression","paramnames":["elementId","allowSelection"]}},"description":"<p>Prevents or allows the possibility of selecting the content of a given element (makes it unselectable), by its ID.</p>","kind":"function","params":[{"type":{"names":["string"]},"description":"<p>The identifier of the element which we want to affect.</p>","name":"elementId"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":true,"description":"<p>If set to false, it will allow selecting the content. Otherwise, it will prevent it to be selected.</p>","name":"avoidSelection"}],"returns":[{"type":{"names":["Node","null"]},"description":"<p>Returns the affected element (if any) or null otherwise.</p>"}],"name":"preventSelectionById","longname":"CB_Elements.preventSelectionById","memberof":"CB_Elements","scope":"static"},{"comment":"/**\r\n\t * Disables or enables the contextual menu for a given element or in the whole document.\r\n\t * @function\r\n\t * @param {Node} [element=document] - The element whose contextual menu we want to disable or enable. If not given, it will affect the whole document.\r\n\t * @param {boolean} [disableContextMenu=true] - If set to false, it will allow showing the contextual menu. Otherwise, it will prevent it to show.\r\n\t * @returns {Node} Returns the affected element.\r\n\t */","meta":{"range":[103056,103619],"filename":"CB_Elements.js","lineno":1838,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100077725","name":"CB_Elements.contextMenuDisable","type":"FunctionExpression","paramnames":["element","disableContextMenu"]},"vars":{"element":"CB_Elements.contextMenuDisable~element","disableContextMenu":"CB_Elements.contextMenuDisable~disableContextMenu","":null,"element.contextmenu":"CB_Elements.contextMenuDisable~element.contextmenu"}},"description":"<p>Disables or enables the contextual menu for a given element or in the whole document.</p>","kind":"function","params":[{"type":{"names":["Node"]},"optional":true,"defaultvalue":"document","description":"<p>The element whose contextual menu we want to disable or enable. If not given, it will affect the whole document.</p>","name":"element"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":true,"description":"<p>If set to false, it will allow showing the contextual menu. Otherwise, it will prevent it to show.</p>","name":"disableContextMenu"}],"returns":[{"type":{"names":["Node"]},"description":"<p>Returns the affected element.</p>"}],"name":"contextMenuDisable","longname":"CB_Elements.contextMenuDisable","memberof":"CB_Elements","scope":"static"},{"comment":"/**\r\n\t * Disables or enables the contextual menu for a given element (by its identifier).\r\n\t * @function\r\n\t * @param {string} elementId - The identifier of the element whose contextual menu we want to disable or enable.\r\n\t * @param {boolean} [disableContextMenu=true] - If set to false, it will allow showing the contextual menu. Otherwise, it will prevent it to show.\r\n\t * @returns {Node|null} Returns the affected element (if any) or null otherwise.\r\n\t */","meta":{"range":[104090,104337],"filename":"CB_Elements.js","lineno":1861,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100077809","name":"CB_Elements.contextMenuDisableById","type":"FunctionExpression","paramnames":["elementId","allowContextMenu"]},"vars":{"element":"CB_Elements.contextMenuDisableById~element"}},"description":"<p>Disables or enables the contextual menu for a given element (by its identifier).</p>","kind":"function","params":[{"type":{"names":["string"]},"description":"<p>The identifier of the element whose contextual menu we want to disable or enable.</p>","name":"elementId"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":true,"description":"<p>If set to false, it will allow showing the contextual menu. Otherwise, it will prevent it to show.</p>","name":"disableContextMenu"}],"returns":[{"type":{"names":["Node","null"]},"description":"<p>Returns the affected element (if any) or null otherwise.</p>"}],"name":"contextMenuDisableById","longname":"CB_Elements.contextMenuDisableById","memberof":"CB_Elements","scope":"static"},{"comment":"/**\r\n\t * Tries to get the body content of an [iframe]{@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe}. Depending on the client and the safety measures, this might fail.\r\n\t * @function\r\n\t * @param {HTMLIFrameElement} frameElement - The [iframe]{@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe} element whose body content we want to get.\r\n\t * @returns {string|null} Returns null if something goes wrong.\r\n\t */","meta":{"range":[104941,106371],"filename":"CB_Elements.js","lineno":1879,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100077840","name":"CB_Elements.getFrameBodyContent","type":"FunctionExpression","paramnames":["frameElement"]},"vars":{"frameBody":"CB_Elements.getFrameBodyContent~frameBody"}},"description":"<p>Tries to get the body content of an [iframe]{@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe}. Depending on the client and the safety measures, this might fail.</p>","kind":"function","params":[{"type":{"names":["HTMLIFrameElement"]},"description":"<p>The [iframe]{@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe} element whose body content we want to get.</p>","name":"frameElement"}],"returns":[{"type":{"names":["string","null"]},"description":"<p>Returns null if something goes wrong.</p>"}],"name":"getFrameBodyContent","longname":"CB_Elements.getFrameBodyContent","memberof":"CB_Elements","scope":"static"},{"comment":"/**\r\n\t * Tries to get the body content of an [iframe]{@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe} (by its identifier). Depending on the client and the safety measures, this might fail.\r\n\t * @function\r\n\t * @param {string} frameElementId - The identifier of the [iframe]{@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe} element whose body content we want to get.\r\n\t * @returns {string|null} Returns null if something goes wrong.\r\n\t */","meta":{"range":[106871,107009],"filename":"CB_Elements.js","lineno":1923,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100078054","name":"CB_Elements.getFrameBodyContentById","type":"FunctionExpression","paramnames":["frameElementId"]}},"description":"<p>Tries to get the body content of an [iframe]{@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe} (by its identifier). Depending on the client and the safety measures, this might fail.</p>","kind":"function","params":[{"type":{"names":["string"]},"description":"<p>The identifier of the [iframe]{@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe} element whose body content we want to get.</p>","name":"frameElementId"}],"returns":[{"type":{"names":["string","null"]},"description":"<p>Returns null if something goes wrong.</p>"}],"name":"getFrameBodyContentById","longname":"CB_Elements.getFrameBodyContentById","memberof":"CB_Elements","scope":"static"},{"comment":"/**\r\n\t * Callback that is used as the \"onScrollLeftChanges\" parameter for the {@link CB_Elements.getScrollLeftById} function or as the \"onScrollTopChanges\" parameter for the {@link CB_Elements.getScrollTopById} function. All values received should be checked since some could be not numbers.\r\n\t * @memberof CB_Elements\r\n\t * @callback CB_Elements.getScrollLeftById_getScrollTopById_ON_SCROLL_CHANGES\r\n\t * @param {*} scrollLeftOrTop - The scroll left or scroll top position.\r\n\t * @param {*} scrollLeftOrTopPrevious - The previous scroll left or scroll top position.\r\n\t * @param {*} scrollWidthOrHeight - The scroll width or scroll height.\r\n\t * @param {*} clientWidthOrHeight - The client width or client height ([element.clientWidth]{@link https://developer.mozilla.org/en-US/docs/Web/API/Element/clientWidth}/[element.offsetWidth]{@link https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/offsetWidth} or [element.clientHeight]{@link https://developer.mozilla.org/en-US/docs/Web/API/Element/clientHeight}/[element.offsetHeight]{@link https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/offsetHeight}, depending on the web client).\r\n\t * @param {*} scrollLeftOrTopRelative - The relative scroll left or scroll top position.\r\n\t * @param {*} scrollLeftOrTopRelativePrevious - The previous relative scroll left or scroll top position.\r\n\t */","meta":{"filename":"CB_Elements.js","lineno":1929,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{}},"description":"<p>Callback that is used as the &quot;onScrollLeftChanges&quot; parameter for the {@link CB_Elements.getScrollLeftById} function or as the &quot;onScrollTopChanges&quot; parameter for the {@link CB_Elements.getScrollTopById} function. All values received should be checked since some could be not numbers.</p>","memberof":"CB_Elements","kind":"typedef","name":"getScrollLeftById_getScrollTopById_ON_SCROLL_CHANGES","type":{"names":["function"]},"params":[{"type":{"names":["*"]},"description":"<p>The scroll left or scroll top position.</p>","name":"scrollLeftOrTop"},{"type":{"names":["*"]},"description":"<p>The previous scroll left or scroll top position.</p>","name":"scrollLeftOrTopPrevious"},{"type":{"names":["*"]},"description":"<p>The scroll width or scroll height.</p>","name":"scrollWidthOrHeight"},{"type":{"names":["*"]},"description":"<p>The client width or client height ([element.clientWidth]{@link https://developer.mozilla.org/en-US/docs/Web/API/Element/clientWidth}/[element.offsetWidth]{@link https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/offsetWidth} or [element.clientHeight]{@link https://developer.mozilla.org/en-US/docs/Web/API/Element/clientHeight}/[element.offsetHeight]{@link https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/offsetHeight}, depending on the web client).</p>","name":"clientWidthOrHeight"},{"type":{"names":["*"]},"description":"<p>The relative scroll left or scroll top position.</p>","name":"scrollLeftOrTopRelative"},{"type":{"names":["*"]},"description":"<p>The previous relative scroll left or scroll top position.</p>","name":"scrollLeftOrTopRelativePrevious"}],"longname":"CB_Elements.getScrollLeftById_getScrollTopById_ON_SCROLL_CHANGES","scope":"static"},{"comment":"/**\r\n\t * Returns the horizontal scroll of a given element (by its identifier) and allows running a callback function (becoming recursive if desired). Any previous interval started by a previous call to this function, for the same \"elementId\", will be stopped.\r\n\t * @function\r\n\t * @param {string|window} [elementId=window] - The identifier of the element whose horizontal scroll position we want to get. If a string with the identifier is not given, the unique value allowed is the window object (which is the default value when a non-valid value or no value is given).\r\n\t * @param {CB_Elements.getScrollLeftById_getScrollTopById_ON_SCROLL_CHANGES} [onScrollLeftChanges] - The desired callback function. It will be called as an interval if \"timeoutMs\" is a valid integer value.\r\n\t * @param {boolean} [fireFirstTime=false] - If it is set to true, it will call the callback function (if any) as soon as this function is called.\r\n\t * @param {boolean} [fireAlways=false] - If it is set to true, it will call the callback function (if any) every interval even if the horizontal scroll value has not changed from the last call.\r\n\t * @param {integer} [timeoutMs] - The number of milliseconds between one call to the callback function (if any) and the next one. If not given, it will not perform any interval.\r\n\t * @param {function} [returnNullOnFail=false] - If it is set to true, it will return null instead of zero (0) in the case that something goes wrong.\r\n\t * @returns {number|null} Returns the horizontal scroll of the given element (by its identifier). It could return zero (0) if something fails (use \"returnNullOnFail\" set to true to return null when it fails).\r\n\t */","meta":{"range":[110217,114283],"filename":"CB_Elements.js","lineno":1955,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100078090","name":"CB_Elements.getScrollLeftById","type":"FunctionExpression","paramnames":["elementId","onScrollLeftChanges","fireFirstTime","fireAlways","timeoutMs","returnNullOnFail","timeout"]},"vars":{"CB_Elements._getScrollLeftByIdLastValue[undefined]":"CB_Elements._getScrollLeftByIdLastValue[undefined]","CB_Elements._getScrollLeftByIdTimeout[undefined]":"CB_Elements._getScrollLeftByIdTimeout[undefined]","timeout":"CB_Elements.getScrollLeftById~timeout","element":"CB_Elements.getScrollLeftById~element","scrollLeftValue":"CB_Elements.getScrollLeftById~scrollLeftValue","scrollRelative":"CB_Elements.getScrollLeftById~scrollRelative","CB_Elements._getScrollLeftByIdScrollRelativePrevious[undefined]":"CB_Elements._getScrollLeftByIdScrollRelativePrevious[undefined]","":null}},"description":"<p>Returns the horizontal scroll of a given element (by its identifier) and allows running a callback function (becoming recursive if desired). Any previous interval started by a previous call to this function, for the same &quot;elementId&quot;, will be stopped.</p>","kind":"function","params":[{"type":{"names":["string","window"]},"optional":true,"defaultvalue":"window","description":"<p>The identifier of the element whose horizontal scroll position we want to get. If a string with the identifier is not given, the unique value allowed is the window object (which is the default value when a non-valid value or no value is given).</p>","name":"elementId"},{"type":{"names":["CB_Elements.getScrollLeftById_getScrollTopById_ON_SCROLL_CHANGES"]},"optional":true,"description":"<p>The desired callback function. It will be called as an interval if &quot;timeoutMs&quot; is a valid integer value.</p>","name":"onScrollLeftChanges"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If it is set to true, it will call the callback function (if any) as soon as this function is called.</p>","name":"fireFirstTime"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If it is set to true, it will call the callback function (if any) every interval even if the horizontal scroll value has not changed from the last call.</p>","name":"fireAlways"},{"type":{"names":["integer"]},"optional":true,"description":"<p>The number of milliseconds between one call to the callback function (if any) and the next one. If not given, it will not perform any interval.</p>","name":"timeoutMs"},{"type":{"names":["function"]},"optional":true,"defaultvalue":false,"description":"<p>If it is set to true, it will return null instead of zero (0) in the case that something goes wrong.</p>","name":"returnNullOnFail"}],"returns":[{"type":{"names":["number","null"]},"description":"<p>Returns the horizontal scroll of the given element (by its identifier). It could return zero (0) if something fails (use &quot;returnNullOnFail&quot; set to true to return null when it fails).</p>"}],"name":"getScrollLeftById","longname":"CB_Elements.getScrollLeftById","memberof":"CB_Elements","scope":"static"},{"comment":"/**\r\n\t * Returns the vertical scroll of a given element (by its identifier) and allows running a callback function (becoming recursive if desired). Any previous interval started by a previous call to this function, for the same \"elementId\", will be stopped.\r\n\t * @function\r\n\t * @param {string|window} [elementId=window] - The identifier of the element whose vertical scroll position we want to get. If a string with the identifier is not given, the unique value allowed is the window object (which is the default value when a non-valid value or no value is given).\r\n\t * @param {CB_Elements.getScrollLeftById_getScrollTopById_ON_SCROLL_CHANGES} [onScrollTopChanges] - The desired callback function. It will be called as an interval if \"timeoutMs\" is a valid integer value.\r\n\t * @param {boolean} [fireFirstTime=false] - If it is set to true, it will call the callback function (if any) as soon as this function is called.\r\n\t * @param {boolean} [fireAlways=false] - If it is set to true, it will call the callback function (if any) every interval even if the vertical scroll value has not changed from the last call.\r\n\t * @param {integer} [timeoutMs] - The number of milliseconds between one call to the callback function (if any) and the next one. If not given, it will not perform any interval.\r\n\t * @param {function} [returnNullOnFail=false] - If it is set to true, it will return null instead of zero (0) in the case that something goes wrong.\r\n\t * @returns {number|null} Returns the vertical scroll of the given element (by its identifier). It could return zero (0) if something fails (use \"returnNullOnFail\" set to true to return null when it fails).\r\n\t */","meta":{"range":[116112,120144],"filename":"CB_Elements.js","lineno":2066,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100078606","name":"CB_Elements.getScrollTopById","type":"FunctionExpression","paramnames":["elementId","onScrollTopChanges","fireFirstTime","fireAlways","timeoutMs","returnNullOnFail","timeout"]},"vars":{"CB_Elements._getScrollTopByIdLastValue[undefined]":"CB_Elements._getScrollTopByIdLastValue[undefined]","CB_Elements._getScrollTopByIdTimeout[undefined]":"CB_Elements._getScrollTopByIdTimeout[undefined]","timeout":"CB_Elements.getScrollTopById~timeout","element":"CB_Elements.getScrollTopById~element","scrollTopValue":"CB_Elements.getScrollTopById~scrollTopValue","scrollRelative":"CB_Elements.getScrollTopById~scrollRelative","CB_Elements._getScrollTopByIdScrollRelativePrevious[undefined]":"CB_Elements._getScrollTopByIdScrollRelativePrevious[undefined]","":null}},"description":"<p>Returns the vertical scroll of a given element (by its identifier) and allows running a callback function (becoming recursive if desired). Any previous interval started by a previous call to this function, for the same &quot;elementId&quot;, will be stopped.</p>","kind":"function","params":[{"type":{"names":["string","window"]},"optional":true,"defaultvalue":"window","description":"<p>The identifier of the element whose vertical scroll position we want to get. If a string with the identifier is not given, the unique value allowed is the window object (which is the default value when a non-valid value or no value is given).</p>","name":"elementId"},{"type":{"names":["CB_Elements.getScrollLeftById_getScrollTopById_ON_SCROLL_CHANGES"]},"optional":true,"description":"<p>The desired callback function. It will be called as an interval if &quot;timeoutMs&quot; is a valid integer value.</p>","name":"onScrollTopChanges"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If it is set to true, it will call the callback function (if any) as soon as this function is called.</p>","name":"fireFirstTime"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If it is set to true, it will call the callback function (if any) every interval even if the vertical scroll value has not changed from the last call.</p>","name":"fireAlways"},{"type":{"names":["integer"]},"optional":true,"description":"<p>The number of milliseconds between one call to the callback function (if any) and the next one. If not given, it will not perform any interval.</p>","name":"timeoutMs"},{"type":{"names":["function"]},"optional":true,"defaultvalue":false,"description":"<p>If it is set to true, it will return null instead of zero (0) in the case that something goes wrong.</p>","name":"returnNullOnFail"}],"returns":[{"type":{"names":["number","null"]},"description":"<p>Returns the vertical scroll of the given element (by its identifier). It could return zero (0) if something fails (use &quot;returnNullOnFail&quot; set to true to return null when it fails).</p>"}],"name":"getScrollTopById","longname":"CB_Elements.getScrollTopById","memberof":"CB_Elements","scope":"static"},{"comment":"/**\r\n * @file Events management. Contains the {@link CB_Events} static class.\r\n * @author Joan Alba Maldonado <workindalian@gmail.com>\r\n */","meta":{"filename":"CB_Events.js","lineno":1,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{}},"name":"CrossBase/general/CB_Events.js","kind":"file","description":"<p>Events management. Contains the {@link CB_Events} static class.</p>","preserveName":true,"author":["Joan Alba Maldonado <workindalian@gmail.com>"],"longname":"CrossBase/general/CB_Events.js","scope":"global"},{"comment":"/**\r\n * Static class to manage events. It will return itself if it is tried to be instantiated.\r\n * @namespace\r\n */","meta":{"range":[268,312],"filename":"CB_Events.js","lineno":11,"columnno":4,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100079106","name":"CB_Events","type":"FunctionExpression"}},"description":"<p>Static class to manage events. It will return itself if it is tried to be instantiated.</p>","kind":"namespace","name":"CB_Events","longname":"CB_Events","scope":"global","params":[]},{"comment":"/**\r\n\t * Gets the right event object for the current web client and normalizes it attaching to it some methods and properties if they were not present (as preventDefault, stopPropagation, target, etc.). The new attached methods and properties may include polyfills, etc.\r\n\t * @function\r\n\t * @param {Event} e - Event object. If not provided, it will use the value of \"event\", \"window.event\", \"Event\" or an empty object (\"{}\").\r\n\t * @returns {Event} Returns the event object normalized.\r\n\t */","meta":{"range":[1261,3590],"filename":"CB_Events.js","lineno":37,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100079148","name":"CB_Events.normalize","type":"FunctionExpression","paramnames":["e"]},"vars":{"e":"CB_Events.normalize~e","e._writable":"CB_Events.normalize~e._writable","e.preventDefault":"CB_Events.normalize~e.preventDefault","":null,"e.stopPropagation":"CB_Events.normalize~e.stopPropagation","e.target":"CB_Events.normalize~e.target"}},"description":"<p>Gets the right event object for the current web client and normalizes it attaching to it some methods and properties if they were not present (as preventDefault, stopPropagation, target, etc.). The new attached methods and properties may include polyfills, etc.</p>","kind":"function","params":[{"type":{"names":["Event"]},"description":"<p>Event object. If not provided, it will use the value of &quot;event&quot;, &quot;window.event&quot;, &quot;Event&quot; or an empty object (&quot;{}&quot;).</p>","name":"e"}],"returns":[{"type":{"names":["Event"]},"description":"<p>Returns the event object normalized.</p>"}],"name":"normalize","longname":"CB_Events.normalize","memberof":"CB_Events","scope":"static"},{"comment":"/**\r\n\t * Returns the type of an event, if any (otherwise, returns an empty string).\r\n\t * @function\r\n\t * @param {Event} e - Event object.\r\n\t * @returns {string}\r\n\t */","meta":{"range":[3768,3938],"filename":"CB_Events.js","lineno":108,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100079471","name":"CB_Events.getType","type":"FunctionExpression","paramnames":["e"]},"vars":{"e":"CB_Events.getType~e"}},"description":"<p>Returns the type of an event, if any (otherwise, returns an empty string).</p>","kind":"function","params":[{"type":{"names":["Event"]},"description":"<p>Event object.</p>","name":"e"}],"returns":[{"type":{"names":["string"]}}],"name":"getType","longname":"CB_Events.getType","memberof":"CB_Events","scope":"static"},{"comment":"/**\r\n\t * Removes an event listener (even if it is not erasable).\r\n\t * @function\r\n\t * @param {Object} eventTarget - The target whose event listener we want to remove.\r\n\t * @param {string} eventName - The name of the event that we want to remove.\r\n\t * @param {function} eventFunction - The function (event listener) of the event that we want to remove.\r\n\t * @param {boolean} [useCapture=false] - Defines whether the event we want to remove was defined to use capture or not.\r\n\t */","meta":{"range":[4431,5326],"filename":"CB_Events.js","lineno":124,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100079508","name":"CB_Events.remove","type":"FunctionExpression","paramnames":["eventTarget","eventName","eventFunction","useCapture"]},"vars":{"useCapture":"CB_Events.remove~useCapture"}},"description":"<p>Removes an event listener (even if it is not erasable).</p>","kind":"function","params":[{"type":{"names":["Object"]},"description":"<p>The target whose event listener we want to remove.</p>","name":"eventTarget"},{"type":{"names":["string"]},"description":"<p>The name of the event that we want to remove.</p>","name":"eventName"},{"type":{"names":["function"]},"description":"<p>The function (event listener) of the event that we want to remove.</p>","name":"eventFunction"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>Defines whether the event we want to remove was defined to use capture or not.</p>","name":"useCapture"}],"name":"remove","longname":"CB_Events.remove","memberof":"CB_Events","scope":"static"},{"comment":"/**\r\n\t * Alias for {@link CB_Events.on}.\r\n\t * @function CB_Events.add\r\n\t * @see {@link CB_Events.on}\r\n\t */","meta":{"filename":"CB_Events.js","lineno":147,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{}},"description":"<p>Alias for {@link CB_Events.on}.</p>","kind":"function","name":"add","see":["{@link CB_Events.on}"],"memberof":"CB_Events","longname":"CB_Events.add","scope":"static"},{"comment":"/**\r\n\t * Adds an event listener.\r\n\t * @function\r\n\t * @param {Object} eventTarget - The target where we want to attach the event listener.\r\n\t * @param {string} eventName - The name of the event that we want to add.\r\n\t * @param {function} eventFunction - The function (event listener) of the event that we want to add.\r\n\t * @param {boolean} [useCapture=false] - Defines whether the event we want to add will use capture or not. This parameter will be effective only if the current client supports the [addEventListener]{@link https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener} method and will be used as its third parameter.\r\n\t * @param {boolean} [keepOldEventFunction=true] - Defines whether we want to keep any possible previous event listener for the same target and event name or not.\r\n\t * @param {boolean} [erasable=true] - Defines whether the event listener will be erasable by {@link CB_Events.removeAll} or {@link CB_Events.removeByName} functions later or not (it will always be erasable if we force delete).\r\n\t * @todo Try to simulate \"useCapture\" when the \"addEventListener\" method is not available.\r\n\t */","meta":{"range":[6598,9780],"filename":"CB_Events.js","lineno":163,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100079598","name":"CB_Events.on","type":"AssignmentExpression","value":"CB_Events.add","paramnames":[]}},"description":"<p>Adds an event listener.</p>","kind":"function","params":[{"type":{"names":["Object"]},"description":"<p>The target where we want to attach the event listener.</p>","name":"eventTarget"},{"type":{"names":["string"]},"description":"<p>The name of the event that we want to add.</p>","name":"eventName"},{"type":{"names":["function"]},"description":"<p>The function (event listener) of the event that we want to add.</p>","name":"eventFunction"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>Defines whether the event we want to add will use capture or not. This parameter will be effective only if the current client supports the [addEventListener]{@link https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener} method and will be used as its third parameter.</p>","name":"useCapture"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":true,"description":"<p>Defines whether we want to keep any possible previous event listener for the same target and event name or not.</p>","name":"keepOldEventFunction"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":true,"description":"<p>Defines whether the event listener will be erasable by {@link CB_Events.removeAll} or {@link CB_Events.removeByName} functions later or not (it will always be erasable if we force delete).</p>","name":"erasable"}],"todo":["Try to simulate \"useCapture\" when the \"addEventListener\" method is not available."],"name":"on","longname":"CB_Events.on","memberof":"CB_Events","scope":"static"},{"comment":"/**\r\n\t * Object that contains an event handler.\r\n\t * @memberof CB_Events\r\n\t * @typedef {Object} CB_Events.EVENT_HANDLER\r\n\t * @property {Object} eventTarget - The target of the event.\r\n\t * @property {string} eventName - The name of the event.\r\n\t * @property {function} eventFunction - The event listener.\r\n\t * @property {boolean} useCapture - Defines whether the event listener was defined to use capture or not.\r\n\t * @property {boolean} erasable - Defines whether the event handler is erasable (without forcing delete) or not.\r\n\t */","meta":{"filename":"CB_Events.js","lineno":253,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{}},"description":"<p>Object that contains an event handler.</p>","memberof":"CB_Events","kind":"typedef","name":"EVENT_HANDLER","type":{"names":["Object"]},"properties":[{"type":{"names":["Object"]},"description":"<p>The target of the event.</p>","name":"eventTarget"},{"type":{"names":["string"]},"description":"<p>The name of the event.</p>","name":"eventName"},{"type":{"names":["function"]},"description":"<p>The event listener.</p>","name":"eventFunction"},{"type":{"names":["boolean"]},"description":"<p>Defines whether the event listener was defined to use capture or not.</p>","name":"useCapture"},{"type":{"names":["boolean"]},"description":"<p>Defines whether the event handler is erasable (without forcing delete) or not.</p>","name":"erasable"}],"longname":"CB_Events.EVENT_HANDLER","scope":"static"},{"comment":"/**\r\n\t * Deletes all handlers for an specific event from a node (target).\r\n\t * @function\r\n\t * @param {Object} eventTarget - The target whose event listeners we want to remove.\r\n\t * @param {string} eventName - The name of the event whose event listeners we want to remove.\r\n\t * @param {boolean} [forceDelete=false] - If it is set to true, it will remove any listener (even the ones which were added as not erasable).\r\n\t */","meta":{"range":[12263,12936],"filename":"CB_Events.js","lineno":312,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100080057","name":"CB_Events.removeByName","type":"FunctionExpression","paramnames":["eventTarget","eventName","forceDelete"]},"vars":{"CB_storedEventsLength":"CB_Events.removeByName~CB_storedEventsLength","x":"CB_Events.removeByName~x"}},"description":"<p>Deletes all handlers for an specific event from a node (target).</p>","kind":"function","params":[{"type":{"names":["Object"]},"description":"<p>The target whose event listeners we want to remove.</p>","name":"eventTarget"},{"type":{"names":["string"]},"description":"<p>The name of the event whose event listeners we want to remove.</p>","name":"eventName"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If it is set to true, it will remove any listener (even the ones which were added as not erasable).</p>","name":"forceDelete"}],"name":"removeByName","longname":"CB_Events.removeByName","memberof":"CB_Events","scope":"static"},{"comment":"/**\r\n\t * Removes all event listeners.\r\n\t * @function\r\n\t * @param {boolean} [forceDelete=false] - If it is set to true, it will remove all event listeners (even the ones which were added as not erasable).\r\n\t */","meta":{"range":[13157,13662],"filename":"CB_Events.js","lineno":339,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100080140","name":"CB_Events.removeAll","type":"FunctionExpression","paramnames":["forceDelete"]},"vars":{"CB_storedEventsLength":"CB_Events.removeAll~CB_storedEventsLength","x":"CB_Events.removeAll~x"}},"description":"<p>Removes all event listeners.</p>","kind":"function","params":[{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If it is set to true, it will remove all event listeners (even the ones which were added as not erasable).</p>","name":"forceDelete"}],"name":"removeAll","longname":"CB_Events.removeAll","memberof":"CB_Events","scope":"static"},{"comment":"/**\r\n\t * Executes all event listeners for an specific event from a node (target).\r\n\t * @function\r\n\t * @param {Object} eventTarget - The target whose event listeners we want to execute. It will be the value of \"this\" for every call to each listener.\r\n\t * @param {string} eventName - The name of the event whose event listeners we want to execute.\r\n\t * @param {Event} [e] - Event object that will be passed as the first and unique parameter for every call to each listener.\r\n\t * @param {*} [returnOnNothingExecuted] - The value that will be returned by the function if nothing is executed.\r\n\t * @returns {boolean} Returns the result of doing the AND operator of all return values of each listener executed. If only one listener is executed, it will return the result of doing the AND operator with its returning value and \"true\". Returns the value of the \"returnOnNothingExecuted\" parameter if nothing is executed.\r\n\t */","meta":{"range":[14596,15399],"filename":"CB_Events.js","lineno":363,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100080210","name":"CB_Events.executeByName","type":"FunctionExpression","paramnames":["eventTarget","eventName","e","returnOnNothingExecuted"]},"vars":{"CB_storedEventsLength":"CB_Events.executeByName~CB_storedEventsLength","returnValue":"CB_Events.executeByName~returnValue","somethingExecuted":"CB_Events.executeByName~somethingExecuted","x":"CB_Events.executeByName~x"}},"description":"<p>Executes all event listeners for an specific event from a node (target).</p>","kind":"function","params":[{"type":{"names":["Object"]},"description":"<p>The target whose event listeners we want to execute. It will be the value of &quot;this&quot; for every call to each listener.</p>","name":"eventTarget"},{"type":{"names":["string"]},"description":"<p>The name of the event whose event listeners we want to execute.</p>","name":"eventName"},{"type":{"names":["Event"]},"optional":true,"description":"<p>Event object that will be passed as the first and unique parameter for every call to each listener.</p>","name":"e"},{"type":{"names":["*"]},"optional":true,"description":"<p>The value that will be returned by the function if nothing is executed.</p>","name":"returnOnNothingExecuted"}],"returns":[{"type":{"names":["boolean"]},"description":"<p>Returns the result of doing the AND operator of all return values of each listener executed. If only one listener is executed, it will return the result of doing the AND operator with its returning value and &quot;true&quot;. Returns the value of the &quot;returnOnNothingExecuted&quot; parameter if nothing is executed.</p>"}],"name":"executeByName","longname":"CB_Events.executeByName","memberof":"CB_Events","scope":"static"},{"comment":"/**\r\n\t * Returns all handlers for an specific event from a node (target), if any.\r\n\t * @function\r\n\t * @param {Object} eventTarget - The target whose event listeners we want to get.\r\n\t * @param {string} eventName - The name of the event whose event listeners we want to get.\r\n\t * @param {boolean} [onlyWithFunction=false] - Defines whether to return only the handlers which have a function as the listener.\r\n\t * @returns {array} Returns an array of {@link CB_Events.EVENT_HANDLER} objects.\r\n\t */","meta":{"range":[15908,16509],"filename":"CB_Events.js","lineno":397,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100080308","name":"CB_Events.getByName","type":"FunctionExpression","paramnames":["eventTarget","eventName","onlyWithFunction"]},"vars":{"found":"CB_Events.getByName~found","CB_storedEventsLength":"CB_Events.getByName~CB_storedEventsLength","x":"CB_Events.getByName~x","found[undefined]":"CB_Events.getByName~found.undefined]"}},"description":"<p>Returns all handlers for an specific event from a node (target), if any.</p>","kind":"function","params":[{"type":{"names":["Object"]},"description":"<p>The target whose event listeners we want to get.</p>","name":"eventTarget"},{"type":{"names":["string"]},"description":"<p>The name of the event whose event listeners we want to get.</p>","name":"eventName"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>Defines whether to return only the handlers which have a function as the listener.</p>","name":"onlyWithFunction"}],"returns":[{"type":{"names":["array"]},"description":"<p>Returns an array of {@link CB_Events.EVENT_HANDLER} objects.</p>"}],"name":"getByName","longname":"CB_Events.getByName","memberof":"CB_Events","scope":"static"},{"comment":"/**\r\n\t * Returns all stored event handlers (if any).\r\n\t * @function\r\n\t * @returns {array} Returns an array of {@link CB_Events.EVENT_HANDLER} objects.\r\n\t */","meta":{"range":[16679,16745],"filename":"CB_Events.js","lineno":425,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100080392","name":"CB_Events.getAll","type":"FunctionExpression","paramnames":[]}},"description":"<p>Returns all stored event handlers (if any).</p>","kind":"function","returns":[{"type":{"names":["array"]},"description":"<p>Returns an array of {@link CB_Events.EVENT_HANDLER} objects.</p>"}],"name":"getAll","longname":"CB_Events.getAll","memberof":"CB_Events","scope":"static"},{"comment":"/**\r\n * @file Miscellaneous code.\r\n * @author Joan Alba Maldonado <workindalian@gmail.com>\r\n * @todo Think about a 'CB_symmetricInterval' function, similar to {@link CB_symmetricCall} but calling the callback function automatically.\r\n */","meta":{"filename":"CB_others.js","lineno":1,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{}},"name":"CrossBase/general/CB_others.js","kind":"file","description":"<p>Miscellaneous code.</p>","preserveName":true,"author":["Joan Alba Maldonado <workindalian@gmail.com>"],"todo":["Think about a 'CB_symmetricInterval' function, similar to {@link CB_symmetricCall} but calling the callback function automatically."],"longname":"CrossBase/general/CB_others.js","scope":"global"},{"comment":"/**\r\n * Callback that is called by {@link CB_symmetricCall}.\r\n * @callback CB_symmetricCall_CALLBACK\r\n * @param {integer} expectedCallingTime - The timestamp in milliseconds that represents when the callback should have been called (it will be more or less accurate depending on many factors as the platform used, code performance, etc.).\r\n */","meta":{"filename":"CB_others.js","lineno":8,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{}},"description":"<p>Callback that is called by {@link CB_symmetricCall}.</p>","kind":"typedef","name":"CB_symmetricCall_CALLBACK","type":{"names":["function"]},"params":[{"type":{"names":["integer"]},"description":"<p>The timestamp in milliseconds that represents when the callback should have been called (it will be more or less accurate depending on many factors as the platform used, code performance, etc.).</p>","name":"expectedCallingTime"}],"longname":"CB_symmetricCall_CALLBACK","scope":"global"},{"comment":"/**\r\n * Calls the given function once through the native [setTimeout]{@link https://developer.mozilla.org/docs/Web/API/WindowOrWorkerGlobalScope/setTimeout} function internally but having in mind the time taken when the function was called previously so it can be called multiple times and respect a symmetric interval between each call (simulates [requestAnimationFrame]{@link https://developer.mozilla.org/en-US/docs/Web/API/window/requestAnimationFrame}).\r\n * @function\r\n * @param {CB_symmetricCall_CALLBACK} callbackFunction - Function that will be called every time, receiving as the unique parameter the time (timestamp in milliseconds returned by the [performance.now]{@link https://developer.mozilla.org/en-US/docs/Web/API/Performance/now} method, which could have been polyfilled automatically by CrossBrowdy) when it is called, being \"this\" the same \"this\" of the scope where it was called.\r\n * @param {integer} timeMs - Milliseconds between one call to the function and the next one. The accuracy will depend on many factors as the platform used, code performance, etc.\r\n * @param {string} [id=callbackFunction.toString()] - String that will identify this symmetric interval. Recommended to avoid possible problems.\r\n * @returns {number|null} Returns a numeric identifier generated by an internal call to the native [setTimeout]{@link https://developer.mozilla.org/docs/Web/API/WindowOrWorkerGlobalScope/setTimeout} function (can be cleared/cancelled with [clearTimeout]{@link https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/clearTimeout}). Returns null if the given \"callbackFunction\" is not a valid function.\r\n */","meta":{"range":[2414,3720],"filename":"CB_others.js","lineno":24,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100080408","name":"CB_symmetricCall","type":"FunctionDeclaration","paramnames":["callbackFunction","timeMs","id"]},"vars":{"now":"CB_symmetricCall~now","id":"CB_symmetricCall~id","nextTime":"CB_symmetricCall~nextTime","CB_symmetricCallLastTimes[undefined]":null,"that":"CB_symmetricCall~that","":null}},"description":"<p>Calls the given function once through the native [setTimeout]{@link https://developer.mozilla.org/docs/Web/API/WindowOrWorkerGlobalScope/setTimeout} function internally but having in mind the time taken when the function was called previously so it can be called multiple times and respect a symmetric interval between each call (simulates [requestAnimationFrame]{@link https://developer.mozilla.org/en-US/docs/Web/API/window/requestAnimationFrame}).</p>","kind":"function","params":[{"type":{"names":["CB_symmetricCall_CALLBACK"]},"description":"<p>Function that will be called every time, receiving as the unique parameter the time (timestamp in milliseconds returned by the [performance.now]{@link https://developer.mozilla.org/en-US/docs/Web/API/Performance/now} method, which could have been polyfilled automatically by CrossBrowdy) when it is called, being &quot;this&quot; the same &quot;this&quot; of the scope where it was called.</p>","name":"callbackFunction"},{"type":{"names":["integer"]},"description":"<p>Milliseconds between one call to the function and the next one. The accuracy will depend on many factors as the platform used, code performance, etc.</p>","name":"timeMs"},{"type":{"names":["string"]},"optional":true,"defaultvalue":"callbackFunction.toString()","description":"<p>String that will identify this symmetric interval. Recommended to avoid possible problems.</p>","name":"id"}],"returns":[{"type":{"names":["number","null"]},"description":"<p>Returns a numeric identifier generated by an internal call to the native [setTimeout]{@link https://developer.mozilla.org/docs/Web/API/WindowOrWorkerGlobalScope/setTimeout} function (can be cleared/cancelled with [clearTimeout]{@link https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/clearTimeout}). Returns null if the given &quot;callbackFunction&quot; is not a valid function.</p>"}],"name":"CB_symmetricCall","longname":"CB_symmetricCall","scope":"global"},{"comment":"/**\r\n * Clears the stored last time used by {@link CB_symmetricCall} for a given symmetric interval identifier.\r\n * @function\r\n * @param {string} id - String that identifies this symmetric interval.\r\n * @returns {boolean|null} Returns null if the given \"id\" is not a valid string. Returns false if the stored time did not exist for the given \"id\" or it was cleared already. Returns true otherwise, after clearing it.\r\n */","meta":{"range":[4152,4418],"filename":"CB_others.js","lineno":72,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\general","code":{"id":"astnode100080500","name":"CB_symmetricCallClear","type":"FunctionDeclaration","paramnames":["id"]},"vars":{"id":"CB_symmetricCallClear~id","CB_symmetricCallLastTimes[undefined]":null}},"description":"<p>Clears the stored last time used by {@link CB_symmetricCall} for a given symmetric interval identifier.</p>","kind":"function","params":[{"type":{"names":["string"]},"description":"<p>String that identifies this symmetric interval.</p>","name":"id"}],"returns":[{"type":{"names":["boolean","null"]},"description":"<p>Returns null if the given &quot;id&quot; is not a valid string. Returns false if the stored time did not exist for the given &quot;id&quot; or it was cleared already. Returns true otherwise, after clearing it.</p>"}],"name":"CB_symmetricCallClear","longname":"CB_symmetricCallClear","scope":"global"},{"comment":"/**\r\n * @file Keyboard management (and other devices which also fire [keyboard events]{@link https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent} as TV remote controls, game consoles' gamepads, etc.). Contains the {@link CB_Keyboard} static class.\r\n * @author Joan Alba Maldonado <workindalian@gmail.com>\r\n */","meta":{"filename":"CB_Keyboard.js","lineno":1,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\input","code":{}},"name":"CrossBase/input/CB_Keyboard.js","kind":"file","description":"<p>Keyboard management (and other devices which also fire [keyboard events]{@link https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent} as TV remote controls, game consoles' gamepads, etc.). Contains the {@link CB_Keyboard} static class.</p>","preserveName":true,"author":["Joan Alba Maldonado <workindalian@gmail.com>"],"longname":"CrossBase/input/CB_Keyboard.js","scope":"global"},{"comment":"/**\r\n * Static class to manage the keyboard and other input devices that generate key codes. It will return itself if it is tried to be instantiated.\r\n * @namespace\r\n */","meta":{"range":[500,548],"filename":"CB_Keyboard.js","lineno":10,"columnno":4,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\input","code":{"id":"astnode100080544","name":"CB_Keyboard","type":"FunctionExpression"}},"description":"<p>Static class to manage the keyboard and other input devices that generate key codes. It will return itself if it is tried to be instantiated.</p>","kind":"namespace","name":"CB_Keyboard","longname":"CB_Keyboard","scope":"global","params":[]},{"comment":"/**\r\n\t Property that keeps extended key codes for different systems and platforms.\r\n\t * @namespace CB_Keyboard.extended\r\n\t */","meta":{"filename":"CB_Keyboard.js","lineno":65,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\input","code":{}},"description":"<p>Property that keeps extended key codes for different systems and platforms.</p>","kind":"namespace","name":"extended","memberof":"CB_Keyboard","longname":"CB_Keyboard.extended","scope":"static"},{"comment":"/**\r\n\t * Smart TV Alliance and virtual keyboard key codes.\r\n\t * @memberof CB_Keyboard.extended\r\n\t * @name VK\r\n\t * @constant\r\n\t * @type {Object}\r\n\t * @default\r\n\t * @todo Consider adding more (found in {@link https://msdn.microsoft.com/en-us/library/windows/desktop/dd375731(v=vs.85).aspx} and {@link http://nehe.gamedev.net/article/msdn_virtualkey_codes/15009/})\r\n\t * @property {number} ENTER - ENTER key.\r\n\t * @property {number} PAUSE - PAUSE key.\r\n\t * @property {number} PAGE_UP - PAGE UP key.\r\n\t * @property {number} PAGE_DOWN - PAGE DOWN key.\r\n\t * @property {number} LEFT - LEFT key.\r\n\t * @property {number} UP - UP key.\r\n\t * @property {number} RIGHT - RIGHT key.\r\n\t * @property {number} DOWN - DOWN key.\r\n\t * @property {number} _0 - 0 (zero) key.\r\n\t * @property {number} _1 - 1 key.\r\n\t * @property {number} _2 - 2 key.\r\n\t * @property {number} _3 - 3 key.\r\n\t * @property {number} _4 - 4 key.\r\n\t * @property {number} _5 - 5 key.\r\n\t * @property {number} _6 - 6 key.\r\n\t * @property {number} _7 - 7 key.\r\n\t * @property {number} _8 - 8 key.\r\n\t * @property {number} _9 - 9 key.\r\n\t * @property {number} 0 - Alias for {@link CB_Keyboard.extended.VK._0}.\r\n\t * @property {number} 1 - Alias for {@link CB_Keyboard.extended.VK._1}.\r\n\t * @property {number} 2 - Alias for {@link CB_Keyboard.extended.VK._2}.\r\n\t * @property {number} 3 - Alias for {@link CB_Keyboard.extended.VK._3}.\r\n\t * @property {number} 4 - Alias for {@link CB_Keyboard.extended.VK._4}.\r\n\t * @property {number} 5 - Alias for {@link CB_Keyboard.extended.VK._5}.\r\n\t * @property {number} 6 - Alias for {@link CB_Keyboard.extended.VK._6}.\r\n\t * @property {number} 7 - Alias for {@link CB_Keyboard.extended.VK._7}.\r\n\t * @property {number} 8 - Alias for {@link CB_Keyboard.extended.VK._8}.\r\n\t * @property {number} 9 - Alias for {@link CB_Keyboard.extended.VK._9}.\r\n\t * @property {number} REWIND - RW (REWIND) key.\r\n\t * @property {number} STOP - STOP key.\r\n\t * @property {number} PLAY - PLAY key.\r\n\t * @property {number} FAST_FWD - FF (FAST FORWARD) key.\r\n\t * @property {number} BACK - BACK key.\r\n\t * @property {number} PREV - PREVIOUS key.\r\n\t * @property {number} NEXT - NEXT key.\r\n\t * @property {number} INFO - INFORMATION key.\r\n\t * @property {number} RED - RED key.\r\n\t * @property {number} GREEN - GREEN key.\r\n\t * @property {number} YELLOW - YELLOW key.\r\n\t * @property {number} BLUE - BLUE key.\r\n\t * @property {number} SPACE - SPACE key.\r\n\t * @property {number} BACK_SPACE - BACK SPACE key.\r\n\t * @property {number} A - A key.\r\n\t * @property {number} B - B key.\r\n\t * @property {number} C - C key.\r\n\t * @property {number} D - D key.\r\n\t * @property {number} E - E key.\r\n\t * @property {number} F - F key.\r\n\t * @property {number} G - G key.\r\n\t * @property {number} H - H key.\r\n\t * @property {number} I - I key.\r\n\t * @property {number} J - J key.\r\n\t * @property {number} K - K key.\r\n\t * @property {number} L - L key.\r\n\t * @property {number} M - M key.\r\n\t * @property {number} N - N key.\r\n\t * @property {number} O - O key.\r\n\t * @property {number} P - P key.\r\n\t * @property {number} Q - Q key.\r\n\t * @property {number} R - R key.\r\n\t * @property {number} S - S key.\r\n\t * @property {number} T - T key.\r\n\t * @property {number} U - U key.\r\n\t * @property {number} V - V key.\r\n\t * @property {number} W - W key.\r\n\t * @property {number} X - X key.\r\n\t * @property {number} Y - Y key.\r\n\t * @property {number} Z - Z key.\r\n\t * @property {number} VOLUME_UP - VOLUME UP key.\r\n\t * @property {number} VOLUME_DOWN - VOLUME DOWN key.\r\n\t * @property {number} MUTE - MUTE key.\r\n\t * @property {number} PLAY_PAUSE - PLAY/PAUSE key.\r\n\t * @property {number} HELP - HELP key.\r\n\t * @property {number} SUBTITLE - SUBTITLE key.\r\n\t * @property {number} SEARCH - SEARCH key.\r\n\t * @property {number} AUDIODESCRIPTION - AUDIODESCRIPTION key.\r\n\t * @property {number} HD - HD (High Definition) key.\r\n\t */","meta":{"filename":"CB_Keyboard.js","lineno":71,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\input","code":{}},"description":"<p>Smart TV Alliance and virtual keyboard key codes.</p>","memberof":"CB_Keyboard.extended","name":"VK","kind":"constant","type":{"names":["Object"]},"todo":["Consider adding more (found in {@link https://msdn.microsoft.com/en-us/library/windows/desktop/dd375731(v=vs.85).aspx} and {@link http://nehe.gamedev.net/article/msdn_virtualkey_codes/15009/})"],"properties":[{"type":{"names":["number"]},"description":"<p>ENTER key.</p>","name":"ENTER"},{"type":{"names":["number"]},"description":"<p>PAUSE key.</p>","name":"PAUSE"},{"type":{"names":["number"]},"description":"<p>PAGE UP key.</p>","name":"PAGE_UP"},{"type":{"names":["number"]},"description":"<p>PAGE DOWN key.</p>","name":"PAGE_DOWN"},{"type":{"names":["number"]},"description":"<p>LEFT key.</p>","name":"LEFT"},{"type":{"names":["number"]},"description":"<p>UP key.</p>","name":"UP"},{"type":{"names":["number"]},"description":"<p>RIGHT key.</p>","name":"RIGHT"},{"type":{"names":["number"]},"description":"<p>DOWN key.</p>","name":"DOWN"},{"type":{"names":["number"]},"description":"<p>0 (zero) key.</p>","name":"_0"},{"type":{"names":["number"]},"description":"<p>1 key.</p>","name":"_1"},{"type":{"names":["number"]},"description":"<p>2 key.</p>","name":"_2"},{"type":{"names":["number"]},"description":"<p>3 key.</p>","name":"_3"},{"type":{"names":["number"]},"description":"<p>4 key.</p>","name":"_4"},{"type":{"names":["number"]},"description":"<p>5 key.</p>","name":"_5"},{"type":{"names":["number"]},"description":"<p>6 key.</p>","name":"_6"},{"type":{"names":["number"]},"description":"<p>7 key.</p>","name":"_7"},{"type":{"names":["number"]},"description":"<p>8 key.</p>","name":"_8"},{"type":{"names":["number"]},"description":"<p>9 key.</p>","name":"_9"},{"type":{"names":["number"]},"description":"<p>Alias for {@link CB_Keyboard.extended.VK._0}.</p>","name":"0"},{"type":{"names":["number"]},"description":"<p>Alias for {@link CB_Keyboard.extended.VK._1}.</p>","name":"1"},{"type":{"names":["number"]},"description":"<p>Alias for {@link CB_Keyboard.extended.VK._2}.</p>","name":"2"},{"type":{"names":["number"]},"description":"<p>Alias for {@link CB_Keyboard.extended.VK._3}.</p>","name":"3"},{"type":{"names":["number"]},"description":"<p>Alias for {@link CB_Keyboard.extended.VK._4}.</p>","name":"4"},{"type":{"names":["number"]},"description":"<p>Alias for {@link CB_Keyboard.extended.VK._5}.</p>","name":"5"},{"type":{"names":["number"]},"description":"<p>Alias for {@link CB_Keyboard.extended.VK._6}.</p>","name":"6"},{"type":{"names":["number"]},"description":"<p>Alias for {@link CB_Keyboard.extended.VK._7}.</p>","name":"7"},{"type":{"names":["number"]},"description":"<p>Alias for {@link CB_Keyboard.extended.VK._8}.</p>","name":"8"},{"type":{"names":["number"]},"description":"<p>Alias for {@link CB_Keyboard.extended.VK._9}.</p>","name":"9"},{"type":{"names":["number"]},"description":"<p>RW (REWIND) key.</p>","name":"REWIND"},{"type":{"names":["number"]},"description":"<p>STOP key.</p>","name":"STOP"},{"type":{"names":["number"]},"description":"<p>PLAY key.</p>","name":"PLAY"},{"type":{"names":["number"]},"description":"<p>FF (FAST FORWARD) key.</p>","name":"FAST_FWD"},{"type":{"names":["number"]},"description":"<p>BACK key.</p>","name":"BACK"},{"type":{"names":["number"]},"description":"<p>PREVIOUS key.</p>","name":"PREV"},{"type":{"names":["number"]},"description":"<p>NEXT key.</p>","name":"NEXT"},{"type":{"names":["number"]},"description":"<p>INFORMATION key.</p>","name":"INFO"},{"type":{"names":["number"]},"description":"<p>RED key.</p>","name":"RED"},{"type":{"names":["number"]},"description":"<p>GREEN key.</p>","name":"GREEN"},{"type":{"names":["number"]},"description":"<p>YELLOW key.</p>","name":"YELLOW"},{"type":{"names":["number"]},"description":"<p>BLUE key.</p>","name":"BLUE"},{"type":{"names":["number"]},"description":"<p>SPACE key.</p>","name":"SPACE"},{"type":{"names":["number"]},"description":"<p>BACK SPACE key.</p>","name":"BACK_SPACE"},{"type":{"names":["number"]},"description":"<p>A key.</p>","name":"A"},{"type":{"names":["number"]},"description":"<p>B key.</p>","name":"B"},{"type":{"names":["number"]},"description":"<p>C key.</p>","name":"C"},{"type":{"names":["number"]},"description":"<p>D key.</p>","name":"D"},{"type":{"names":["number"]},"description":"<p>E key.</p>","name":"E"},{"type":{"names":["number"]},"description":"<p>F key.</p>","name":"F"},{"type":{"names":["number"]},"description":"<p>G key.</p>","name":"G"},{"type":{"names":["number"]},"description":"<p>H key.</p>","name":"H"},{"type":{"names":["number"]},"description":"<p>I key.</p>","name":"I"},{"type":{"names":["number"]},"description":"<p>J key.</p>","name":"J"},{"type":{"names":["number"]},"description":"<p>K key.</p>","name":"K"},{"type":{"names":["number"]},"description":"<p>L key.</p>","name":"L"},{"type":{"names":["number"]},"description":"<p>M key.</p>","name":"M"},{"type":{"names":["number"]},"description":"<p>N key.</p>","name":"N"},{"type":{"names":["number"]},"description":"<p>O key.</p>","name":"O"},{"type":{"names":["number"]},"description":"<p>P key.</p>","name":"P"},{"type":{"names":["number"]},"description":"<p>Q key.</p>","name":"Q"},{"type":{"names":["number"]},"description":"<p>R key.</p>","name":"R"},{"type":{"names":["number"]},"description":"<p>S key.</p>","name":"S"},{"type":{"names":["number"]},"description":"<p>T key.</p>","name":"T"},{"type":{"names":["number"]},"description":"<p>U key.</p>","name":"U"},{"type":{"names":["number"]},"description":"<p>V key.</p>","name":"V"},{"type":{"names":["number"]},"description":"<p>W key.</p>","name":"W"},{"type":{"names":["number"]},"description":"<p>X key.</p>","name":"X"},{"type":{"names":["number"]},"description":"<p>Y key.</p>","name":"Y"},{"type":{"names":["number"]},"description":"<p>Z key.</p>","name":"Z"},{"type":{"names":["number"]},"description":"<p>VOLUME UP key.</p>","name":"VOLUME_UP"},{"type":{"names":["number"]},"description":"<p>VOLUME DOWN key.</p>","name":"VOLUME_DOWN"},{"type":{"names":["number"]},"description":"<p>MUTE key.</p>","name":"MUTE"},{"type":{"names":["number"]},"description":"<p>PLAY/PAUSE key.</p>","name":"PLAY_PAUSE"},{"type":{"names":["number"]},"description":"<p>HELP key.</p>","name":"HELP"},{"type":{"names":["number"]},"description":"<p>SUBTITLE key.</p>","name":"SUBTITLE"},{"type":{"names":["number"]},"description":"<p>SEARCH key.</p>","name":"SEARCH"},{"type":{"names":["number"]},"description":"<p>AUDIODESCRIPTION key.</p>","name":"AUDIODESCRIPTION"},{"type":{"names":["number"]},"description":"<p>HD (High Definition) key.</p>","name":"HD"}],"scope":"static","longname":"CB_Keyboard.extended.VK"},{"comment":"/**\r\n\t * Samsung Tizen TV key codes.\r\n\t * @memberof CB_Keyboard.extended\r\n\t * @name SAMSUNG_TIZEN_TV\r\n\t * @constant\r\n\t * @type {Object}\r\n\t * @default\r\n\t * @property {number} UP - UP button.\r\n\t * @property {number} DOWN - DOWN button.\r\n\t * @property {number} LEFT - LEFT button.\r\n\t * @property {number} RIGHT - RIGHT button.\r\n\t * @property {number} ENTER - ENTER button.\r\n\t * @property {number} MEDIA_PLAY_PAUSE - PLAY/PAUSE MEDIA button.\r\n\t * @property {number} MEDIA_REWIND - RW (REWIND) MEDIA button.\r\n\t * @property {number} MEDIA_FORWARD - FW (FORWARD) MEDIA button.\r\n\t * @property {number} MEDIA_PLAY - PLAY MEDIA button.\r\n\t * @property {number} MEDIA_PAUSE - PAUSE MEDIA button.\r\n\t * @property {number} MEDIA_STOP - STOP MEDIA button.\r\n\t * @property {number} RETURN - RETURN button.\r\n\t * @property {number} MEDIA_RECORD - RECORD MEDIA button.\r\n\t * @property {number} MEDIA_TRACK_PREVIOUS - PREVIOUS TRACK MEDIA button.\r\n\t * @property {number} MEDIA_TRACK_NEXT - NEXT TRACK MEDIA button.\r\n\t * @property {number} VOLUME_UP - VOLUME UP button.\r\n\t * @property {number} VOLUME_DOWN - VOLUME DOWN button.\r\n\t * @property {number} MUTE - MUTE button.\r\n\t * @property {number} _0 - 0 (zero) button.\r\n\t * @property {number} _1 - 1 button.\r\n\t * @property {number} _2 - 2 button.\r\n\t * @property {number} _3 - 3 button.\r\n\t * @property {number} _4 - 4 button.\r\n\t * @property {number} _5 - 5 button.\r\n\t * @property {number} _6 - 6 button.\r\n\t * @property {number} _7 - 7 button.\r\n\t * @property {number} _8 - 8 button.\r\n\t * @property {number} _9 - 9 button.\r\n\t * @property {number} 0 - Alias for {@link CB_Keyboard.extended.SAMSUNG_TIZEN_TV._0}.\r\n\t * @property {number} 1 - Alias for {@link CB_Keyboard.extended.SAMSUNG_TIZEN_TV._1}.\r\n\t * @property {number} 2 - Alias for {@link CB_Keyboard.extended.SAMSUNG_TIZEN_TV._2}.\r\n\t * @property {number} 3 - Alias for {@link CB_Keyboard.extended.SAMSUNG_TIZEN_TV._3}.\r\n\t * @property {number} 4 - Alias for {@link CB_Keyboard.extended.SAMSUNG_TIZEN_TV._4}.\r\n\t * @property {number} 5 - Alias for {@link CB_Keyboard.extended.SAMSUNG_TIZEN_TV._5}.\r\n\t * @property {number} 6 - Alias for {@link CB_Keyboard.extended.SAMSUNG_TIZEN_TV._6}.\r\n\t * @property {number} 7 - Alias for {@link CB_Keyboard.extended.SAMSUNG_TIZEN_TV._7}.\r\n\t * @property {number} 8 - Alias for {@link CB_Keyboard.extended.SAMSUNG_TIZEN_TV._8}.\r\n\t * @property {number} 9 - Alias for {@link CB_Keyboard.extended.SAMSUNG_TIZEN_TV._9}.\r\n\t * @property {number} RED - RED button.\r\n\t * @property {number} GREEN - GREEN button.\r\n\t * @property {number} YELLOW - YELLOW button.\r\n\t * @property {number} BLUE - BLUE button.\r\n\t * @property {number} INFO - INFORMATION button.\r\n\t * @property {number} EXIT - EXIT button.\r\n\t * @property {number} MINUS - MINUS button.\r\n\t * @property {number} CAPTION - CAPTION button.\r\n\t * @property {number} CH_UP - CHANNEL UP button.\r\n\t * @property {number} CH_DOWN - CHANNEL DOWN button.\r\n\t * @property {number} CH_PREVIOUS - PREVIOUS CHANNEL button.\r\n\t * @property {number} CH_LIST - CHANNEL LIST button.\r\n\t * @property {number} E_MANUAL - E-MANUAL button.\r\n\t * @property {number} SEARCH - SEARCH button.\r\n\t * @property {number} _3D - 3D button.\r\n\t * @property {number} 3D - Alias for {@link CB_Keyboard.extended.SAMSUNG_TIZEN_TV._3D}.\r\n\t * @property {number} GUIDE - GUIDE button.\r\n\t * @property {number} SOURCE - SOURCE button.\r\n\t * @property {number} PICTURE_SIZE - PICTURE SIZE button.\r\n\t * @property {number} EXTRA - EXTRA button.\r\n\t * @property {number} SOCCER - SOCCER button.\r\n\t * @property {number} MTS - MTS (Multichannel Television Sound) button.\r\n\t * @property {number} TELETEXT - TELETEXT button.\r\n\t * @property {number} MENU - MENU button.\r\n\t * @property {number} TOOLS - TOOLS button.\r\n\t */","meta":{"filename":"CB_Keyboard.js","lineno":244,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\input","code":{}},"description":"<p>Samsung Tizen TV key codes.</p>","memberof":"CB_Keyboard.extended","name":"SAMSUNG_TIZEN_TV","kind":"constant","type":{"names":["Object"]},"properties":[{"type":{"names":["number"]},"description":"<p>UP button.</p>","name":"UP"},{"type":{"names":["number"]},"description":"<p>DOWN button.</p>","name":"DOWN"},{"type":{"names":["number"]},"description":"<p>LEFT button.</p>","name":"LEFT"},{"type":{"names":["number"]},"description":"<p>RIGHT button.</p>","name":"RIGHT"},{"type":{"names":["number"]},"description":"<p>ENTER button.</p>","name":"ENTER"},{"type":{"names":["number"]},"description":"<p>PLAY/PAUSE MEDIA button.</p>","name":"MEDIA_PLAY_PAUSE"},{"type":{"names":["number"]},"description":"<p>RW (REWIND) MEDIA button.</p>","name":"MEDIA_REWIND"},{"type":{"names":["number"]},"description":"<p>FW (FORWARD) MEDIA button.</p>","name":"MEDIA_FORWARD"},{"type":{"names":["number"]},"description":"<p>PLAY MEDIA button.</p>","name":"MEDIA_PLAY"},{"type":{"names":["number"]},"description":"<p>PAUSE MEDIA button.</p>","name":"MEDIA_PAUSE"},{"type":{"names":["number"]},"description":"<p>STOP MEDIA button.</p>","name":"MEDIA_STOP"},{"type":{"names":["number"]},"description":"<p>RETURN button.</p>","name":"RETURN"},{"type":{"names":["number"]},"description":"<p>RECORD MEDIA button.</p>","name":"MEDIA_RECORD"},{"type":{"names":["number"]},"description":"<p>PREVIOUS TRACK MEDIA button.</p>","name":"MEDIA_TRACK_PREVIOUS"},{"type":{"names":["number"]},"description":"<p>NEXT TRACK MEDIA button.</p>","name":"MEDIA_TRACK_NEXT"},{"type":{"names":["number"]},"description":"<p>VOLUME UP button.</p>","name":"VOLUME_UP"},{"type":{"names":["number"]},"description":"<p>VOLUME DOWN button.</p>","name":"VOLUME_DOWN"},{"type":{"names":["number"]},"description":"<p>MUTE button.</p>","name":"MUTE"},{"type":{"names":["number"]},"description":"<p>0 (zero) button.</p>","name":"_0"},{"type":{"names":["number"]},"description":"<p>1 button.</p>","name":"_1"},{"type":{"names":["number"]},"description":"<p>2 button.</p>","name":"_2"},{"type":{"names":["number"]},"description":"<p>3 button.</p>","name":"_3"},{"type":{"names":["number"]},"description":"<p>4 button.</p>","name":"_4"},{"type":{"names":["number"]},"description":"<p>5 button.</p>","name":"_5"},{"type":{"names":["number"]},"description":"<p>6 button.</p>","name":"_6"},{"type":{"names":["number"]},"description":"<p>7 button.</p>","name":"_7"},{"type":{"names":["number"]},"description":"<p>8 button.</p>","name":"_8"},{"type":{"names":["number"]},"description":"<p>9 button.</p>","name":"_9"},{"type":{"names":["number"]},"description":"<p>Alias for {@link CB_Keyboard.extended.SAMSUNG_TIZEN_TV._0}.</p>","name":"0"},{"type":{"names":["number"]},"description":"<p>Alias for {@link CB_Keyboard.extended.SAMSUNG_TIZEN_TV._1}.</p>","name":"1"},{"type":{"names":["number"]},"description":"<p>Alias for {@link CB_Keyboard.extended.SAMSUNG_TIZEN_TV._2}.</p>","name":"2"},{"type":{"names":["number"]},"description":"<p>Alias for {@link CB_Keyboard.extended.SAMSUNG_TIZEN_TV._3}.</p>","name":"3"},{"type":{"names":["number"]},"description":"<p>Alias for {@link CB_Keyboard.extended.SAMSUNG_TIZEN_TV._4}.</p>","name":"4"},{"type":{"names":["number"]},"description":"<p>Alias for {@link CB_Keyboard.extended.SAMSUNG_TIZEN_TV._5}.</p>","name":"5"},{"type":{"names":["number"]},"description":"<p>Alias for {@link CB_Keyboard.extended.SAMSUNG_TIZEN_TV._6}.</p>","name":"6"},{"type":{"names":["number"]},"description":"<p>Alias for {@link CB_Keyboard.extended.SAMSUNG_TIZEN_TV._7}.</p>","name":"7"},{"type":{"names":["number"]},"description":"<p>Alias for {@link CB_Keyboard.extended.SAMSUNG_TIZEN_TV._8}.</p>","name":"8"},{"type":{"names":["number"]},"description":"<p>Alias for {@link CB_Keyboard.extended.SAMSUNG_TIZEN_TV._9}.</p>","name":"9"},{"type":{"names":["number"]},"description":"<p>RED button.</p>","name":"RED"},{"type":{"names":["number"]},"description":"<p>GREEN button.</p>","name":"GREEN"},{"type":{"names":["number"]},"description":"<p>YELLOW button.</p>","name":"YELLOW"},{"type":{"names":["number"]},"description":"<p>BLUE button.</p>","name":"BLUE"},{"type":{"names":["number"]},"description":"<p>INFORMATION button.</p>","name":"INFO"},{"type":{"names":["number"]},"description":"<p>EXIT button.</p>","name":"EXIT"},{"type":{"names":["number"]},"description":"<p>MINUS button.</p>","name":"MINUS"},{"type":{"names":["number"]},"description":"<p>CAPTION button.</p>","name":"CAPTION"},{"type":{"names":["number"]},"description":"<p>CHANNEL UP button.</p>","name":"CH_UP"},{"type":{"names":["number"]},"description":"<p>CHANNEL DOWN button.</p>","name":"CH_DOWN"},{"type":{"names":["number"]},"description":"<p>PREVIOUS CHANNEL button.</p>","name":"CH_PREVIOUS"},{"type":{"names":["number"]},"description":"<p>CHANNEL LIST button.</p>","name":"CH_LIST"},{"type":{"names":["number"]},"description":"<p>E-MANUAL button.</p>","name":"E_MANUAL"},{"type":{"names":["number"]},"description":"<p>SEARCH button.</p>","name":"SEARCH"},{"type":{"names":["number"]},"description":"<p>3D button.</p>","name":"_3D"},{"type":{"names":["number"]},"description":"<p>Alias for {@link CB_Keyboard.extended.SAMSUNG_TIZEN_TV._3D}.</p>","name":"3D"},{"type":{"names":["number"]},"description":"<p>GUIDE button.</p>","name":"GUIDE"},{"type":{"names":["number"]},"description":"<p>SOURCE button.</p>","name":"SOURCE"},{"type":{"names":["number"]},"description":"<p>PICTURE SIZE button.</p>","name":"PICTURE_SIZE"},{"type":{"names":["number"]},"description":"<p>EXTRA button.</p>","name":"EXTRA"},{"type":{"names":["number"]},"description":"<p>SOCCER button.</p>","name":"SOCCER"},{"type":{"names":["number"]},"description":"<p>MTS (Multichannel Television Sound) button.</p>","name":"MTS"},{"type":{"names":["number"]},"description":"<p>TELETEXT button.</p>","name":"TELETEXT"},{"type":{"names":["number"]},"description":"<p>MENU button.</p>","name":"MENU"},{"type":{"names":["number"]},"description":"<p>TOOLS button.</p>","name":"TOOLS"}],"scope":"static","longname":"CB_Keyboard.extended.SAMSUNG_TIZEN_TV"},{"comment":"/**\r\n\t * Samsung TV key codes.\r\n\t * @memberof CB_Keyboard.extended\r\n\t * @name SAMSUNG_TV\r\n\t * @constant\r\n\t * @type {Object}\r\n\t * @default\r\n\t * @property {number} TOOLS - TOOLS button.\r\n\t * @property {number} EMODE - EMODE button.\r\n\t * @property {number} DMA - DMA (Digital Media Adapter) button.\r\n\t * @property {number} SOURCE - SOURCE button.\r\n\t * @property {number} CHDOWN - CHANNEL DOWN button.\r\n\t * @property {number} CHUP - CHANNEL UP button.\r\n\t * @property {number} PANEL_CH_UP - CHANNEL UP PANEL button #1.\r\n\t * @property {number} PANEL_CH_DOWN - CHANNEL DOWN PANEL button #1.\r\n\t * @property {number} PANEL_CHUP - CHANNEL UP PANEL button #2.\r\n\t * @property {number} PANEL_CHDOWN - CHANNEL DOWN PANEL button #2.\r\n\t * @property {number} PIP_CHUP - CHANNEL UP PIP (Picture In Picture) button.\r\n\t * @property {number} PIP_CHDOWN - CHANNEL DOWN PIP (Picture In Picture) button.\r\n\t * @property {number} PRECH - PRE-CHANNEL (PREVIOUS CHANNEL) button.\r\n\t * @property {number} FAVCH - FAVOURITE CHANNEL button.\r\n\t * @property {number} CHLIST - CHANNEL LIST button.\r\n\t * @property {number} TTX_MIX - TELETEXT button.\r\n\t * @property {number} GUIDE - GUIDE button.\r\n\t * @property {number} ASPECT - ASPECT button.\r\n\t * @property {number} DOLBY_SRR - DOLBY SRR (SuRroundRight) button.\r\n\t * @property {number} MTS - MTS (Multichannel Television Sound) button.\r\n\t * @property {number} WHEELDOWN - WHEEL DOWN #1.\r\n\t * @property {number} WHEEL_DOWN - WHEEL DOWN #2.\r\n\t * @property {number} WHEELUP - WHEEL UP #1.\r\n\t * @property {number} WHEEL_UP - WHEEL UP #2.\r\n\t * @property {number} WHEELLEFT - WHEEL LEFT #1.\r\n\t * @property {number} WHEEL_LEFT - WHEEL LEFT #2.\r\n\t * @property {number} WHEELRIGHT - WHEEL RIGHT #1.\r\n\t * @property {number} WHEEL_RIGHT - WHEEL RIGHT #2.\r\n\t * @property {number} SMART - SMART TV button.\r\n\t * @property {number} EXIT - EXIT button.\r\n\t * @property {number} POWER - POWER button.\r\n\t * @property {number} PANEL_POWER - POWER PANEL button.\r\n\t * @property {number} POWEROFF - POWER OFF button.\r\n\t * @property {number} POWERON - POWER ON button.\r\n\t * @property {number} CONTENT - CONTENT button.\r\n\t * @property {number} WLINK - WLINK (Wiselink) button #1.\r\n\t * @property {number} W_LINK - WLINK (Wiselink) button #2.\r\n\t * @property {number} EMPTY - EMPTY button.\r\n\t * @property {number} CC - CC (Closed Captioning) button.\r\n\t * @property {number} REC - REC button.\r\n\t * @property {number} VOLUP - VOLUME UP button #1.\r\n\t * @property {number} VOL_UP - VOLUME UP button #2.\r\n\t * @property {number} VOLDOWN - VOLUME DOWN button #1.\r\n\t * @property {number} VOL_DOWN - VOLUME DOWN button #2.\r\n\t * @property {number} PANEL_VOLUP - PANEL VOLUME UP button #1.\r\n\t * @property {number} PANEL_VOL_UP - PANEL VOLUME UP button #2.\r\n\t * @property {number} PANEL_VOLDOW - PANEL VOLUME DOWN button #1.\r\n\t * @property {number} PANEL_VOLDOWN - PANEL VOLUME DOWN button #2.\r\n\t * @property {number} PANEL_VOL_DOWN - PANEL VOLUME DOWN button #3.\r\n\t * @property {number} MUTE - MUTE button.\r\n\t * @property {number} INFO - INFORMATION button.\r\n\t * @property {number} INFOLINK - INFOLINK button.\r\n\t * @property {number} MENU - MENU button.\r\n\t * @property {number} SUBTITLE - SUBTITLE button #1.\r\n\t * @property {number} SUB_TITLE - SUBTITLE button #2.\r\n\t * @property {number} PANEL_SOURCE - SOURCE PANEL button.\r\n\t * @property {number} _0 - 0 (zero) button.\r\n\t * @property {number} _1 - 1 button.\r\n\t * @property {number} _2 - 2 button.\r\n\t * @property {number} _3 - 3 button.\r\n\t * @property {number} _4 - 4 button.\r\n\t * @property {number} _5 - 5 button.\r\n\t * @property {number} _6 - 6 button.\r\n\t * @property {number} _7 - 7 button.\r\n\t * @property {number} _8 - 8 button.\r\n\t * @property {number} _9 - 9 button.\r\n\t * @property {number} _10 - 10 button.\r\n\t * @property {number} _11 - 11 button.\r\n\t * @property {number} _12 - 12 button.\r\n\t * @property {number} 0 - Alias for {@link CB_Keyboard.extended.SAMSUNG_TV._0}.\r\n\t * @property {number} 1 - Alias for {@link CB_Keyboard.extended.SAMSUNG_TV._1}.\r\n\t * @property {number} 2 - Alias for {@link CB_Keyboard.extended.SAMSUNG_TV._2}.\r\n\t * @property {number} 3 - Alias for {@link CB_Keyboard.extended.SAMSUNG_TV._3}.\r\n\t * @property {number} 4 - Alias for {@link CB_Keyboard.extended.SAMSUNG_TV._4}.\r\n\t * @property {number} 5 - Alias for {@link CB_Keyboard.extended.SAMSUNG_TV._5}.\r\n\t * @property {number} 6 - Alias for {@link CB_Keyboard.extended.SAMSUNG_TV._6}.\r\n\t * @property {number} 7 - Alias for {@link CB_Keyboard.extended.SAMSUNG_TV._7}.\r\n\t * @property {number} 8 - Alias for {@link CB_Keyboard.extended.SAMSUNG_TV._8}.\r\n\t * @property {number} 9 - Alias for {@link CB_Keyboard.extended.SAMSUNG_TV._9}.\r\n\t * @property {number} 10 - Alias for {@link CB_Keyboard.extended.SAMSUNG_TV._10}.\r\n\t * @property {number} 11 - Alias for {@link CB_Keyboard.extended.SAMSUNG_TV._11}.\r\n\t * @property {number} 12 - Alias for {@link CB_Keyboard.extended.SAMSUNG_TV._12}.\r\n\t * @property {number} RED - RED button.\r\n\t * @property {number} GREEN - GREEN button.\r\n\t * @property {number} YELLOW - YELLOW button.\r\n\t * @property {number} BLUE - BLUE button.\r\n\t * @property {number} CYAN - CYAN button.\r\n\t * @property {number} RW - RW (REWIND) button #1.\r\n\t * @property {number} REWIND - RW (REWIND) button #2.\r\n\t * @property {number} REWIND_ - RW (REWIND) button #3.\r\n\t * @property {number} FF - FF (FAST FORWARD) button #1.\r\n\t * @property {number} FF_ - FF (FAST FORWARD) button #2.\r\n\t * @property {number} PAUSE - PAUSE button.\r\n\t * @property {number} PLAY - PLAY button.\r\n\t * @property {number} STOP - STOP button.\r\n\t * @property {number} SEARCH - SEARCH button.\r\n\t * @property {number} UP - UP button.\r\n\t * @property {number} DOWN - DOWN button.\r\n\t * @property {number} LEFT - LEFT button.\r\n\t * @property {number} RIGHT - RIGHT button.\r\n\t * @property {number} CH_UP - CHANNEL UP button.\r\n\t * @property {number} CH_DOWN - CHANNEL DOWN button.\r\n\t * @property {number} DISC_MENU - DISC MENU button.\r\n\t * @property {number} _3D - 3D button.\r\n\t * @property {number} 3D - Alias for {@link CB_Keyboard.extended.SAMSUNG_TV._3D}.\r\n\t * @property {number} PIP_ONOFF - PIP (Picture In Picture) ON/OFF button.\r\n\t * @property {number} AD - AD (Audio Description) button.\r\n\t * @property {number} PMODE - PICTURE MODE button.\r\n\t * @property {number} SMODE - SOUND MODE button.\r\n\t * @property {number} SLEEP - SLEEP button.\r\n\t * @property {number} D_AUDIO - DIGITAL AUDIO button.\r\n\t * @property {number} D_FRONT_PLAY - DIGITAL FRONT PLAY button.\r\n\t * @property {number} D_VIEW_MODE - DIGITAL VIEW MODE button.\r\n\t * @property {number} STEP - STEP button.\r\n\t * @property {number} CALLER_ID - CALLED ID button.\r\n\t * @property {number} ANTENNA - ANTENNA button.\r\n\t * @property {number} ZOOM_MOVE - MOVE ZOOM button.\r\n\t * @property {number} ZOOM1 - ZOOM 1 button.\r\n\t * @property {number} ZOOM2 - ZOOM 2 button.\r\n\t * @property {number} ZOOM_IN - ZOOM IN button.\r\n\t * @property {number} ZOOM_OUT - ZOOM OUT button.\r\n\t * @property {number} RETURN - RETURN button.\r\n\t * @property {number} PANEL_RETURN - RETURN PANEL button.\r\n\t * @property {number} ENTER - ENTER button.\r\n\t * @property {number} PANEL_ENTER - ENTER PANEL button.\r\n\t * @property {number} PANEL_MENU - MENU PANEL button.\r\n\t * @property {number} ADDDEL - ADD/DEL button.\r\n\t * @property {number} PIP_SWAP - PIP (Picture In Picture) SWAP button.\r\n\t * @property {number} PLUS100 - SAMSUNG AUTO MOTION PLUS 100 HZ button.\r\n\t * @property {number} CAPTION - CAPTION button.\r\n\t * @property {number} PICTURE_SIZE - PICTURE SIZE button.\r\n\t * @property {number} PIP_SIZE - PIP (Picture In Picture) SIZE button.\r\n\t * @property {number} MAGIC_CHANNEL - MAGIC CHANNEL button.\r\n\t * @property {number} PIP_SCAN - PIP (Picture In Picture) SCAN button.\r\n\t * @property {number} DEVICE_CONNECT - DEVICE CONNECT button.\r\n\t * @property {number} HELP - HELP button.\r\n\t * @property {number} CONVERGENCE - CONVERGENCE button.\r\n\t * @property {number} AUTO_PROGRAM - AUTO PROGRAM button.\r\n\t * @property {number} FACTORY - FACTORY button.\r\n\t * @property {number} _3SPEED - 3SPEED button.\r\n\t * @property {number} 3SPEED - Alias for {@link CB_Keyboard.extended.SAMSUNG_TV._3SPEED}.\r\n\t * @property {number} RSURF - R.SURF button.\r\n\t * @property {number} TOPMENU - TOP MENU button.\r\n\t * @property {number} GAME - GAME button.\r\n\t * @property {number} QUICK_REPLAY - QUICK REPLAY button.\r\n\t * @property {number} STILL_PICTURE - STILL PICTURE button.\r\n\t * @property {number} DTV - DTV (Digital Television) button.\r\n\t * @property {number} INSTANT_REPLAY - INSTANT REPLAY button.\r\n\t * @property {number} LINK - LINK button.\r\n\t * @property {number} ANGLE - ANGLE button.\r\n\t * @property {number} RESERVED1 - RESERVED1 button.\r\n\t * @property {number} RESERVED5 - RESERVED5 button.\r\n\t * @property {number} PROGRAM - PROGRAM button.\r\n\t * @property {number} BOOKMARK - BOOKMARK button.\r\n\t * @property {number} PRINT - PRINT button.\r\n\t * @property {number} CLEAR - CLEAR button.\r\n\t * @property {number} VCHIP - V-CHIP button.\r\n\t * @property {number} REPEAT - REPEAT button.\r\n\t * @property {number} DOOR - DOOR button.\r\n\t * @property {number} OPEN - OPEN button.\r\n\t * @property {number} TURBO - TURBO button.\r\n\t * @property {number} DVR_MENU - DVR (Digital Video Recorder) MENU button.\r\n\t * @property {number} TTX_SUBFACE - Teletext Subface button.\r\n\t * @property {number} CH_LIST - CHANNEL LIST button.\r\n\t * @property {number} DNIe - DNIe (Digital Natural Image Engine) button.\r\n\t * @property {number} DNSe - DNSe (Digital Natural Sound Engine) button.\r\n\t * @property {number} SRS - SRS (Sound Retrieval System) button.\r\n\t * @property {number} CONVERT_AUDIO_MAINSUB - CONVERT AUDIO MAIN/SUB button.\r\n\t * @property {number} MDC - MDC button.\r\n\t * @property {number} SEFFECT - SOUND EFFECT button.\r\n\t * @property {number} DVR - DVR (Digital Video Recorder) button.\r\n\t * @property {number} DTV_SIGNAL - DTV (Digital Television) SIGNAL button.\r\n\t * @property {number} LIVE - LIVE button.\r\n\t * @property {number} PERPECT_FOCUS - PERPECT FOCUS button.\r\n\t * @property {number} HOME - HOME button.\r\n\t * @property {number} ESAVING - ENERGY SAVING button.\r\n\t * @property {number} CONTENTS - CONTENTS button.\r\n\t * @property {number} SCALE - SCALE button.\r\n\t * @property {number} CLOCK_DISPLAY - CLOCK DISPLAY button.\r\n\t * @property {number} SETUP_CLOCK_TIMER - SETUP CLOCK TIMER button.\r\n\t * @property {number} MAGIC_BRIGHT - MAGIC BRIGHT button.\r\n\t * @property {number} FM_RADIO - FM RADIO button.\r\n\t * @property {number} VCR_MODE - VCR MODE button.\r\n\t * @property {number} CATV_MODE - CATV (Community Antenna Television) MODE button.\r\n\t * @property {number} DSS_MODE - DSS MODE button.\r\n\t * @property {number} DVD_MODE - DVD MODE button.\r\n\t * @property {number} STB_MODE - STB (Set-Top Box) MODE button.\r\n\t * @property {number} PCMODE - PC MODE button.\r\n\t * @property {number} TV_MODE - TV MODE button.\r\n\t * @property {number} TV - TV button.\r\n\t * @property {number} AV1 - AV #1 button.\r\n\t * @property {number} AV2 - AV #2 button.\r\n\t * @property {number} AV3 - AV #3 button.\r\n\t * @property {number} SVIDEO1 - S-VIDEO (Separated-Video) #1 button.\r\n\t * @property {number} SVIDEO2 - S-VIDEO (Separated-Video) #2 button.\r\n\t * @property {number} SVIDEO3 - S-VIDEO (Separated-Video) #3 button.\r\n\t * @property {number} COMPONENT1 - COMPONENT #1 button.\r\n\t * @property {number} COMPONENT2 - COMPONENT #2 button.\r\n\t * @property {number} DVI - DVI (Digital Visual Interface) button.\r\n\t * @property {number} HDMI - HDMI button.\r\n\t * @property {number} HDMI1 - HDMI #1 button.\r\n\t * @property {number} HDMI2 - HDMI #2 button.\r\n\t * @property {number} HDMI3 - HDMI #3 button.\r\n\t * @property {number} HDMI4 - HDMI #4 button.\r\n\t * @property {number} DTV_LINK - DTVLINK (DIGITAL TELEVISION LINK) button.\r\n\t * @property {number} APP_LIST - APP LIST button.\r\n\t * @property {number} BACK_MHP - BACK MHP (Multimedia Home Platform) button.\r\n\t * @property {number} ALT_MHP - ALTERNATE MHP (Multimedia Home Platform) button.\r\n\t * @property {number} RSS - RSS button.\r\n\t * @property {number} ENTERTAINMENT - ENTERTAINMENT button.\r\n\t * @property {number} ID_INPUT - ID INPUT button.\r\n\t * @property {number} ID_SETUP - ID SETUP button.\r\n\t * @property {number} ANYNET - ANYNET button.\r\n\t * @property {number} ANYVIEW - ANYVIEW button.\r\n\t * @property {number} MS - MS button.\r\n\t * @property {number} MORE - MORE button.\r\n\t * @property {number} _4_3 - 4:3 button.\r\n\t * @property {number} 4_3 - Alias for {@link CB_Keyboard.extended.SAMSUNG_TV._4_3}.\r\n\t * @property {number} _16_9 - 16:9 button.\r\n\t * @property {number} 16_9 - Alias for {@link CB_Keyboard.extended.SAMSUNG_TV._16_9}.\r\n\t * @property {number} PANORAMA - PICTURE MODE PANORAMA button.\r\n\t * @property {number} DYNAMIC - PICTURE MODE DYNAMIC button.\r\n\t * @property {number} STANDARD - PICTURE MODE STANDARD button.\r\n\t * @property {number} MOVIE1 - PICTURE MODE MOVIE1 button.\r\n\t * @property {number} CUSTOM - PICTURE MODE CUSTOM button.\r\n\t * @property {number} AUTO_ARC_RESET - AUTO ARC (Audio Return Channel) RESET button.\r\n\t * @property {number} AUTO_ARC_LNA_ON - AUTO ARC (Audio Return Channel) LNA (Low Noise Amplifier) ON button.\r\n\t * @property {number} AUTO_ARC_LNA_OFF - AUTO ARC (Audio Return Channel) LNA (Low Noise Amplifier) OFF button.\r\n\t * @property {number} AUTO_ARC_ANYNET_MODE_OK - AUTO ARC (Audio Return Channel) ANYNET MODE OK button.\r\n\t * @property {number} AUTO_ARC_ANYNET_AUTO_START - AUTO ARC (Audio Return Channel) ANYNET AUTO START button.\r\n\t * @property {number} AUTO_ARC_CAPTION_ON - AUTO ARC (Audio Return Channel) CAPTION ON button.\r\n\t * @property {number} AUTO_ARC_CAPTION_OFF - AUTO ARC (Audio Return Channel) CAPTION OFF button.\r\n\t * @property {number} AUTO_ARC_PIP_DOUBLE - AUTO ARC (Audio Return Channel) PIP (Picture In Picture) DOUBLE button.\r\n\t * @property {number} AUTO_ARC_PIP_LARGE - AUTO ARC (Audio Return Channel) PIP (Picture In Picture) LARGE button.\r\n\t * @property {number} AUTO_ARC_PIP_SMALL - AUTO ARC (Audio Return Channel) PIP (Picture In Picture) SMALL button.\r\n\t * @property {number} AUTO_ARC_PIP_WIDE - AUTO ARC (Audio Return Channel) PIP (Picture In Picture) WIDE button.\r\n\t * @property {number} AUTO_ARC_PIP_LEFT_TOP - AUTO ARC (Audio Return Channel) PIP (Picture In Picture) LEFT TOP button.\r\n\t * @property {number} AUTO_ARC_PIP_RIGHT_TOP - AUTO ARC (Audio Return Channel) PIP (Picture In Picture) RIGHT TOP button.\r\n\t * @property {number} AUTO_ARC_PIP_LEFT_BOTTOM - AUTO ARC (Audio Return Channel) PIP (Picture In Picture) LEFT BOTTOM button.\r\n\t * @property {number} AUTO_ARC_PIP_RIGHT_BOTTOM - AUTO ARC (Audio Return Channel) PIP (Picture In Picture) RIGHT BOTTOM button.\r\n\t * @property {number} AUTO_ARC_PIP_CH_CHANGE - AUTO ARC (Audio Return Channel) PIP (Picture In Picture) CHANNEL CHANGE button.\r\n\t * @property {number} AUTO_ARC_PIP_SOURCE_CHANGE - AUTO ARC (Audio Return Channel) PIP (Picture In Picture) SOURCE CHANGE button.\r\n\t * @property {number} AUTO_ARC_AUTOCOLOR_SUCCESS - AUTO ARC (Audio Return Channel) AUTOCOLOR SUCCESS button.\r\n\t * @property {number} AUTO_ARC_AUTOCOLOR_FAIL - AUTO ARC (Audio Return Channel) AUTOCOLOR FAIL button.\r\n\t * @property {number} AUTO_ARC_C_FORCE_AGING - AUTO ARC (Audio Return Channel) C-FORCE AGING button.\r\n\t * @property {number} AUTO_ARC_USBJACK_INSPECT - AUTO ARC (Audio Return Channel) USB JACK INSPECT button.\r\n\t * @property {number} AUTO_ARC_JACK_IDENT - AUTO ARC (Audio Return Channel) JACK IDENT button.\r\n\t * @property {number} AUTO_ARC_CAPTION_KOR - AUTO ARC (Audio Return Channel) CAPTION KOREAN button.\r\n\t * @property {number} AUTO_ARC_CAPTION_ENG - AUTO ARC (Audio Return Channel) CAPTION ENGLISH button.\r\n\t * @property {number} AUTO_ARC_ANTENNA_AIR - AUTO ARC (Audio Return Channel) ANTENNA AIR button.\r\n\t * @property {number} AUTO_ARC_ANTENNA_CABLE - AUTO ARC (Audio Return Channel) ANTENNA CABLE button.\r\n\t * @property {number} AUTO_ARC_ANTENNA_SATELLITE - AUTO ARC (Audio Return Channel) ANTENNA SATELLITE button.\r\n\t * @property {number} AUTO_FORMAT - AUTO FORMAT button.\r\n * @property {number} DNET - D-NET button.\r\n\t * @property {number} NINE_SEPARATE - NINE SEPARATE button.\r\n\t * @property {number} MIC - MIC (MICROPHONE) button.\r\n\t * @property {number} EXT1 - EXT1 button.\r\n\t * @property {number} EXT2 - EXT2 button.\r\n\t * @property {number} EXT3 - EXT3 button.\r\n\t * @property {number} EXT4 - EXT4 button.\r\n\t * @property {number} EXT5 - EXT5 button.\r\n\t * @property {number} EXT6 - EXT6 button.\r\n\t * @property {number} EXT7 - EXT7 button.\r\n\t * @property {number} EXT8 - EXT8 button.\r\n\t * @property {number} EXT9 - EXT9 button.\r\n\t * @property {number} EXT10 - EXT10 button.\r\n\t * @property {number} EXT11 - EXT11 button.\r\n\t * @property {number} EXT12 - EXT12 button.\r\n\t * @property {number} EXT13 - EXT13 button.\r\n\t * @property {number} EXT14 - EXT14 button.\r\n\t * @property {number} EXT15 - EXT15 button.\r\n\t * @property {number} EXT16 - EXT16 button.\r\n\t * @property {number} EXT17 - EXT17 button.\r\n\t * @property {number} EXT18 - EXT18 button.\r\n\t * @property {number} EXT19 - EXT19 button.\r\n\t * @property {number} EXT20 - EXT20 button.\r\n\t * @property {number} EXT21 - EXT21 button.\r\n\t * @property {number} EXT22 - EXT22 button.\r\n\t * @property {number} EXT23 - EXT23 button.\r\n\t * @property {number} EXT24 - EXT24 button.\r\n\t * @property {number} EXT25 - EXT25 button.\r\n\t * @property {number} EXT26 - EXT26 button.\r\n\t * @property {number} EXT27 - EXT27 button.\r\n\t * @property {number} EXT28 - EXT28 button.\r\n\t * @property {number} EXT29 - EXT29 button.\r\n\t * @property {number} EXT30 - EXT30 button.\r\n\t * @property {number} EXT31 - EXT31 button.\r\n\t * @property {number} EXT32 - EXT32 button.\r\n\t * @property {number} EXT33 - EXT33 button.\r\n\t * @property {number} EXT34 - EXT34 button.\r\n\t * @property {number} EXT35 - EXT35 button.\r\n\t * @property {number} EXT36 - EXT36 button.\r\n\t * @property {number} EXT37 - EXT37 button.\r\n\t * @property {number} EXT38 - EXT38 button.\r\n\t * @property {number} EXT39 - EXT39 button.\r\n\t * @property {number} EXT40 - EXT40 button.\r\n\t * @property {number} EXT41 - EXT41 button.\r\n\t */","meta":{"filename":"CB_Keyboard.js","lineno":384,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\input","code":{}},"description":"<p>Samsung TV key codes.</p>","memberof":"CB_Keyboard.extended","name":"SAMSUNG_TV","kind":"constant","type":{"names":["Object"]},"properties":[{"type":{"names":["number"]},"description":"<p>TOOLS button.</p>","name":"TOOLS"},{"type":{"names":["number"]},"description":"<p>EMODE button.</p>","name":"EMODE"},{"type":{"names":["number"]},"description":"<p>DMA (Digital Media Adapter) button.</p>","name":"DMA"},{"type":{"names":["number"]},"description":"<p>SOURCE button.</p>","name":"SOURCE"},{"type":{"names":["number"]},"description":"<p>CHANNEL DOWN button.</p>","name":"CHDOWN"},{"type":{"names":["number"]},"description":"<p>CHANNEL UP button.</p>","name":"CHUP"},{"type":{"names":["number"]},"description":"<p>CHANNEL UP PANEL button #1.</p>","name":"PANEL_CH_UP"},{"type":{"names":["number"]},"description":"<p>CHANNEL DOWN PANEL button #1.</p>","name":"PANEL_CH_DOWN"},{"type":{"names":["number"]},"description":"<p>CHANNEL UP PANEL button #2.</p>","name":"PANEL_CHUP"},{"type":{"names":["number"]},"description":"<p>CHANNEL DOWN PANEL button #2.</p>","name":"PANEL_CHDOWN"},{"type":{"names":["number"]},"description":"<p>CHANNEL UP PIP (Picture In Picture) button.</p>","name":"PIP_CHUP"},{"type":{"names":["number"]},"description":"<p>CHANNEL DOWN PIP (Picture In Picture) button.</p>","name":"PIP_CHDOWN"},{"type":{"names":["number"]},"description":"<p>PRE-CHANNEL (PREVIOUS CHANNEL) button.</p>","name":"PRECH"},{"type":{"names":["number"]},"description":"<p>FAVOURITE CHANNEL button.</p>","name":"FAVCH"},{"type":{"names":["number"]},"description":"<p>CHANNEL LIST button.</p>","name":"CHLIST"},{"type":{"names":["number"]},"description":"<p>TELETEXT button.</p>","name":"TTX_MIX"},{"type":{"names":["number"]},"description":"<p>GUIDE button.</p>","name":"GUIDE"},{"type":{"names":["number"]},"description":"<p>ASPECT button.</p>","name":"ASPECT"},{"type":{"names":["number"]},"description":"<p>DOLBY SRR (SuRroundRight) button.</p>","name":"DOLBY_SRR"},{"type":{"names":["number"]},"description":"<p>MTS (Multichannel Television Sound) button.</p>","name":"MTS"},{"type":{"names":["number"]},"description":"<p>WHEEL DOWN #1.</p>","name":"WHEELDOWN"},{"type":{"names":["number"]},"description":"<p>WHEEL DOWN #2.</p>","name":"WHEEL_DOWN"},{"type":{"names":["number"]},"description":"<p>WHEEL UP #1.</p>","name":"WHEELUP"},{"type":{"names":["number"]},"description":"<p>WHEEL UP #2.</p>","name":"WHEEL_UP"},{"type":{"names":["number"]},"description":"<p>WHEEL LEFT #1.</p>","name":"WHEELLEFT"},{"type":{"names":["number"]},"description":"<p>WHEEL LEFT #2.</p>","name":"WHEEL_LEFT"},{"type":{"names":["number"]},"description":"<p>WHEEL RIGHT #1.</p>","name":"WHEELRIGHT"},{"type":{"names":["number"]},"description":"<p>WHEEL RIGHT #2.</p>","name":"WHEEL_RIGHT"},{"type":{"names":["number"]},"description":"<p>SMART TV button.</p>","name":"SMART"},{"type":{"names":["number"]},"description":"<p>EXIT button.</p>","name":"EXIT"},{"type":{"names":["number"]},"description":"<p>POWER button.</p>","name":"POWER"},{"type":{"names":["number"]},"description":"<p>POWER PANEL button.</p>","name":"PANEL_POWER"},{"type":{"names":["number"]},"description":"<p>POWER OFF button.</p>","name":"POWEROFF"},{"type":{"names":["number"]},"description":"<p>POWER ON button.</p>","name":"POWERON"},{"type":{"names":["number"]},"description":"<p>CONTENT button.</p>","name":"CONTENT"},{"type":{"names":["number"]},"description":"<p>WLINK (Wiselink) button #1.</p>","name":"WLINK"},{"type":{"names":["number"]},"description":"<p>WLINK (Wiselink) button #2.</p>","name":"W_LINK"},{"type":{"names":["number"]},"description":"<p>EMPTY button.</p>","name":"EMPTY"},{"type":{"names":["number"]},"description":"<p>CC (Closed Captioning) button.</p>","name":"CC"},{"type":{"names":["number"]},"description":"<p>REC button.</p>","name":"REC"},{"type":{"names":["number"]},"description":"<p>VOLUME UP button #1.</p>","name":"VOLUP"},{"type":{"names":["number"]},"description":"<p>VOLUME UP button #2.</p>","name":"VOL_UP"},{"type":{"names":["number"]},"description":"<p>VOLUME DOWN button #1.</p>","name":"VOLDOWN"},{"type":{"names":["number"]},"description":"<p>VOLUME DOWN button #2.</p>","name":"VOL_DOWN"},{"type":{"names":["number"]},"description":"<p>PANEL VOLUME UP button #1.</p>","name":"PANEL_VOLUP"},{"type":{"names":["number"]},"description":"<p>PANEL VOLUME UP button #2.</p>","name":"PANEL_VOL_UP"},{"type":{"names":["number"]},"description":"<p>PANEL VOLUME DOWN button #1.</p>","name":"PANEL_VOLDOW"},{"type":{"names":["number"]},"description":"<p>PANEL VOLUME DOWN button #2.</p>","name":"PANEL_VOLDOWN"},{"type":{"names":["number"]},"description":"<p>PANEL VOLUME DOWN button #3.</p>","name":"PANEL_VOL_DOWN"},{"type":{"names":["number"]},"description":"<p>MUTE button.</p>","name":"MUTE"},{"type":{"names":["number"]},"description":"<p>INFORMATION button.</p>","name":"INFO"},{"type":{"names":["number"]},"description":"<p>INFOLINK button.</p>","name":"INFOLINK"},{"type":{"names":["number"]},"description":"<p>MENU button.</p>","name":"MENU"},{"type":{"names":["number"]},"description":"<p>SUBTITLE button #1.</p>","name":"SUBTITLE"},{"type":{"names":["number"]},"description":"<p>SUBTITLE button #2.</p>","name":"SUB_TITLE"},{"type":{"names":["number"]},"description":"<p>SOURCE PANEL button.</p>","name":"PANEL_SOURCE"},{"type":{"names":["number"]},"description":"<p>0 (zero) button.</p>","name":"_0"},{"type":{"names":["number"]},"description":"<p>1 button.</p>","name":"_1"},{"type":{"names":["number"]},"description":"<p>2 button.</p>","name":"_2"},{"type":{"names":["number"]},"description":"<p>3 button.</p>","name":"_3"},{"type":{"names":["number"]},"description":"<p>4 button.</p>","name":"_4"},{"type":{"names":["number"]},"description":"<p>5 button.</p>","name":"_5"},{"type":{"names":["number"]},"description":"<p>6 button.</p>","name":"_6"},{"type":{"names":["number"]},"description":"<p>7 button.</p>","name":"_7"},{"type":{"names":["number"]},"description":"<p>8 button.</p>","name":"_8"},{"type":{"names":["number"]},"description":"<p>9 button.</p>","name":"_9"},{"type":{"names":["number"]},"description":"<p>10 button.</p>","name":"_10"},{"type":{"names":["number"]},"description":"<p>11 button.</p>","name":"_11"},{"type":{"names":["number"]},"description":"<p>12 button.</p>","name":"_12"},{"type":{"names":["number"]},"description":"<p>Alias for {@link CB_Keyboard.extended.SAMSUNG_TV._0}.</p>","name":"0"},{"type":{"names":["number"]},"description":"<p>Alias for {@link CB_Keyboard.extended.SAMSUNG_TV._1}.</p>","name":"1"},{"type":{"names":["number"]},"description":"<p>Alias for {@link CB_Keyboard.extended.SAMSUNG_TV._2}.</p>","name":"2"},{"type":{"names":["number"]},"description":"<p>Alias for {@link CB_Keyboard.extended.SAMSUNG_TV._3}.</p>","name":"3"},{"type":{"names":["number"]},"description":"<p>Alias for {@link CB_Keyboard.extended.SAMSUNG_TV._4}.</p>","name":"4"},{"type":{"names":["number"]},"description":"<p>Alias for {@link CB_Keyboard.extended.SAMSUNG_TV._5}.</p>","name":"5"},{"type":{"names":["number"]},"description":"<p>Alias for {@link CB_Keyboard.extended.SAMSUNG_TV._6}.</p>","name":"6"},{"type":{"names":["number"]},"description":"<p>Alias for {@link CB_Keyboard.extended.SAMSUNG_TV._7}.</p>","name":"7"},{"type":{"names":["number"]},"description":"<p>Alias for {@link CB_Keyboard.extended.SAMSUNG_TV._8}.</p>","name":"8"},{"type":{"names":["number"]},"description":"<p>Alias for {@link CB_Keyboard.extended.SAMSUNG_TV._9}.</p>","name":"9"},{"type":{"names":["number"]},"description":"<p>Alias for {@link CB_Keyboard.extended.SAMSUNG_TV._10}.</p>","name":"10"},{"type":{"names":["number"]},"description":"<p>Alias for {@link CB_Keyboard.extended.SAMSUNG_TV._11}.</p>","name":"11"},{"type":{"names":["number"]},"description":"<p>Alias for {@link CB_Keyboard.extended.SAMSUNG_TV._12}.</p>","name":"12"},{"type":{"names":["number"]},"description":"<p>RED button.</p>","name":"RED"},{"type":{"names":["number"]},"description":"<p>GREEN button.</p>","name":"GREEN"},{"type":{"names":["number"]},"description":"<p>YELLOW button.</p>","name":"YELLOW"},{"type":{"names":["number"]},"description":"<p>BLUE button.</p>","name":"BLUE"},{"type":{"names":["number"]},"description":"<p>CYAN button.</p>","name":"CYAN"},{"type":{"names":["number"]},"description":"<p>RW (REWIND) button #1.</p>","name":"RW"},{"type":{"names":["number"]},"description":"<p>RW (REWIND) button #2.</p>","name":"REWIND"},{"type":{"names":["number"]},"description":"<p>RW (REWIND) button #3.</p>","name":"REWIND_"},{"type":{"names":["number"]},"description":"<p>FF (FAST FORWARD) button #1.</p>","name":"FF"},{"type":{"names":["number"]},"description":"<p>FF (FAST FORWARD) button #2.</p>","name":"FF_"},{"type":{"names":["number"]},"description":"<p>PAUSE button.</p>","name":"PAUSE"},{"type":{"names":["number"]},"description":"<p>PLAY button.</p>","name":"PLAY"},{"type":{"names":["number"]},"description":"<p>STOP button.</p>","name":"STOP"},{"type":{"names":["number"]},"description":"<p>SEARCH button.</p>","name":"SEARCH"},{"type":{"names":["number"]},"description":"<p>UP button.</p>","name":"UP"},{"type":{"names":["number"]},"description":"<p>DOWN button.</p>","name":"DOWN"},{"type":{"names":["number"]},"description":"<p>LEFT button.</p>","name":"LEFT"},{"type":{"names":["number"]},"description":"<p>RIGHT button.</p>","name":"RIGHT"},{"type":{"names":["number"]},"description":"<p>CHANNEL UP button.</p>","name":"CH_UP"},{"type":{"names":["number"]},"description":"<p>CHANNEL DOWN button.</p>","name":"CH_DOWN"},{"type":{"names":["number"]},"description":"<p>DISC MENU button.</p>","name":"DISC_MENU"},{"type":{"names":["number"]},"description":"<p>3D button.</p>","name":"_3D"},{"type":{"names":["number"]},"description":"<p>Alias for {@link CB_Keyboard.extended.SAMSUNG_TV._3D}.</p>","name":"3D"},{"type":{"names":["number"]},"description":"<p>PIP (Picture In Picture) ON/OFF button.</p>","name":"PIP_ONOFF"},{"type":{"names":["number"]},"description":"<p>AD (Audio Description) button.</p>","name":"AD"},{"type":{"names":["number"]},"description":"<p>PICTURE MODE button.</p>","name":"PMODE"},{"type":{"names":["number"]},"description":"<p>SOUND MODE button.</p>","name":"SMODE"},{"type":{"names":["number"]},"description":"<p>SLEEP button.</p>","name":"SLEEP"},{"type":{"names":["number"]},"description":"<p>DIGITAL AUDIO button.</p>","name":"D_AUDIO"},{"type":{"names":["number"]},"description":"<p>DIGITAL FRONT PLAY button.</p>","name":"D_FRONT_PLAY"},{"type":{"names":["number"]},"description":"<p>DIGITAL VIEW MODE button.</p>","name":"D_VIEW_MODE"},{"type":{"names":["number"]},"description":"<p>STEP button.</p>","name":"STEP"},{"type":{"names":["number"]},"description":"<p>CALLED ID button.</p>","name":"CALLER_ID"},{"type":{"names":["number"]},"description":"<p>ANTENNA button.</p>","name":"ANTENNA"},{"type":{"names":["number"]},"description":"<p>MOVE ZOOM button.</p>","name":"ZOOM_MOVE"},{"type":{"names":["number"]},"description":"<p>ZOOM 1 button.</p>","name":"ZOOM1"},{"type":{"names":["number"]},"description":"<p>ZOOM 2 button.</p>","name":"ZOOM2"},{"type":{"names":["number"]},"description":"<p>ZOOM IN button.</p>","name":"ZOOM_IN"},{"type":{"names":["number"]},"description":"<p>ZOOM OUT button.</p>","name":"ZOOM_OUT"},{"type":{"names":["number"]},"description":"<p>RETURN button.</p>","name":"RETURN"},{"type":{"names":["number"]},"description":"<p>RETURN PANEL button.</p>","name":"PANEL_RETURN"},{"type":{"names":["number"]},"description":"<p>ENTER button.</p>","name":"ENTER"},{"type":{"names":["number"]},"description":"<p>ENTER PANEL button.</p>","name":"PANEL_ENTER"},{"type":{"names":["number"]},"description":"<p>MENU PANEL button.</p>","name":"PANEL_MENU"},{"type":{"names":["number"]},"description":"<p>ADD/DEL button.</p>","name":"ADDDEL"},{"type":{"names":["number"]},"description":"<p>PIP (Picture In Picture) SWAP button.</p>","name":"PIP_SWAP"},{"type":{"names":["number"]},"description":"<p>SAMSUNG AUTO MOTION PLUS 100 HZ button.</p>","name":"PLUS100"},{"type":{"names":["number"]},"description":"<p>CAPTION button.</p>","name":"CAPTION"},{"type":{"names":["number"]},"description":"<p>PICTURE SIZE button.</p>","name":"PICTURE_SIZE"},{"type":{"names":["number"]},"description":"<p>PIP (Picture In Picture) SIZE button.</p>","name":"PIP_SIZE"},{"type":{"names":["number"]},"description":"<p>MAGIC CHANNEL button.</p>","name":"MAGIC_CHANNEL"},{"type":{"names":["number"]},"description":"<p>PIP (Picture In Picture) SCAN button.</p>","name":"PIP_SCAN"},{"type":{"names":["number"]},"description":"<p>DEVICE CONNECT button.</p>","name":"DEVICE_CONNECT"},{"type":{"names":["number"]},"description":"<p>HELP button.</p>","name":"HELP"},{"type":{"names":["number"]},"description":"<p>CONVERGENCE button.</p>","name":"CONVERGENCE"},{"type":{"names":["number"]},"description":"<p>AUTO PROGRAM button.</p>","name":"AUTO_PROGRAM"},{"type":{"names":["number"]},"description":"<p>FACTORY button.</p>","name":"FACTORY"},{"type":{"names":["number"]},"description":"<p>3SPEED button.</p>","name":"_3SPEED"},{"type":{"names":["number"]},"description":"<p>Alias for {@link CB_Keyboard.extended.SAMSUNG_TV._3SPEED}.</p>","name":"3SPEED"},{"type":{"names":["number"]},"description":"<p>R.SURF button.</p>","name":"RSURF"},{"type":{"names":["number"]},"description":"<p>TOP MENU button.</p>","name":"TOPMENU"},{"type":{"names":["number"]},"description":"<p>GAME button.</p>","name":"GAME"},{"type":{"names":["number"]},"description":"<p>QUICK REPLAY button.</p>","name":"QUICK_REPLAY"},{"type":{"names":["number"]},"description":"<p>STILL PICTURE button.</p>","name":"STILL_PICTURE"},{"type":{"names":["number"]},"description":"<p>DTV (Digital Television) button.</p>","name":"DTV"},{"type":{"names":["number"]},"description":"<p>INSTANT REPLAY button.</p>","name":"INSTANT_REPLAY"},{"type":{"names":["number"]},"description":"<p>LINK button.</p>","name":"LINK"},{"type":{"names":["number"]},"description":"<p>ANGLE button.</p>","name":"ANGLE"},{"type":{"names":["number"]},"description":"<p>RESERVED1 button.</p>","name":"RESERVED1"},{"type":{"names":["number"]},"description":"<p>RESERVED5 button.</p>","name":"RESERVED5"},{"type":{"names":["number"]},"description":"<p>PROGRAM button.</p>","name":"PROGRAM"},{"type":{"names":["number"]},"description":"<p>BOOKMARK button.</p>","name":"BOOKMARK"},{"type":{"names":["number"]},"description":"<p>PRINT button.</p>","name":"PRINT"},{"type":{"names":["number"]},"description":"<p>CLEAR button.</p>","name":"CLEAR"},{"type":{"names":["number"]},"description":"<p>V-CHIP button.</p>","name":"VCHIP"},{"type":{"names":["number"]},"description":"<p>REPEAT button.</p>","name":"REPEAT"},{"type":{"names":["number"]},"description":"<p>DOOR button.</p>","name":"DOOR"},{"type":{"names":["number"]},"description":"<p>OPEN button.</p>","name":"OPEN"},{"type":{"names":["number"]},"description":"<p>TURBO button.</p>","name":"TURBO"},{"type":{"names":["number"]},"description":"<p>DVR (Digital Video Recorder) MENU button.</p>","name":"DVR_MENU"},{"type":{"names":["number"]},"description":"<p>Teletext Subface button.</p>","name":"TTX_SUBFACE"},{"type":{"names":["number"]},"description":"<p>CHANNEL LIST button.</p>","name":"CH_LIST"},{"type":{"names":["number"]},"description":"<p>DNIe (Digital Natural Image Engine) button.</p>","name":"DNIe"},{"type":{"names":["number"]},"description":"<p>DNSe (Digital Natural Sound Engine) button.</p>","name":"DNSe"},{"type":{"names":["number"]},"description":"<p>SRS (Sound Retrieval System) button.</p>","name":"SRS"},{"type":{"names":["number"]},"description":"<p>CONVERT AUDIO MAIN/SUB button.</p>","name":"CONVERT_AUDIO_MAINSUB"},{"type":{"names":["number"]},"description":"<p>MDC button.</p>","name":"MDC"},{"type":{"names":["number"]},"description":"<p>SOUND EFFECT button.</p>","name":"SEFFECT"},{"type":{"names":["number"]},"description":"<p>DVR (Digital Video Recorder) button.</p>","name":"DVR"},{"type":{"names":["number"]},"description":"<p>DTV (Digital Television) SIGNAL button.</p>","name":"DTV_SIGNAL"},{"type":{"names":["number"]},"description":"<p>LIVE button.</p>","name":"LIVE"},{"type":{"names":["number"]},"description":"<p>PERPECT FOCUS button.</p>","name":"PERPECT_FOCUS"},{"type":{"names":["number"]},"description":"<p>HOME button.</p>","name":"HOME"},{"type":{"names":["number"]},"description":"<p>ENERGY SAVING button.</p>","name":"ESAVING"},{"type":{"names":["number"]},"description":"<p>CONTENTS button.</p>","name":"CONTENTS"},{"type":{"names":["number"]},"description":"<p>SCALE button.</p>","name":"SCALE"},{"type":{"names":["number"]},"description":"<p>CLOCK DISPLAY button.</p>","name":"CLOCK_DISPLAY"},{"type":{"names":["number"]},"description":"<p>SETUP CLOCK TIMER button.</p>","name":"SETUP_CLOCK_TIMER"},{"type":{"names":["number"]},"description":"<p>MAGIC BRIGHT button.</p>","name":"MAGIC_BRIGHT"},{"type":{"names":["number"]},"description":"<p>FM RADIO button.</p>","name":"FM_RADIO"},{"type":{"names":["number"]},"description":"<p>VCR MODE button.</p>","name":"VCR_MODE"},{"type":{"names":["number"]},"description":"<p>CATV (Community Antenna Television) MODE button.</p>","name":"CATV_MODE"},{"type":{"names":["number"]},"description":"<p>DSS MODE button.</p>","name":"DSS_MODE"},{"type":{"names":["number"]},"description":"<p>DVD MODE button.</p>","name":"DVD_MODE"},{"type":{"names":["number"]},"description":"<p>STB (Set-Top Box) MODE button.</p>","name":"STB_MODE"},{"type":{"names":["number"]},"description":"<p>PC MODE button.</p>","name":"PCMODE"},{"type":{"names":["number"]},"description":"<p>TV MODE button.</p>","name":"TV_MODE"},{"type":{"names":["number"]},"description":"<p>TV button.</p>","name":"TV"},{"type":{"names":["number"]},"description":"<p>AV #1 button.</p>","name":"AV1"},{"type":{"names":["number"]},"description":"<p>AV #2 button.</p>","name":"AV2"},{"type":{"names":["number"]},"description":"<p>AV #3 button.</p>","name":"AV3"},{"type":{"names":["number"]},"description":"<p>S-VIDEO (Separated-Video) #1 button.</p>","name":"SVIDEO1"},{"type":{"names":["number"]},"description":"<p>S-VIDEO (Separated-Video) #2 button.</p>","name":"SVIDEO2"},{"type":{"names":["number"]},"description":"<p>S-VIDEO (Separated-Video) #3 button.</p>","name":"SVIDEO3"},{"type":{"names":["number"]},"description":"<p>COMPONENT #1 button.</p>","name":"COMPONENT1"},{"type":{"names":["number"]},"description":"<p>COMPONENT #2 button.</p>","name":"COMPONENT2"},{"type":{"names":["number"]},"description":"<p>DVI (Digital Visual Interface) button.</p>","name":"DVI"},{"type":{"names":["number"]},"description":"<p>HDMI button.</p>","name":"HDMI"},{"type":{"names":["number"]},"description":"<p>HDMI #1 button.</p>","name":"HDMI1"},{"type":{"names":["number"]},"description":"<p>HDMI #2 button.</p>","name":"HDMI2"},{"type":{"names":["number"]},"description":"<p>HDMI #3 button.</p>","name":"HDMI3"},{"type":{"names":["number"]},"description":"<p>HDMI #4 button.</p>","name":"HDMI4"},{"type":{"names":["number"]},"description":"<p>DTVLINK (DIGITAL TELEVISION LINK) button.</p>","name":"DTV_LINK"},{"type":{"names":["number"]},"description":"<p>APP LIST button.</p>","name":"APP_LIST"},{"type":{"names":["number"]},"description":"<p>BACK MHP (Multimedia Home Platform) button.</p>","name":"BACK_MHP"},{"type":{"names":["number"]},"description":"<p>ALTERNATE MHP (Multimedia Home Platform) button.</p>","name":"ALT_MHP"},{"type":{"names":["number"]},"description":"<p>RSS button.</p>","name":"RSS"},{"type":{"names":["number"]},"description":"<p>ENTERTAINMENT button.</p>","name":"ENTERTAINMENT"},{"type":{"names":["number"]},"description":"<p>ID INPUT button.</p>","name":"ID_INPUT"},{"type":{"names":["number"]},"description":"<p>ID SETUP button.</p>","name":"ID_SETUP"},{"type":{"names":["number"]},"description":"<p>ANYNET button.</p>","name":"ANYNET"},{"type":{"names":["number"]},"description":"<p>ANYVIEW button.</p>","name":"ANYVIEW"},{"type":{"names":["number"]},"description":"<p>MS button.</p>","name":"MS"},{"type":{"names":["number"]},"description":"<p>MORE button.</p>","name":"MORE"},{"type":{"names":["number"]},"description":"<p>4:3 button.</p>","name":"_4_3"},{"type":{"names":["number"]},"description":"<p>Alias for {@link CB_Keyboard.extended.SAMSUNG_TV._4_3}.</p>","name":"4_3"},{"type":{"names":["number"]},"description":"<p>16:9 button.</p>","name":"_16_9"},{"type":{"names":["number"]},"description":"<p>Alias for {@link CB_Keyboard.extended.SAMSUNG_TV._16_9}.</p>","name":"16_9"},{"type":{"names":["number"]},"description":"<p>PICTURE MODE PANORAMA button.</p>","name":"PANORAMA"},{"type":{"names":["number"]},"description":"<p>PICTURE MODE DYNAMIC button.</p>","name":"DYNAMIC"},{"type":{"names":["number"]},"description":"<p>PICTURE MODE STANDARD button.</p>","name":"STANDARD"},{"type":{"names":["number"]},"description":"<p>PICTURE MODE MOVIE1 button.</p>","name":"MOVIE1"},{"type":{"names":["number"]},"description":"<p>PICTURE MODE CUSTOM button.</p>","name":"CUSTOM"},{"type":{"names":["number"]},"description":"<p>AUTO ARC (Audio Return Channel) RESET button.</p>","name":"AUTO_ARC_RESET"},{"type":{"names":["number"]},"description":"<p>AUTO ARC (Audio Return Channel) LNA (Low Noise Amplifier) ON button.</p>","name":"AUTO_ARC_LNA_ON"},{"type":{"names":["number"]},"description":"<p>AUTO ARC (Audio Return Channel) LNA (Low Noise Amplifier) OFF button.</p>","name":"AUTO_ARC_LNA_OFF"},{"type":{"names":["number"]},"description":"<p>AUTO ARC (Audio Return Channel) ANYNET MODE OK button.</p>","name":"AUTO_ARC_ANYNET_MODE_OK"},{"type":{"names":["number"]},"description":"<p>AUTO ARC (Audio Return Channel) ANYNET AUTO START button.</p>","name":"AUTO_ARC_ANYNET_AUTO_START"},{"type":{"names":["number"]},"description":"<p>AUTO ARC (Audio Return Channel) CAPTION ON button.</p>","name":"AUTO_ARC_CAPTION_ON"},{"type":{"names":["number"]},"description":"<p>AUTO ARC (Audio Return Channel) CAPTION OFF button.</p>","name":"AUTO_ARC_CAPTION_OFF"},{"type":{"names":["number"]},"description":"<p>AUTO ARC (Audio Return Channel) PIP (Picture In Picture) DOUBLE button.</p>","name":"AUTO_ARC_PIP_DOUBLE"},{"type":{"names":["number"]},"description":"<p>AUTO ARC (Audio Return Channel) PIP (Picture In Picture) LARGE button.</p>","name":"AUTO_ARC_PIP_LARGE"},{"type":{"names":["number"]},"description":"<p>AUTO ARC (Audio Return Channel) PIP (Picture In Picture) SMALL button.</p>","name":"AUTO_ARC_PIP_SMALL"},{"type":{"names":["number"]},"description":"<p>AUTO ARC (Audio Return Channel) PIP (Picture In Picture) WIDE button.</p>","name":"AUTO_ARC_PIP_WIDE"},{"type":{"names":["number"]},"description":"<p>AUTO ARC (Audio Return Channel) PIP (Picture In Picture) LEFT TOP button.</p>","name":"AUTO_ARC_PIP_LEFT_TOP"},{"type":{"names":["number"]},"description":"<p>AUTO ARC (Audio Return Channel) PIP (Picture In Picture) RIGHT TOP button.</p>","name":"AUTO_ARC_PIP_RIGHT_TOP"},{"type":{"names":["number"]},"description":"<p>AUTO ARC (Audio Return Channel) PIP (Picture In Picture) LEFT BOTTOM button.</p>","name":"AUTO_ARC_PIP_LEFT_BOTTOM"},{"type":{"names":["number"]},"description":"<p>AUTO ARC (Audio Return Channel) PIP (Picture In Picture) RIGHT BOTTOM button.</p>","name":"AUTO_ARC_PIP_RIGHT_BOTTOM"},{"type":{"names":["number"]},"description":"<p>AUTO ARC (Audio Return Channel) PIP (Picture In Picture) CHANNEL CHANGE button.</p>","name":"AUTO_ARC_PIP_CH_CHANGE"},{"type":{"names":["number"]},"description":"<p>AUTO ARC (Audio Return Channel) PIP (Picture In Picture) SOURCE CHANGE button.</p>","name":"AUTO_ARC_PIP_SOURCE_CHANGE"},{"type":{"names":["number"]},"description":"<p>AUTO ARC (Audio Return Channel) AUTOCOLOR SUCCESS button.</p>","name":"AUTO_ARC_AUTOCOLOR_SUCCESS"},{"type":{"names":["number"]},"description":"<p>AUTO ARC (Audio Return Channel) AUTOCOLOR FAIL button.</p>","name":"AUTO_ARC_AUTOCOLOR_FAIL"},{"type":{"names":["number"]},"description":"<p>AUTO ARC (Audio Return Channel) C-FORCE AGING button.</p>","name":"AUTO_ARC_C_FORCE_AGING"},{"type":{"names":["number"]},"description":"<p>AUTO ARC (Audio Return Channel) USB JACK INSPECT button.</p>","name":"AUTO_ARC_USBJACK_INSPECT"},{"type":{"names":["number"]},"description":"<p>AUTO ARC (Audio Return Channel) JACK IDENT button.</p>","name":"AUTO_ARC_JACK_IDENT"},{"type":{"names":["number"]},"description":"<p>AUTO ARC (Audio Return Channel) CAPTION KOREAN button.</p>","name":"AUTO_ARC_CAPTION_KOR"},{"type":{"names":["number"]},"description":"<p>AUTO ARC (Audio Return Channel) CAPTION ENGLISH button.</p>","name":"AUTO_ARC_CAPTION_ENG"},{"type":{"names":["number"]},"description":"<p>AUTO ARC (Audio Return Channel) ANTENNA AIR button.</p>","name":"AUTO_ARC_ANTENNA_AIR"},{"type":{"names":["number"]},"description":"<p>AUTO ARC (Audio Return Channel) ANTENNA CABLE button.</p>","name":"AUTO_ARC_ANTENNA_CABLE"},{"type":{"names":["number"]},"description":"<p>AUTO ARC (Audio Return Channel) ANTENNA SATELLITE button.</p>","name":"AUTO_ARC_ANTENNA_SATELLITE"},{"type":{"names":["number"]},"description":"<p>AUTO FORMAT button.</p>","name":"AUTO_FORMAT"},{"type":{"names":["number"]},"description":"<p>D-NET button.</p>","name":"DNET"},{"type":{"names":["number"]},"description":"<p>NINE SEPARATE button.</p>","name":"NINE_SEPARATE"},{"type":{"names":["number"]},"description":"<p>MIC (MICROPHONE) button.</p>","name":"MIC"},{"type":{"names":["number"]},"description":"<p>EXT1 button.</p>","name":"EXT1"},{"type":{"names":["number"]},"description":"<p>EXT2 button.</p>","name":"EXT2"},{"type":{"names":["number"]},"description":"<p>EXT3 button.</p>","name":"EXT3"},{"type":{"names":["number"]},"description":"<p>EXT4 button.</p>","name":"EXT4"},{"type":{"names":["number"]},"description":"<p>EXT5 button.</p>","name":"EXT5"},{"type":{"names":["number"]},"description":"<p>EXT6 button.</p>","name":"EXT6"},{"type":{"names":["number"]},"description":"<p>EXT7 button.</p>","name":"EXT7"},{"type":{"names":["number"]},"description":"<p>EXT8 button.</p>","name":"EXT8"},{"type":{"names":["number"]},"description":"<p>EXT9 button.</p>","name":"EXT9"},{"type":{"names":["number"]},"description":"<p>EXT10 button.</p>","name":"EXT10"},{"type":{"names":["number"]},"description":"<p>EXT11 button.</p>","name":"EXT11"},{"type":{"names":["number"]},"description":"<p>EXT12 button.</p>","name":"EXT12"},{"type":{"names":["number"]},"description":"<p>EXT13 button.</p>","name":"EXT13"},{"type":{"names":["number"]},"description":"<p>EXT14 button.</p>","name":"EXT14"},{"type":{"names":["number"]},"description":"<p>EXT15 button.</p>","name":"EXT15"},{"type":{"names":["number"]},"description":"<p>EXT16 button.</p>","name":"EXT16"},{"type":{"names":["number"]},"description":"<p>EXT17 button.</p>","name":"EXT17"},{"type":{"names":["number"]},"description":"<p>EXT18 button.</p>","name":"EXT18"},{"type":{"names":["number"]},"description":"<p>EXT19 button.</p>","name":"EXT19"},{"type":{"names":["number"]},"description":"<p>EXT20 button.</p>","name":"EXT20"},{"type":{"names":["number"]},"description":"<p>EXT21 button.</p>","name":"EXT21"},{"type":{"names":["number"]},"description":"<p>EXT22 button.</p>","name":"EXT22"},{"type":{"names":["number"]},"description":"<p>EXT23 button.</p>","name":"EXT23"},{"type":{"names":["number"]},"description":"<p>EXT24 button.</p>","name":"EXT24"},{"type":{"names":["number"]},"description":"<p>EXT25 button.</p>","name":"EXT25"},{"type":{"names":["number"]},"description":"<p>EXT26 button.</p>","name":"EXT26"},{"type":{"names":["number"]},"description":"<p>EXT27 button.</p>","name":"EXT27"},{"type":{"names":["number"]},"description":"<p>EXT28 button.</p>","name":"EXT28"},{"type":{"names":["number"]},"description":"<p>EXT29 button.</p>","name":"EXT29"},{"type":{"names":["number"]},"description":"<p>EXT30 button.</p>","name":"EXT30"},{"type":{"names":["number"]},"description":"<p>EXT31 button.</p>","name":"EXT31"},{"type":{"names":["number"]},"description":"<p>EXT32 button.</p>","name":"EXT32"},{"type":{"names":["number"]},"description":"<p>EXT33 button.</p>","name":"EXT33"},{"type":{"names":["number"]},"description":"<p>EXT34 button.</p>","name":"EXT34"},{"type":{"names":["number"]},"description":"<p>EXT35 button.</p>","name":"EXT35"},{"type":{"names":["number"]},"description":"<p>EXT36 button.</p>","name":"EXT36"},{"type":{"names":["number"]},"description":"<p>EXT37 button.</p>","name":"EXT37"},{"type":{"names":["number"]},"description":"<p>EXT38 button.</p>","name":"EXT38"},{"type":{"names":["number"]},"description":"<p>EXT39 button.</p>","name":"EXT39"},{"type":{"names":["number"]},"description":"<p>EXT40 button.</p>","name":"EXT40"},{"type":{"names":["number"]},"description":"<p>EXT41 button.</p>","name":"EXT41"}],"scope":"static","longname":"CB_Keyboard.extended.SAMSUNG_TV"},{"comment":"/**\r\n\t * Amazon Fire TV remote control key codes.\r\n\t * @memberof CB_Keyboard.extended\r\n\t * @name AMAZON_FIRE_TV_REMOTE\r\n\t * @constant\r\n\t * @type {Object}\r\n\t * @default\r\n\t * @property {number} UP - UP button.\r\n\t * @property {number} DOWN - DOWN button.\r\n\t * @property {number} LEFT - LEFT button.\r\n\t * @property {number} RIGHT - RIGHT button.\r\n\t * @property {number} SELECT - SELECT button.\r\n\t * @property {number} PLAY_PAUSE - PLAY/PAUSE button.\r\n\t * @property {number} RW - RW (REWIND) button.\r\n\t * @property {number} FF - FF (FAST FORWARD) button.\r\n\t */","meta":{"filename":"CB_Keyboard.js","lineno":993,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\input","code":{}},"description":"<p>Amazon Fire TV remote control key codes.</p>","memberof":"CB_Keyboard.extended","name":"AMAZON_FIRE_TV_REMOTE","kind":"constant","type":{"names":["Object"]},"properties":[{"type":{"names":["number"]},"description":"<p>UP button.</p>","name":"UP"},{"type":{"names":["number"]},"description":"<p>DOWN button.</p>","name":"DOWN"},{"type":{"names":["number"]},"description":"<p>LEFT button.</p>","name":"LEFT"},{"type":{"names":["number"]},"description":"<p>RIGHT button.</p>","name":"RIGHT"},{"type":{"names":["number"]},"description":"<p>SELECT button.</p>","name":"SELECT"},{"type":{"names":["number"]},"description":"<p>PLAY/PAUSE button.</p>","name":"PLAY_PAUSE"},{"type":{"names":["number"]},"description":"<p>RW (REWIND) button.</p>","name":"RW"},{"type":{"names":["number"]},"description":"<p>FF (FAST FORWARD) button.</p>","name":"FF"}],"scope":"static","longname":"CB_Keyboard.extended.AMAZON_FIRE_TV_REMOTE"},{"comment":"/**\r\n\t * Amazon Fire TV game controller key codes.\r\n\t * @memberof CB_Keyboard.extended\r\n\t * @name AMAZON_FIRE_TV_GAME_CONTROLLER\r\n\t * @constant\r\n\t * @type {Object}\r\n\t * @default\r\n\t * @property {number} UP - UP button.\r\n\t * @property {number} DOWN - DOWN button.\r\n\t * @property {number} LEFT - LEFT button.\r\n\t * @property {number} RIGHT - RIGHT button.\r\n\t * @property {number} A - \"A\" button.\r\n\t * @property {number} B - \"B\" button.\r\n\t * @property {number} X - \"X\" button.\r\n\t * @property {number} Y - \"Y\" button.\r\n\t */","meta":{"filename":"CB_Keyboard.js","lineno":1022,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\input","code":{}},"description":"<p>Amazon Fire TV game controller key codes.</p>","memberof":"CB_Keyboard.extended","name":"AMAZON_FIRE_TV_GAME_CONTROLLER","kind":"constant","type":{"names":["Object"]},"properties":[{"type":{"names":["number"]},"description":"<p>UP button.</p>","name":"UP"},{"type":{"names":["number"]},"description":"<p>DOWN button.</p>","name":"DOWN"},{"type":{"names":["number"]},"description":"<p>LEFT button.</p>","name":"LEFT"},{"type":{"names":["number"]},"description":"<p>RIGHT button.</p>","name":"RIGHT"},{"type":{"names":["number"]},"description":"<p>&quot;A&quot; button.</p>","name":"A"},{"type":{"names":["number"]},"description":"<p>&quot;B&quot; button.</p>","name":"B"},{"type":{"names":["number"]},"description":"<p>&quot;X&quot; button.</p>","name":"X"},{"type":{"names":["number"]},"description":"<p>&quot;Y&quot; button.</p>","name":"Y"}],"scope":"static","longname":"CB_Keyboard.extended.AMAZON_FIRE_TV_GAME_CONTROLLER"},{"comment":"/**\r\n\t * Nintendo Wii (Wiimote) key codes.\r\n\t * @memberof CB_Keyboard.extended\r\n\t * @name WII\r\n\t * @constant\r\n\t * @type {Object}\r\n\t * @default\r\n\t * @property {number} UP - D-PAD UP button.\r\n\t * @property {number} DOWN - D-PAD DOWN button.\r\n\t * @property {number} LEFT - D-PAD LEFT button.\r\n\t * @property {number} RIGHT - D-PAD RIGHT button.\r\n\t * @property {number} A - \"A\" button.\r\n\t * @property {number} B - \"B\" button.\r\n \t * @property {number} MINUS - MINUS (\"-\") button.\r\n\t * @property {number} PLUS - PLUS (\"+\") button.\r\n \t * @property {number} ONE - \"1\" button.\r\n\t * @property {number} _1 - Alias for {@link CB_Keyboard.extended.WII.ONE}.\r\n\t * @property {number} 1 - Alias for {@link CB_Keyboard.extended.WII.ONE}.\r\n\t * @property {number} TWO - \"2\" button.\r\n\t * @property {number} _2 - Alias for {@link CB_Keyboard.extended.WII.TWO}.\r\n\t * @property {number} 2 - Alias for {@link CB_Keyboard.extended.WII.TWO}.\r\n \t * @property {number} HOME - HOME button.\r\n\t */","meta":{"filename":"CB_Keyboard.js","lineno":1051,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\input","code":{}},"description":"<p>Nintendo Wii (Wiimote) key codes.</p>","memberof":"CB_Keyboard.extended","name":"WII","kind":"constant","type":{"names":["Object"]},"properties":[{"type":{"names":["number"]},"description":"<p>D-PAD UP button.</p>","name":"UP"},{"type":{"names":["number"]},"description":"<p>D-PAD DOWN button.</p>","name":"DOWN"},{"type":{"names":["number"]},"description":"<p>D-PAD LEFT button.</p>","name":"LEFT"},{"type":{"names":["number"]},"description":"<p>D-PAD RIGHT button.</p>","name":"RIGHT"},{"type":{"names":["number"]},"description":"<p>&quot;A&quot; button.</p>","name":"A"},{"type":{"names":["number"]},"description":"<p>&quot;B&quot; button.</p>","name":"B"},{"type":{"names":["number"]},"description":"<p>MINUS (&quot;-&quot;) button.</p>","name":"MINUS"},{"type":{"names":["number"]},"description":"<p>PLUS (&quot;+&quot;) button.</p>","name":"PLUS"},{"type":{"names":["number"]},"description":"<p>&quot;1&quot; button.</p>","name":"ONE"},{"type":{"names":["number"]},"description":"<p>Alias for {@link CB_Keyboard.extended.WII.ONE}.</p>","name":"_1"},{"type":{"names":["number"]},"description":"<p>Alias for {@link CB_Keyboard.extended.WII.ONE}.</p>","name":"1"},{"type":{"names":["number"]},"description":"<p>&quot;2&quot; button.</p>","name":"TWO"},{"type":{"names":["number"]},"description":"<p>Alias for {@link CB_Keyboard.extended.WII.TWO}.</p>","name":"_2"},{"type":{"names":["number"]},"description":"<p>Alias for {@link CB_Keyboard.extended.WII.TWO}.</p>","name":"2"},{"type":{"names":["number"]},"description":"<p>HOME button.</p>","name":"HOME"}],"scope":"static","longname":"CB_Keyboard.extended.WII"},{"comment":"/**\r\n\t * Sony PlayStation 3 key codes.\r\n\t * @memberof CB_Keyboard.extended\r\n\t * @name PS3\r\n\t * @constant\r\n\t * @type {Object}\r\n\t * @default\r\n\t * @property {number} UP - UP button.\r\n\t * @property {number} DOWN - DOWN button.\r\n\t * @property {number} LEFT - LEFT button.\r\n\t * @property {number} RIGHT - RIGHT button.\r\n\t * @property {number} CROSS - CROSS button.\r\n\t */","meta":{"filename":"CB_Keyboard.js","lineno":1094,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\input","code":{}},"description":"<p>Sony PlayStation 3 key codes.</p>","memberof":"CB_Keyboard.extended","name":"PS3","kind":"constant","type":{"names":["Object"]},"properties":[{"type":{"names":["number"]},"description":"<p>UP button.</p>","name":"UP"},{"type":{"names":["number"]},"description":"<p>DOWN button.</p>","name":"DOWN"},{"type":{"names":["number"]},"description":"<p>LEFT button.</p>","name":"LEFT"},{"type":{"names":["number"]},"description":"<p>RIGHT button.</p>","name":"RIGHT"},{"type":{"names":["number"]},"description":"<p>CROSS button.</p>","name":"CROSS"}],"scope":"static","longname":"CB_Keyboard.extended.PS3"},{"comment":"/**\r\n\t * Sony PlayStation 4 key codes.\r\n\t * @memberof CB_Keyboard.extended\r\n\t * @name PS4\r\n\t * @constant\r\n\t * @type {Object}\r\n\t * @default\r\n\t * @property {number} UP - D-PAD UP button.\r\n\t * @property {number} DOWN - D-PAD DOWN button.\r\n\t * @property {number} LEFT - D-PAD LEFT button.\r\n\t * @property {number} RIGHT - D-PAD RIGHT button.\r\n\t * @property {number} TRIANGLE - TRIANGLE button.\r\n\t * @property {number} SQUARE - SQUARE button.\r\n\t * @property {number} CIRCLE - CIRCLE button.\r\n\t * @property {number} L1 - L1 button.\r\n\t * @property {number} L2 - L2 button.\r\n\t * @property {number} R1 - R1 button.\r\n\t * @property {number} R2 - R2 button.\r\n\t * @property {number} LEFT_STICK_CLICK - LEFT STICK CLICK button.\r\n\t * @property {number} RIGHT_STICK_CLICK - RIGHT STICK CLICK button.\r\n\t * @property {number} OPTIONS - OPTIONS button.\r\n\t */","meta":{"filename":"CB_Keyboard.js","lineno":1119,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\input","code":{}},"description":"<p>Sony PlayStation 4 key codes.</p>","memberof":"CB_Keyboard.extended","name":"PS4","kind":"constant","type":{"names":["Object"]},"properties":[{"type":{"names":["number"]},"description":"<p>D-PAD UP button.</p>","name":"UP"},{"type":{"names":["number"]},"description":"<p>D-PAD DOWN button.</p>","name":"DOWN"},{"type":{"names":["number"]},"description":"<p>D-PAD LEFT button.</p>","name":"LEFT"},{"type":{"names":["number"]},"description":"<p>D-PAD RIGHT button.</p>","name":"RIGHT"},{"type":{"names":["number"]},"description":"<p>TRIANGLE button.</p>","name":"TRIANGLE"},{"type":{"names":["number"]},"description":"<p>SQUARE button.</p>","name":"SQUARE"},{"type":{"names":["number"]},"description":"<p>CIRCLE button.</p>","name":"CIRCLE"},{"type":{"names":["number"]},"description":"<p>L1 button.</p>","name":"L1"},{"type":{"names":["number"]},"description":"<p>L2 button.</p>","name":"L2"},{"type":{"names":["number"]},"description":"<p>R1 button.</p>","name":"R1"},{"type":{"names":["number"]},"description":"<p>R2 button.</p>","name":"R2"},{"type":{"names":["number"]},"description":"<p>LEFT STICK CLICK button.</p>","name":"LEFT_STICK_CLICK"},{"type":{"names":["number"]},"description":"<p>RIGHT STICK CLICK button.</p>","name":"RIGHT_STICK_CLICK"},{"type":{"names":["number"]},"description":"<p>OPTIONS button.</p>","name":"OPTIONS"}],"scope":"static","longname":"CB_Keyboard.extended.PS4"},{"comment":"/**\r\n\t * Sony PlayStation Vita key codes.\r\n\t * @memberof CB_Keyboard.extended\r\n\t * @name PSVITA\r\n\t * @constant\r\n\t * @type {Object}\r\n\t * @default\r\n\t * @property {number} UP - UP button.\r\n\t * @property {number} DOWN - DOWN button.\r\n\t * @property {number} LEFT - LEFT button.\r\n\t * @property {number} RIGHT - RIGHT button.\r\n\t */","meta":{"filename":"CB_Keyboard.js","lineno":1164,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\input","code":{}},"description":"<p>Sony PlayStation Vita key codes.</p>","memberof":"CB_Keyboard.extended","name":"PSVITA","kind":"constant","type":{"names":["Object"]},"properties":[{"type":{"names":["number"]},"description":"<p>UP button.</p>","name":"UP"},{"type":{"names":["number"]},"description":"<p>DOWN button.</p>","name":"DOWN"},{"type":{"names":["number"]},"description":"<p>LEFT button.</p>","name":"LEFT"},{"type":{"names":["number"]},"description":"<p>RIGHT button.</p>","name":"RIGHT"}],"scope":"static","longname":"CB_Keyboard.extended.PSVITA"},{"comment":"/**\r\n\t * LG Smart TV (Linux 35230) key codes.\r\n\t * @memberof CB_Keyboard.extended\r\n\t * @name LG_SMART_TV_LINUX_35230\r\n\t * @constant\r\n\t * @type {Object}\r\n\t * @default\r\n\t * @property {number} _0 - 0 (zero) button.\r\n\t * @property {number} _1 - 1 button.\r\n\t * @property {number} _2 - 2 button.\r\n\t * @property {number} _3 - 3 button.\r\n\t * @property {number} _4 - 4 button.\r\n\t * @property {number} _5 - 5 button.\r\n\t * @property {number} _6 - 6 button.\r\n\t * @property {number} _7 - 7 button.\r\n\t * @property {number} _8 - 8 button.\r\n\t * @property {number} _9 - 9 button.\r\n\t * @property {number} 0 - Alias for {@link CB_Keyboard.extended.LG_SMART_TV_LINUX_35230._0}.\r\n\t * @property {number} 1 - Alias for {@link CB_Keyboard.extended.LG_SMART_TV_LINUX_35230._1}.\r\n\t * @property {number} 2 - Alias for {@link CB_Keyboard.extended.LG_SMART_TV_LINUX_35230._2}.\r\n\t * @property {number} 3 - Alias for {@link CB_Keyboard.extended.LG_SMART_TV_LINUX_35230._3}.\r\n\t * @property {number} 4 - Alias for {@link CB_Keyboard.extended.LG_SMART_TV_LINUX_35230._4}.\r\n\t * @property {number} 5 - Alias for {@link CB_Keyboard.extended.LG_SMART_TV_LINUX_35230._5}.\r\n\t * @property {number} 6 - Alias for {@link CB_Keyboard.extended.LG_SMART_TV_LINUX_35230._6}.\r\n\t * @property {number} 7 - Alias for {@link CB_Keyboard.extended.LG_SMART_TV_LINUX_35230._7}.\r\n\t * @property {number} 8 - Alias for {@link CB_Keyboard.extended.LG_SMART_TV_LINUX_35230._8}.\r\n\t * @property {number} 9 - Alias for {@link CB_Keyboard.extended.LG_SMART_TV_LINUX_35230._9}.\r\n\t * @property {number} FORWARD - FORWARD button.\r\n\t * @property {number} REWIND - REWIND button.\r\n\t * @property {number} PLAY - PLAY button.\r\n\t * @property {number} PAUSE - PAUSE button.\r\n\t */","meta":{"filename":"CB_Keyboard.js","lineno":1186,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\input","code":{}},"description":"<p>LG Smart TV (Linux 35230) key codes.</p>","memberof":"CB_Keyboard.extended","name":"LG_SMART_TV_LINUX_35230","kind":"constant","type":{"names":["Object"]},"properties":[{"type":{"names":["number"]},"description":"<p>0 (zero) button.</p>","name":"_0"},{"type":{"names":["number"]},"description":"<p>1 button.</p>","name":"_1"},{"type":{"names":["number"]},"description":"<p>2 button.</p>","name":"_2"},{"type":{"names":["number"]},"description":"<p>3 button.</p>","name":"_3"},{"type":{"names":["number"]},"description":"<p>4 button.</p>","name":"_4"},{"type":{"names":["number"]},"description":"<p>5 button.</p>","name":"_5"},{"type":{"names":["number"]},"description":"<p>6 button.</p>","name":"_6"},{"type":{"names":["number"]},"description":"<p>7 button.</p>","name":"_7"},{"type":{"names":["number"]},"description":"<p>8 button.</p>","name":"_8"},{"type":{"names":["number"]},"description":"<p>9 button.</p>","name":"_9"},{"type":{"names":["number"]},"description":"<p>Alias for {@link CB_Keyboard.extended.LG_SMART_TV_LINUX_35230._0}.</p>","name":"0"},{"type":{"names":["number"]},"description":"<p>Alias for {@link CB_Keyboard.extended.LG_SMART_TV_LINUX_35230._1}.</p>","name":"1"},{"type":{"names":["number"]},"description":"<p>Alias for {@link CB_Keyboard.extended.LG_SMART_TV_LINUX_35230._2}.</p>","name":"2"},{"type":{"names":["number"]},"description":"<p>Alias for {@link CB_Keyboard.extended.LG_SMART_TV_LINUX_35230._3}.</p>","name":"3"},{"type":{"names":["number"]},"description":"<p>Alias for {@link CB_Keyboard.extended.LG_SMART_TV_LINUX_35230._4}.</p>","name":"4"},{"type":{"names":["number"]},"description":"<p>Alias for {@link CB_Keyboard.extended.LG_SMART_TV_LINUX_35230._5}.</p>","name":"5"},{"type":{"names":["number"]},"description":"<p>Alias for {@link CB_Keyboard.extended.LG_SMART_TV_LINUX_35230._6}.</p>","name":"6"},{"type":{"names":["number"]},"description":"<p>Alias for {@link CB_Keyboard.extended.LG_SMART_TV_LINUX_35230._7}.</p>","name":"7"},{"type":{"names":["number"]},"description":"<p>Alias for {@link CB_Keyboard.extended.LG_SMART_TV_LINUX_35230._8}.</p>","name":"8"},{"type":{"names":["number"]},"description":"<p>Alias for {@link CB_Keyboard.extended.LG_SMART_TV_LINUX_35230._9}.</p>","name":"9"},{"type":{"names":["number"]},"description":"<p>FORWARD button.</p>","name":"FORWARD"},{"type":{"names":["number"]},"description":"<p>REWIND button.</p>","name":"REWIND"},{"type":{"names":["number"]},"description":"<p>PLAY button.</p>","name":"PLAY"},{"type":{"names":["number"]},"description":"<p>PAUSE button.</p>","name":"PAUSE"}],"scope":"static","longname":"CB_Keyboard.extended.LG_SMART_TV_LINUX_35230"},{"comment":"/**\r\n\t * Object whose properties are aliases for key codes (each property can contain an array with one or more integers which belong to the key codes).\r\n\t * @namespace\r\n\t * @type {Object}\r\n\t */","meta":{"range":[63006,93884],"filename":"CB_Keyboard.js","lineno":1254,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\input","code":{"id":"astnode100084687","name":"CB_Keyboard.keys","type":"ObjectExpression","value":"{\"undefined\":\"\"}","paramnames":[]}},"description":"<p>Object whose properties are aliases for key codes (each property can contain an array with one or more integers which belong to the key codes).</p>","kind":"namespace","type":{"names":["Object"]},"name":"keys","longname":"CB_Keyboard.keys","memberof":"CB_Keyboard","scope":"static"},{"comment":"/**\r\n\t * Object whose properties are aliases for char codes (each property can contain an array with one or more integers which belong to the char codes).\r\n\t * @namespace\r\n\t * @type {Object}\r\n\t */","meta":{"range":[94338,101714],"filename":"CB_Keyboard.js","lineno":2560,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\input","code":{"id":"astnode100086909","name":"CB_Keyboard.chars","type":"ObjectExpression","value":"{\"undefined\":\"\"}","paramnames":[]}},"description":"<p>Object whose properties are aliases for char codes (each property can contain an array with one or more integers which belong to the char codes).</p>","kind":"namespace","type":{"names":["Object"]},"name":"chars","longname":"CB_Keyboard.chars","memberof":"CB_Keyboard","scope":"static"},{"comment":"/**\r\n\t * Tries to return the given [keyboard event]{@link https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent} with some properties normalized (since different clients can use different values) and perhaps some new properties added (in the case they were missing), when possible. The new attached methods and properties may include polyfills, etc. It also calls the {@link CB_Events.normalize} function internally. Some properties added or affected could be [keyCode]{@link https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/keyCode}, [location]{@link https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/location}, [ctrlKey]{@link https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/ctrlKey}, [altKey]{@link https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/altKey}, [shiftKey]{@link https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/shiftKey}, etc.\r\n\t * @function\r\n\t * @param {Event} e - [Keyboard event]{@link https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent} object. If not provided, it will use the value of \"event\", \"window.event\", \"Event\" or an empty object (\"{}\").\r\n\t * @returns {Event} Returns the [keyboard event]{@link https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent} object normalized.\r\n\t * @todo Calculate (if possible) the values for location, ctrlKey, altKey, etc. when added, to simulate the expected behaviour.\r\n\t */","meta":{"range":[106235,107565],"filename":"CB_Keyboard.js","lineno":3108,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\input","code":{"id":"astnode100087333","name":"CB_Keyboard.normalizeEvent","type":"FunctionExpression","paramnames":["e"]},"vars":{"e":"CB_Keyboard.normalizeEvent~e","e.keyCode":"CB_Keyboard.normalizeEvent~e.keyCode","e.getKeyCode":"CB_Keyboard.normalizeEvent~e.getKeyCode","":null,"e.location":"CB_Keyboard.normalizeEvent~e.location","e.ctrlKey":"CB_Keyboard.normalizeEvent~e.ctrlKey","e.altKey":"CB_Keyboard.normalizeEvent~e.altKey","e.shiftKey":"CB_Keyboard.normalizeEvent~e.shiftKey"}},"description":"<p>Tries to return the given [keyboard event]{@link https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent} with some properties normalized (since different clients can use different values) and perhaps some new properties added (in the case they were missing), when possible. The new attached methods and properties may include polyfills, etc. It also calls the {@link CB_Events.normalize} function internally. Some properties added or affected could be [keyCode]{@link https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/keyCode}, [location]{@link https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/location}, [ctrlKey]{@link https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/ctrlKey}, [altKey]{@link https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/altKey}, [shiftKey]{@link https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/shiftKey}, etc.</p>","kind":"function","params":[{"type":{"names":["Event"]},"description":"<p>[Keyboard event]{@link https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent} object. If not provided, it will use the value of &quot;event&quot;, &quot;window.event&quot;, &quot;Event&quot; or an empty object (&quot;{}&quot;).</p>","name":"e"}],"returns":[{"type":{"names":["Event"]},"description":"<p>Returns the [keyboard event]{@link https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent} object normalized.</p>"}],"todo":["Calculate (if possible) the values for location, ctrlKey, altKey, etc. when added, to simulate the expected behaviour."],"name":"normalizeEvent","longname":"CB_Keyboard.normalizeEvent","memberof":"CB_Keyboard","scope":"static"},{"comment":"/**\r\n\t * Returns the key code that is contained in the given [keyboard event]{@link https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent}.\r\n\t * @function\r\n\t * @param {Event} e - [Keyboard event]{@link https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent} object.\r\n\t * @param {boolean} [avoidNormalize=false] - If it is not set to true, it will call the {@link CB_Events.normalize} function internally before.\r\n\t * @returns {integer} Returns the key code.\r\n\t * @todo Have in mind that [keyCode]{@link https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/keyCode} is deprecated.\r\n\t */","meta":{"range":[108196,108616],"filename":"CB_Keyboard.js","lineno":3158,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\input","code":{"id":"astnode100087504","name":"CB_Keyboard.getKeyCode","type":"FunctionExpression","paramnames":["e","avoidNormalize"]},"vars":{"e":"CB_Keyboard.getKeyCode~e","keyCode":"CB_Keyboard.getKeyCode~keyCode"}},"description":"<p>Returns the key code that is contained in the given [keyboard event]{@link https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent}.</p>","kind":"function","params":[{"type":{"names":["Event"]},"description":"<p>[Keyboard event]{@link https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent} object.</p>","name":"e"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If it is not set to true, it will call the {@link CB_Events.normalize} function internally before.</p>","name":"avoidNormalize"}],"returns":[{"type":{"names":["integer"]},"description":"<p>Returns the key code.</p>"}],"todo":["Have in mind that [keyCode]{@link https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/keyCode} is deprecated."],"name":"getKeyCode","longname":"CB_Keyboard.getKeyCode","memberof":"CB_Keyboard","scope":"static"},{"comment":"/**\r\n\t * Clears (empties totally or partially) the {@link CB_Keyboard.keysDown} object which contains the detected keys pressed or released.\r\n\t * @function\r\n\t * @param {boolean} keepPressed - If set to true, it will keep the pressed keys.\r\n\t */","meta":{"range":[109925,110240],"filename":"CB_Keyboard.js","lineno":3206,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\input","code":{"id":"astnode100087667","name":"CB_Keyboard.clearKeysDown","type":"FunctionExpression","paramnames":["keepPressed"]},"vars":{"CB_Keyboard.keysDown":"CB_Keyboard.keysDown","keysDown":"CB_Keyboard.clearKeysDown~keysDown","keyCode":"CB_Keyboard.clearKeysDown~keyCode","keysDown[undefined]":"CB_Keyboard.clearKeysDown~keysDown.undefined]"}},"description":"<p>Clears (empties totally or partially) the {@link CB_Keyboard.keysDown} object which contains the detected keys pressed or released.</p>","kind":"function","params":[{"type":{"names":["boolean"]},"description":"<p>If set to true, it will keep the pressed keys.</p>","name":"keepPressed"}],"name":"clearKeysDown","longname":"CB_Keyboard.clearKeysDown","memberof":"CB_Keyboard","scope":"static"},{"comment":"/**\r\n\t * Returns the {@link CB_Keyboard.keysDown} object which contains the detected keys pressed or released.\r\n\t * @function\r\n\t * @returns {Object} Returns the {@link CB_Keyboard.keysDown} object.\r\n\t */","meta":{"range":[110456,110532],"filename":"CB_Keyboard.js","lineno":3226,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\input","code":{"id":"astnode100087717","name":"CB_Keyboard.getKeysDown","type":"FunctionExpression","paramnames":[]}},"description":"<p>Returns the {@link CB_Keyboard.keysDown} object which contains the detected keys pressed or released.</p>","kind":"function","returns":[{"type":{"names":["Object"]},"description":"<p>Returns the {@link CB_Keyboard.keysDown} object.</p>"}],"name":"getKeysDown","longname":"CB_Keyboard.getKeysDown","memberof":"CB_Keyboard","scope":"static"},{"comment":"/**\r\n\t * Returns whether the given key codes are being pressed (any of them or all at the same time, depending on the \"allPressed\" parameter).\r\n\t * @function\r\n\t * @param {integer|array|Object} keyCodes - An integer with the key code or a numeric array with the key codes that we want to check. It can also be an array of arrays, being each element a numeric array with the key codes that we want to check. Although not recommended (for performance purposes), this parameter can also support an object whose indexes are the keycodes (it will be converted to a numeric array internally).\r\n\t * @param {boolean} [allPressed=false] - If set true, the function will only return true in the case that all given key codes are currently being pressed. Otherwise, if set to false, the function will return true in the case that any of the given key codes is currently being pressed. When the \"keyCodes\" is an array of arrays with key codes, it will be considered that all keys are being pressed if each single array (all of them) has at least one of its key codes pressed.\r\n\t * @returns {boolean} If \"allPressed\" parameter is set to true, returns true in the case that all given key codes are currently being pressed. If \"allPressed\" parameter is set to false, returns true in the case that any of the given key codes is currently being pressed. In all other cases, it returns false.\r\n\t */","meta":{"range":[111926,113700],"filename":"CB_Keyboard.js","lineno":3239,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\input","code":{"id":"astnode100087728","name":"CB_Keyboard.isKeyDown","type":"FunctionExpression","paramnames":["keyCodes","allPressed"]},"vars":{"isDown":"CB_Keyboard.isKeyDown~isDown","keyCodes":"CB_Keyboard.isKeyDown~keyCodes","keyCodesArray":"CB_Keyboard.isKeyDown~keyCodesArray","keyCode":"CB_Keyboard.isKeyDown~keyCode","keyCodesArray[undefined]":"CB_Keyboard.isKeyDown~keyCodesArray.undefined]","keysDown":"CB_Keyboard.isKeyDown~keysDown","keyCodesLength":"CB_Keyboard.isKeyDown~keyCodesLength","x":"CB_Keyboard.isKeyDown~x"}},"description":"<p>Returns whether the given key codes are being pressed (any of them or all at the same time, depending on the &quot;allPressed&quot; parameter).</p>","kind":"function","params":[{"type":{"names":["integer","array","Object"]},"description":"<p>An integer with the key code or a numeric array with the key codes that we want to check. It can also be an array of arrays, being each element a numeric array with the key codes that we want to check. Although not recommended (for performance purposes), this parameter can also support an object whose indexes are the keycodes (it will be converted to a numeric array internally).</p>","name":"keyCodes"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If set true, the function will only return true in the case that all given key codes are currently being pressed. Otherwise, if set to false, the function will return true in the case that any of the given key codes is currently being pressed. When the &quot;keyCodes&quot; is an array of arrays with key codes, it will be considered that all keys are being pressed if each single array (all of them) has at least one of its key codes pressed.</p>","name":"allPressed"}],"returns":[{"type":{"names":["boolean"]},"description":"<p>If &quot;allPressed&quot; parameter is set to true, returns true in the case that all given key codes are currently being pressed. If &quot;allPressed&quot; parameter is set to false, returns true in the case that any of the given key codes is currently being pressed. In all other cases, it returns false.</p>"}],"name":"isKeyDown","longname":"CB_Keyboard.isKeyDown","memberof":"CB_Keyboard","scope":"static"},{"comment":"/**\r\n\t * Clears (empties totally or partially) the {@link CB_Keyboard.keysPressed} array which contains the key codes pressed recently.\r\n\t * @function\r\n * @param {boolean} keepPressed - If set to true, it will keep the pressed keys (taken from the {@link CB_Keyboard.keysDown} object).\r\n\t */","meta":{"range":[114598,115063],"filename":"CB_Keyboard.js","lineno":3314,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\input","code":{"id":"astnode100087939","name":"CB_Keyboard.clearKeysPressed","type":"FunctionExpression","paramnames":["keepPressed"]},"vars":{"CB_Keyboard.keysPressed":"CB_Keyboard.keysPressed","keysPressed":"CB_Keyboard.clearKeysPressed~keysPressed","keyCode":"CB_Keyboard.clearKeysPressed~keyCode","keysPressed[undefined]":"CB_Keyboard.clearKeysPressed~keysPressed.undefined]"}},"description":"<p>Clears (empties totally or partially) the {@link CB_Keyboard.keysPressed} array which contains the key codes pressed recently.</p>","kind":"function","params":[{"type":{"names":["boolean"]},"description":"<p>If set to true, it will keep the pressed keys (taken from the {@link CB_Keyboard.keysDown} object).</p>","name":"keepPressed"}],"name":"clearKeysPressed","longname":"CB_Keyboard.clearKeysPressed","memberof":"CB_Keyboard","scope":"static"},{"comment":"/**\r\n\t * Returns the {@link CB_Keyboard.keysPressed} array which contains the key codes pressed recently (it will be cleared after the chosen milliseconds set with the {@link CB_Keyboard.setKeysPressedExpiration} function).\r\n\t * @function\r\n\t * @returns {array} Returns the {@link CB_Keyboard.keysPressed} array.\r\n\t */","meta":{"range":[115394,115476],"filename":"CB_Keyboard.js","lineno":3337,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\input","code":{"id":"astnode100087997","name":"CB_Keyboard.getKeysPressed","type":"FunctionExpression","paramnames":[]}},"description":"<p>Returns the {@link CB_Keyboard.keysPressed} array which contains the key codes pressed recently (it will be cleared after the chosen milliseconds set with the {@link CB_Keyboard.setKeysPressedExpiration} function).</p>","kind":"function","returns":[{"type":{"names":["array"]},"description":"<p>Returns the {@link CB_Keyboard.keysPressed} array.</p>"}],"name":"getKeysPressed","longname":"CB_Keyboard.getKeysPressed","memberof":"CB_Keyboard","scope":"static"},{"comment":"/**\r\n\t * Sets the milliseconds after which the {@link CB_Keyboard.keysPressed} array is always cleared (emptied). The time always starts counting from zero when a key is pressed ([onKeyDown]{@link https://developer.mozilla.org/en-US/docs/Web/Events/keydown} event is fired).\r\n\t * @function\r\n\t * @param {integer} keysPressedExpiration - An integer greater than 0 (zero) representing the milliseconds after which we desire that the {@link CB_Keyboard.keysPressed} array is cleared (emptied), if no key is pressed during this time.\r\n\t * @returns {boolean} Returns true if the given time could be applied or false otherwise.\r\n\t */","meta":{"range":[116115,116505],"filename":"CB_Keyboard.js","lineno":3349,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\input","code":{"id":"astnode100088008","name":"CB_Keyboard.setKeysPressedExpiration","type":"FunctionExpression","paramnames":["keysPressedExpiration"]},"vars":{"CB_Keyboard._keysPressedExpiration":"CB_Keyboard._keysPressedExpiration"}},"description":"<p>Sets the milliseconds after which the {@link CB_Keyboard.keysPressed} array is always cleared (emptied). The time always starts counting from zero when a key is pressed ([onKeyDown]{@link https://developer.mozilla.org/en-US/docs/Web/Events/keydown} event is fired).</p>","kind":"function","params":[{"type":{"names":["integer"]},"description":"<p>An integer greater than 0 (zero) representing the milliseconds after which we desire that the {@link CB_Keyboard.keysPressed} array is cleared (emptied), if no key is pressed during this time.</p>","name":"keysPressedExpiration"}],"returns":[{"type":{"names":["boolean"]},"description":"<p>Returns true if the given time could be applied or false otherwise.</p>"}],"name":"setKeysPressedExpiration","longname":"CB_Keyboard.setKeysPressedExpiration","memberof":"CB_Keyboard","scope":"static"},{"comment":"/**\r\n\t * Returns the milliseconds after which the {@link CB_Keyboard.keysPressed} array is always cleared (emptied). The time always starts counting from zero again when a key is pressed ([onKeyDown]{@link https://developer.mozilla.org/en-US/docs/Web/Events/keydown} event is fired).\r\n\t To define this amount of time, the {@link CB_Keyboard.setKeysPressedExpiration} method must be used.\r\n\t * @function\r\n\t * @returns {integer} Returns the milliseconds of expiration defined for the {@link CB_Keyboard.keysPressed} array.\r\n\t */","meta":{"range":[117045,117148],"filename":"CB_Keyboard.js","lineno":3367,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\input","code":{"id":"astnode100088047","name":"CB_Keyboard.getKeysPressedExpiration","type":"FunctionExpression","paramnames":[]}},"description":"<p>Returns the milliseconds after which the {@link CB_Keyboard.keysPressed} array is always cleared (emptied). The time always starts counting from zero again when a key is pressed ([onKeyDown]{@link https://developer.mozilla.org/en-US/docs/Web/Events/keydown} event is fired).<br> To define this amount of time, the {@link CB_Keyboard.setKeysPressedExpiration} method must be used.</p>","kind":"function","returns":[{"type":{"names":["integer"]},"description":"<p>Returns the milliseconds of expiration defined for the {@link CB_Keyboard.keysPressed} array.</p>"}],"name":"getKeysPressedExpiration","longname":"CB_Keyboard.getKeysPressedExpiration","memberof":"CB_Keyboard","scope":"static"},{"comment":"/**\r\n\t * Clears (empties totally or partially) the {@link CB_Keyboard.typedString} string and the {@link CB_Keyboard.typedStringCodes} array.\r\n\t * @function\r\n\t * @param {boolean} keepPressed - If set to true, it will keep the values belonging to the currently-pressed keys (taken from the {@link CB_Keyboard.keysDown} object).\r\n\t */","meta":{"range":[119362,120764],"filename":"CB_Keyboard.js","lineno":3433,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\input","code":{"id":"astnode100088181","name":"CB_Keyboard.clearTypedString","type":"FunctionExpression","paramnames":["keepPressed"]},"vars":{"CB_Keyboard.typedStringCodes":"CB_Keyboard.typedStringCodes","CB_Keyboard.typedString":"CB_Keyboard.typedString","typedStringCodes":"CB_Keyboard.clearTypedString~typedStringCodes","typedString":"CB_Keyboard.clearTypedString~typedString","characterTyped":"CB_Keyboard.clearTypedString~characterTyped","keyCode":"CB_Keyboard.clearTypedString~keyCode","typedStringCodesLength":"CB_Keyboard.clearTypedString~typedStringCodesLength","x":"CB_Keyboard.clearTypedString~x","typedStringCodes[undefined]":"CB_Keyboard.clearTypedString~typedStringCodes.undefined]"}},"description":"<p>Clears (empties totally or partially) the {@link CB_Keyboard.typedString} string and the {@link CB_Keyboard.typedStringCodes} array.</p>","kind":"function","params":[{"type":{"names":["boolean"]},"description":"<p>If set to true, it will keep the values belonging to the currently-pressed keys (taken from the {@link CB_Keyboard.keysDown} object).</p>","name":"keepPressed"}],"name":"clearTypedString","longname":"CB_Keyboard.clearTypedString","memberof":"CB_Keyboard","scope":"static"},{"comment":"/**\r\n\t * Returns the {@link CB_Keyboard.typedString} string which contains the string typed recently (it will be cleared after the chosen milliseconds set with the {@link CB_Keyboard.setTypedStringExpiration} function).\r\n\t * @function\r\n\t * @returns {string} Returns the {@link CB_Keyboard.typedString} string.\r\n\t */","meta":{"range":[121092,121174],"filename":"CB_Keyboard.js","lineno":3484,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\input","code":{"id":"astnode100088294","name":"CB_Keyboard.getTypedString","type":"FunctionExpression","paramnames":[]}},"description":"<p>Returns the {@link CB_Keyboard.typedString} string which contains the string typed recently (it will be cleared after the chosen milliseconds set with the {@link CB_Keyboard.setTypedStringExpiration} function).</p>","kind":"function","returns":[{"type":{"names":["string"]},"description":"<p>Returns the {@link CB_Keyboard.typedString} string.</p>"}],"name":"getTypedString","longname":"CB_Keyboard.getTypedString","memberof":"CB_Keyboard","scope":"static"},{"comment":"/**\r\n\t * Returns the {@link CB_Keyboard.typedStringCodes} array which contains the key codes pressed that belongs to the string typed recently (it will be cleared after the chosen milliseconds set with the {@link CB_Keyboard.setTypedStringExpiration} function).\r\n\t * @function\r\n\t * @returns {array} Returns the {@link CB_Keyboard.typedStringCodes} array.\r\n\t */","meta":{"range":[121546,121638],"filename":"CB_Keyboard.js","lineno":3495,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\input","code":{"id":"astnode100088305","name":"CB_Keyboard.getTypedStringCodes","type":"FunctionExpression","paramnames":[]}},"description":"<p>Returns the {@link CB_Keyboard.typedStringCodes} array which contains the key codes pressed that belongs to the string typed recently (it will be cleared after the chosen milliseconds set with the {@link CB_Keyboard.setTypedStringExpiration} function).</p>","kind":"function","returns":[{"type":{"names":["array"]},"description":"<p>Returns the {@link CB_Keyboard.typedStringCodes} array.</p>"}],"name":"getTypedStringCodes","longname":"CB_Keyboard.getTypedStringCodes","memberof":"CB_Keyboard","scope":"static"},{"comment":"/**\r\n\t * Sets the milliseconds after which the {@link CB_Keyboard.typedString} string and the {@link CB_Keyboard.typedStringCodes} array are always cleared (emptied). The time always starts counting from zero when a key is pressed ([onKeyPress]{@link https://developer.mozilla.org/en-US/docs/Web/Events/keypress} event is fired).\r\n\t * @function\r\n\t * @param {integer} keysPressedExpiration - An integer greater than 0 (zero) representing the milliseconds after which we desire that the {@link CB_Keyboard.typedString} string and the {@link CB_Keyboard.typedStringCodes} array are cleared (emptied), if no key is pressed during this time.\r\n\t * @returns {boolean} Returns true if the given time could be applied or false otherwise.\r\n\t */","meta":{"range":[122385,122775],"filename":"CB_Keyboard.js","lineno":3507,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\input","code":{"id":"astnode100088316","name":"CB_Keyboard.setTypedStringExpiration","type":"FunctionExpression","paramnames":["typedStringExpiration"]},"vars":{"CB_Keyboard._typedStringExpiration":"CB_Keyboard._typedStringExpiration"}},"description":"<p>Sets the milliseconds after which the {@link CB_Keyboard.typedString} string and the {@link CB_Keyboard.typedStringCodes} array are always cleared (emptied). The time always starts counting from zero when a key is pressed ([onKeyPress]{@link https://developer.mozilla.org/en-US/docs/Web/Events/keypress} event is fired).</p>","kind":"function","params":[{"type":{"names":["integer"]},"description":"<p>An integer greater than 0 (zero) representing the milliseconds after which we desire that the {@link CB_Keyboard.typedString} string and the {@link CB_Keyboard.typedStringCodes} array are cleared (emptied), if no key is pressed during this time.</p>","name":"keysPressedExpiration"}],"returns":[{"type":{"names":["boolean"]},"description":"<p>Returns true if the given time could be applied or false otherwise.</p>"}],"name":"setTypedStringExpiration","longname":"CB_Keyboard.setTypedStringExpiration","memberof":"CB_Keyboard","scope":"static"},{"comment":"/**\r\n\t * Returns the milliseconds after which the {@link CB_Keyboard.typedString} string and the {@link CB_Keyboard.typedStringCodes} array are always cleared (emptied). The time always starts counting from zero again when a key is pressed ([onKeyPress]{@link https://developer.mozilla.org/en-US/docs/Web/Events/keypress} event is fired).\r\n\t To define this amount of time, the {@link CB_Keyboard.setTypedStringExpiration} method must be used.\r\n\t * @function\r\n\t * @returns {integer} Returns the milliseconds of expiration defined for the {@link CB_Keyboard.typedString} string and the {@link CB_Keyboard.typedStringCodes} array.\r\n\t */","meta":{"range":[123422,123525],"filename":"CB_Keyboard.js","lineno":3525,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\input","code":{"id":"astnode100088355","name":"CB_Keyboard.getTypedStringExpiration","type":"FunctionExpression","paramnames":[]}},"description":"<p>Returns the milliseconds after which the {@link CB_Keyboard.typedString} string and the {@link CB_Keyboard.typedStringCodes} array are always cleared (emptied). The time always starts counting from zero again when a key is pressed ([onKeyPress]{@link https://developer.mozilla.org/en-US/docs/Web/Events/keypress} event is fired).<br> To define this amount of time, the {@link CB_Keyboard.setTypedStringExpiration} method must be used.</p>","kind":"function","returns":[{"type":{"names":["integer"]},"description":"<p>Returns the milliseconds of expiration defined for the {@link CB_Keyboard.typedString} string and the {@link CB_Keyboard.typedStringCodes} array.</p>"}],"name":"getTypedStringExpiration","longname":"CB_Keyboard.getTypedStringExpiration","memberof":"CB_Keyboard","scope":"static"},{"comment":"/**\r\n\t * Tries to prevent the default behaviour that would produce the \"F11\" key of a given [keyboard event]{@link https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent} when the client is compatible with the HTML5 Fullscreen API and uses it to toggle (enable or disable) the fullscreen mode. It calls the {@link CB_Keyboard.normalizeEvent} function internally.\r\n\t * @function\r\n\t * @param {Event} e - [Keyboard event]{@link https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent} object.\r\n\t */","meta":{"range":[124048,125025],"filename":"CB_Keyboard.js","lineno":3536,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\input","code":{"id":"astnode100088366","name":"CB_Keyboard.preventF11Key","type":"FunctionExpression","paramnames":["e"]},"vars":{"e":"CB_Keyboard.preventF11Key~e","keyCode":"CB_Keyboard.preventF11Key~keyCode"}},"description":"<p>Tries to prevent the default behaviour that would produce the &quot;F11&quot; key of a given [keyboard event]{@link https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent} when the client is compatible with the HTML5 Fullscreen API and uses it to toggle (enable or disable) the fullscreen mode. It calls the {@link CB_Keyboard.normalizeEvent} function internally.</p>","kind":"function","params":[{"type":{"names":["Event"]},"description":"<p>[Keyboard event]{@link https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent} object.</p>","name":"e"}],"name":"preventF11Key","longname":"CB_Keyboard.preventF11Key","memberof":"CB_Keyboard","scope":"static"},{"comment":"/**\r\n\t * Callback that is called before loading a file and should return true if we want to load the file or false otherwise.\r\n\t * @memberof CB_Keyboard\r\n\t * @callback CB_Keyboard.EVENT_CALLBACK\r\n\t * @param {Event} e - [Keyboard event]{@link https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent} object.\r\n\t * @param {integer} keyCode - Key code which fired the event.\r\n\t */","meta":{"filename":"CB_Keyboard.js","lineno":3569,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\input","code":{}},"description":"<p>Callback that is called before loading a file and should return true if we want to load the file or false otherwise.</p>","memberof":"CB_Keyboard","kind":"typedef","name":"EVENT_CALLBACK","type":{"names":["function"]},"params":[{"type":{"names":["Event"]},"description":"<p>[Keyboard event]{@link https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent} object.</p>","name":"e"},{"type":{"names":["integer"]},"description":"<p>Key code which fired the event.</p>","name":"keyCode"}],"longname":"CB_Keyboard.EVENT_CALLBACK","scope":"static"},{"comment":"/**\r\n\t * Sets a function to execute when a key is pressed ([onKeyPress]{@link https://developer.mozilla.org/en-US/docs/Web/Events/keypress} event) or removes it.\r\n\t * @function\r\n\t * @param {CB_Keyboard.EVENT_CALLBACK|null} callbackFunction - The function (event listener) that we want to execute when the event is fired. The first parameter received for this function will be the event object (already normalized by the {@link CB_Keyboard.normalizeEvent} function) and the second one will be the key code associated. If a null value is used, the event will be removed.\r\n\t * @param {boolean} [keepOldFunction=true] - Defines whether we want to keep any possible previous event listener for the same target and event name or not.\r\n\t * @param {boolean} [useCapture=false] - Defines whether the event we want to add will use capture or not. This parameter will be effective only if the current client supports the [addEventListener]{@link https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener} method and will be used as its third parameter.\r\n\t * @param {Object} [target=document] - The target where we want to attach the event listener.\r\n\t */","meta":{"range":[126599,126795],"filename":"CB_Keyboard.js","lineno":3586,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\input","code":{"id":"astnode100088445","name":"CB_Keyboard.onKeyPress","type":"FunctionExpression","paramnames":["callbackFunction","keepOldFunction","useCapture","target"]}},"description":"<p>Sets a function to execute when a key is pressed ([onKeyPress]{@link https://developer.mozilla.org/en-US/docs/Web/Events/keypress} event) or removes it.</p>","kind":"function","params":[{"type":{"names":["CB_Keyboard.EVENT_CALLBACK","null"]},"description":"<p>The function (event listener) that we want to execute when the event is fired. The first parameter received for this function will be the event object (already normalized by the {@link CB_Keyboard.normalizeEvent} function) and the second one will be the key code associated. If a null value is used, the event will be removed.</p>","name":"callbackFunction"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":true,"description":"<p>Defines whether we want to keep any possible previous event listener for the same target and event name or not.</p>","name":"keepOldFunction"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>Defines whether the event we want to add will use capture or not. This parameter will be effective only if the current client supports the [addEventListener]{@link https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener} method and will be used as its third parameter.</p>","name":"useCapture"},{"type":{"names":["Object"]},"optional":true,"defaultvalue":"document","description":"<p>The target where we want to attach the event listener.</p>","name":"target"}],"name":"onKeyPress","longname":"CB_Keyboard.onKeyPress","memberof":"CB_Keyboard","scope":"static"},{"comment":"/**\r\n\t * Sets a function to execute when a key is down ([onKeyDown]{@link https://developer.mozilla.org/en-US/docs/Web/Events/keydown} event) or removes it.\r\n\t * @function\r\n\t * @param {CB_Keyboard.EVENT_CALLBACK|null} callbackFunction - The function (event listener) that we want to execute when the event is fired. The first parameter received for this function will be the event object (already normalized by the {@link CB_Keyboard.normalizeEvent} function) and the second one will be the key code associated. If a null value is used, the event will be removed.\r\n\t * @param {boolean} [keepOldFunction=true] - Defines whether we want to keep any possible previous event listener for the same target and event name or not.\r\n\t * @param {boolean} [useCapture=false] - Defines whether the event we want to add will use capture or not. This parameter will be effective only if the current client supports the [addEventListener]{@link https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener} method and will be used as its third parameter.\r\n\t * @param {Object} [target=document] - The target where we want to attach the event listener.\r\n\t */","meta":{"range":[127968,128162],"filename":"CB_Keyboard.js","lineno":3600,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\input","code":{"id":"astnode100088466","name":"CB_Keyboard.onKeyDown","type":"FunctionExpression","paramnames":["callbackFunction","keepOldFunction","useCapture","target"]}},"description":"<p>Sets a function to execute when a key is down ([onKeyDown]{@link https://developer.mozilla.org/en-US/docs/Web/Events/keydown} event) or removes it.</p>","kind":"function","params":[{"type":{"names":["CB_Keyboard.EVENT_CALLBACK","null"]},"description":"<p>The function (event listener) that we want to execute when the event is fired. The first parameter received for this function will be the event object (already normalized by the {@link CB_Keyboard.normalizeEvent} function) and the second one will be the key code associated. If a null value is used, the event will be removed.</p>","name":"callbackFunction"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":true,"description":"<p>Defines whether we want to keep any possible previous event listener for the same target and event name or not.</p>","name":"keepOldFunction"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>Defines whether the event we want to add will use capture or not. This parameter will be effective only if the current client supports the [addEventListener]{@link https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener} method and will be used as its third parameter.</p>","name":"useCapture"},{"type":{"names":["Object"]},"optional":true,"defaultvalue":"document","description":"<p>The target where we want to attach the event listener.</p>","name":"target"}],"name":"onKeyDown","longname":"CB_Keyboard.onKeyDown","memberof":"CB_Keyboard","scope":"static"},{"comment":"/**\r\n\t * Sets a function to execute when a key is released ([onKeyUp]{@link https://developer.mozilla.org/en-US/docs/Web/Events/keyup} event) or removes it.\r\n\t * @function\r\n\t * @param {CB_Keyboard.EVENT_CALLBACK|null} callbackFunction - The function (event listener) that we want to execute when the event is fired. The first parameter received for this function will be the event object (already normalized by the {@link CB_Keyboard.normalizeEvent} function) and the second one will be the key code associated. If a null value is used, the event will be removed.\r\n\t * @param {boolean} [keepOldFunction=true] - Defines whether we want to keep any possible previous event listener for the same target and event name or not.\r\n\t * @param {boolean} [useCapture=false] - Defines whether the event we want to add will use capture or not. This parameter will be effective only if the current client supports the [addEventListener]{@link https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener} method and will be used as its third parameter.\r\n\t * @param {Object} [target=document] - The target where we want to attach the event listener.\r\n\t */","meta":{"range":[129335,129525],"filename":"CB_Keyboard.js","lineno":3614,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\input","code":{"id":"astnode100088487","name":"CB_Keyboard.onKeyUp","type":"FunctionExpression","paramnames":["callbackFunction","keepOldFunction","useCapture","target"]}},"description":"<p>Sets a function to execute when a key is released ([onKeyUp]{@link https://developer.mozilla.org/en-US/docs/Web/Events/keyup} event) or removes it.</p>","kind":"function","params":[{"type":{"names":["CB_Keyboard.EVENT_CALLBACK","null"]},"description":"<p>The function (event listener) that we want to execute when the event is fired. The first parameter received for this function will be the event object (already normalized by the {@link CB_Keyboard.normalizeEvent} function) and the second one will be the key code associated. If a null value is used, the event will be removed.</p>","name":"callbackFunction"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":true,"description":"<p>Defines whether we want to keep any possible previous event listener for the same target and event name or not.</p>","name":"keepOldFunction"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>Defines whether the event we want to add will use capture or not. This parameter will be effective only if the current client supports the [addEventListener]{@link https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener} method and will be used as its third parameter.</p>","name":"useCapture"},{"type":{"names":["Object"]},"optional":true,"defaultvalue":"document","description":"<p>The target where we want to attach the event listener.</p>","name":"target"}],"name":"onKeyUp","longname":"CB_Keyboard.onKeyUp","memberof":"CB_Keyboard","scope":"static"},{"comment":"/**\r\n * @file Mouse and related management. Contains the {@link CB_Mouse} static class.\r\n * @author Joan Alba Maldonado <workindalian@gmail.com>\r\n */","meta":{"filename":"CB_Mouse.js","lineno":1,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\input","code":{}},"name":"CrossBase/input/CB_Mouse.js","kind":"file","description":"<p>Mouse and related management. Contains the {@link CB_Mouse} static class.</p>","preserveName":true,"author":["Joan Alba Maldonado <workindalian@gmail.com>"],"longname":"CrossBase/input/CB_Mouse.js","scope":"global"},{"comment":"/**\r\n * Static class to manage the mouse and related. It will return itself if it is tried to be instantiated.\r\n * @namespace\r\n */","meta":{"range":[293,335],"filename":"CB_Mouse.js","lineno":11,"columnno":4,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\input","code":{"id":"astnode100088624","name":"CB_Mouse","type":"FunctionExpression"}},"description":"<p>Static class to manage the mouse and related. It will return itself if it is tried to be instantiated.</p>","kind":"namespace","name":"CB_Mouse","longname":"CB_Mouse","scope":"global","params":[]},{"comment":"/**\r\n\t Property that keeps an object to manage the mouse cursor using a [DOM element]{@link https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement} containing an image for clients that do not support changing the cursor image by CSS.\r\n\t <br />\r\n\t Caution: Performance could be dramatically decreased while using this workaround.\r\n\t * @namespace CB_Mouse.CursorImage\r\n\t */","meta":{"filename":"CB_Mouse.js","lineno":27,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\input","code":{}},"description":"<p>Property that keeps an object to manage the mouse cursor using a [DOM element]{@link https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement} containing an image for clients that do not support changing the cursor image by CSS.<br> <br /><br> Caution: Performance could be dramatically decreased while using this workaround.</p>","kind":"namespace","name":"CursorImage","memberof":"CB_Mouse","longname":"CB_Mouse.CursorImage","scope":"static"},{"comment":"/**\r\n\t * Tries to return the given [mouse event object]{@link https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent} with some properties normalized (since different clients can use different values) and perhaps some new properties added (in the case they were missing), when possible. The new attached methods and properties may include polyfills, etc. It also calls the {@link CB_Events.normalize} function internally. Some properties added or affected could be [deltaX]{@link https://developer.mozilla.org/en-US/docs/Web/API/WheelEvent/deltaX}, [deltaY]{@link https://developer.mozilla.org/en-US/docs/Web/API/WheelEvent/deltaY}, [deltaZ]{@link https://developer.mozilla.org/en-US/docs/Web/API/WheelEvent/deltaZ}, [force]{@link https://developer.mozilla.org/es/docs/Web/API/MouseEvent/webkitForce}, [clientX]{@link https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/clientX}, [clientY]{@link https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/clientY}, etc.\r\n\t * @function\r\n\t * @param {Event} e - [Mouse event object]{@link https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent}. If not provided, it will use the value of \"event\", \"window.event\", \"Event\" or an empty object (\"{}\").\r\n\t * @returns {Event} Returns the [mouse event object]{@link https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent} normalized.\r\n\t * @todo Add more properties and methods to normalize ([pageX]{@link https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/pageX}, [pageY]{@link https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/pageY}, [offsetX]{@link https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/offsetX}, [offsetY]{@link https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/offsetY}, etc.).\r\n\t */","meta":{"range":[7186,10922],"filename":"CB_Mouse.js","lineno":127,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\input","code":{"id":"astnode100088997","name":"CB_Mouse.normalizeEvent","type":"FunctionExpression","paramnames":["e"]},"vars":{"e":"CB_Mouse.normalizeEvent~e","onWheelEventName":"CB_Mouse.normalizeEvent~onWheelEventName","e.deltaMode":"CB_Mouse.normalizeEvent~e.deltaMode","e.deltaX":"CB_Mouse.normalizeEvent~e.deltaX","e.deltaZ":"CB_Mouse.normalizeEvent~e.deltaZ","e.deltaY":"CB_Mouse.normalizeEvent~e.deltaY","event.deltaX":"event.deltaX","e.force":"CB_Mouse.normalizeEvent~e.force","e.forceNormalized":"CB_Mouse.normalizeEvent~e.forceNormalized","e.clientX":"CB_Mouse.normalizeEvent~e.clientX","e.clientY":"CB_Mouse.normalizeEvent~e.clientY","e.pageX":"CB_Mouse.normalizeEvent~e.pageX","e.pageY":"CB_Mouse.normalizeEvent~e.pageY","targetStyle":"CB_Mouse.normalizeEvent~targetStyle","e.offsetX":"CB_Mouse.normalizeEvent~e.offsetX","e.offsetY":"CB_Mouse.normalizeEvent~e.offsetY"}},"description":"<p>Tries to return the given [mouse event object]{@link https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent} with some properties normalized (since different clients can use different values) and perhaps some new properties added (in the case they were missing), when possible. The new attached methods and properties may include polyfills, etc. It also calls the {@link CB_Events.normalize} function internally. Some properties added or affected could be [deltaX]{@link https://developer.mozilla.org/en-US/docs/Web/API/WheelEvent/deltaX}, [deltaY]{@link https://developer.mozilla.org/en-US/docs/Web/API/WheelEvent/deltaY}, [deltaZ]{@link https://developer.mozilla.org/en-US/docs/Web/API/WheelEvent/deltaZ}, [force]{@link https://developer.mozilla.org/es/docs/Web/API/MouseEvent/webkitForce}, [clientX]{@link https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/clientX}, [clientY]{@link https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/clientY}, etc.</p>","kind":"function","params":[{"type":{"names":["Event"]},"description":"<p>[Mouse event object]{@link https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent}. If not provided, it will use the value of &quot;event&quot;, &quot;window.event&quot;, &quot;Event&quot; or an empty object (&quot;{}&quot;).</p>","name":"e"}],"returns":[{"type":{"names":["Event"]},"description":"<p>Returns the [mouse event object]{@link https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent} normalized.</p>"}],"todo":["Add more properties and methods to normalize ([pageX]{@link https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/pageX}, [pageY]{@link https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/pageY}, [offsetX]{@link https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/offsetX}, [offsetY]{@link https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/offsetY}, etc.)."],"name":"normalizeEvent","longname":"CB_Mouse.normalizeEvent","memberof":"CB_Mouse","scope":"static"},{"comment":"/**\r\n\t * Alias for {@link CB_Client.getButtons}.\r\n\t * @function CB_Client.getButtonsDown\r\n\t * @see {@link CB_Client.getButtons}\r\n\t */","meta":{"filename":"CB_Mouse.js","lineno":290,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\input","code":{}},"description":"<p>Alias for {@link CB_Client.getButtons}.</p>","kind":"function","name":"getButtonsDown","see":["{@link CB_Client.getButtons}"],"memberof":"CB_Client","longname":"CB_Client.getButtonsDown","scope":"static"},{"comment":"/**\r\n\t * Tells what mouse buttons are down (LEFT, MIDDLE and/or RIGHT buttons).\r\n\t * @function\r\n\t * @returns {Object} Returns an object using the following format (where \"true\" means that the button is being pressed): { LEFT : boolean, MIDDLE : boolean, RIGHT : boolean }\r\n\t */","meta":{"range":[13700,13799],"filename":"CB_Mouse.js","lineno":300,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\input","code":{"id":"astnode100089911","name":"CB_Mouse.getButtons","type":"AssignmentExpression","value":"CB_Mouse.getButtonsDown","paramnames":[]}},"description":"<p>Tells what mouse buttons are down (LEFT, MIDDLE and/or RIGHT buttons).</p>","kind":"function","returns":[{"type":{"names":["Object"]},"description":"<p>Returns an object using the following format (where &quot;true&quot; means that the button is being pressed): { LEFT : boolean, MIDDLE : boolean, RIGHT : boolean }</p>"}],"name":"getButtons","longname":"CB_Mouse.getButtons","memberof":"CB_Mouse","scope":"static"},{"comment":"/**\r\n\t * Gets and returns the X coordinate (horizontal position) of the mouse (relative to the window in desktop) in pixels.\r\n\t * @function\r\n\t * @param {Event} [e] - [Mouse event object]{@link https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent}. If not provided, the returning value will use the previously-cached value (updated the last time that the [onMouseMove]{@link https://developer.mozilla.org/en-US/docs/Web/API/Element/mousemove_event} event was fired).\r\n\t * @param {boolean} [ignoreScroll=false] - If set to true, the horizontal scroll position will not be added to the returning value.\r\n\t * @param {boolean} [ignoreLock=false] - If set to true, it will ignore whether the cursor is being locked or not. Otherwise, if set to false and the cursor is locked, the returning value will only have in mind the position in the locking element.\r\n\t * @returns {number} Returns the X coordinate (horizontal position) of the mouse (relative to the window in desktop) in pixels.\r\n\t */","meta":{"range":[14806,16401],"filename":"CB_Mouse.js","lineno":314,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\input","code":{"id":"astnode100089926","name":"CB_Mouse.getX","type":"FunctionExpression","paramnames":["e","ignoreScroll","ignoreLock"]},"vars":{"mouseX":"CB_Mouse.getX~mouseX","CB_Mouse._x":"CB_Mouse._x","CB_Mouse._xMovement":"CB_Mouse._xMovement"}},"description":"<p>Gets and returns the X coordinate (horizontal position) of the mouse (relative to the window in desktop) in pixels.</p>","kind":"function","params":[{"type":{"names":["Event"]},"optional":true,"description":"<p>[Mouse event object]{@link https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent}. If not provided, the returning value will use the previously-cached value (updated the last time that the [onMouseMove]{@link https://developer.mozilla.org/en-US/docs/Web/API/Element/mousemove_event} event was fired).</p>","name":"e"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If set to true, the horizontal scroll position will not be added to the returning value.</p>","name":"ignoreScroll"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If set to true, it will ignore whether the cursor is being locked or not. Otherwise, if set to false and the cursor is locked, the returning value will only have in mind the position in the locking element.</p>","name":"ignoreLock"}],"returns":[{"type":{"names":["number"]},"description":"<p>Returns the X coordinate (horizontal position) of the mouse (relative to the window in desktop) in pixels.</p>"}],"name":"getX","longname":"CB_Mouse.getX","memberof":"CB_Mouse","scope":"static"},{"comment":"/**\r\n\t * Gets and returns the Y coordinate (vertical position) of the mouse (relative to the window in desktop) in pixels.\r\n\t * @function\r\n\t * @param {Event} [e] - [Mouse event object]{@link https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent}. If not provided, the returning value will use the previously-cached value (updated the last time that the [onMouseMove]{@link https://developer.mozilla.org/en-US/docs/Web/API/Element/mousemove_event} event was fired).\r\n\t * @param {boolean} [ignoreScroll=false] - If set to true, the vertical scroll position will not be added to the returning value.\r\n\t * @param {boolean} [ignoreLock=false] - If set to true, it will ignore whether the cursor is being locked or not. Otherwise, if set to false and the cursor is locked, the returning value will only have in mind the position in the locking element.\r\n\t * @returns {number} Returns the Y coordinate (vertical position) of the mouse (relative to the window in desktop) in pixels.\r\n\t */","meta":{"range":[17402,18998],"filename":"CB_Mouse.js","lineno":374,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\input","code":{"id":"astnode100090077","name":"CB_Mouse.getY","type":"FunctionExpression","paramnames":["e","ignoreScroll","ignoreLock"]},"vars":{"mouseY":"CB_Mouse.getY~mouseY","CB_Mouse._y":"CB_Mouse._y","CB_Mouse._yMovement":"CB_Mouse._yMovement"}},"description":"<p>Gets and returns the Y coordinate (vertical position) of the mouse (relative to the window in desktop) in pixels.</p>","kind":"function","params":[{"type":{"names":["Event"]},"optional":true,"description":"<p>[Mouse event object]{@link https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent}. If not provided, the returning value will use the previously-cached value (updated the last time that the [onMouseMove]{@link https://developer.mozilla.org/en-US/docs/Web/API/Element/mousemove_event} event was fired).</p>","name":"e"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If set to true, the vertical scroll position will not be added to the returning value.</p>","name":"ignoreScroll"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If set to true, it will ignore whether the cursor is being locked or not. Otherwise, if set to false and the cursor is locked, the returning value will only have in mind the position in the locking element.</p>","name":"ignoreLock"}],"returns":[{"type":{"names":["number"]},"description":"<p>Returns the Y coordinate (vertical position) of the mouse (relative to the window in desktop) in pixels.</p>"}],"name":"getY","longname":"CB_Mouse.getY","memberof":"CB_Mouse","scope":"static"},{"comment":"/**\r\n\t * Gets and returns the current X coordinate (horizontal position) in pixels of the mouse relative to a given X position. The returning value uses the previously-cached value (updated the last time that the [onMouseMove]{@link https://developer.mozilla.org/en-US/docs/Web/API/Element/mousemove_event} event was fired).\r\n\t * @function\r\n\t * @param {number} x - The X coordinate (horizontal position) in pixels. The returning value will be calculated relatively to it.\r\n\t * @param {boolean} [ignoreScroll=false] - If set to true, the horizontal scroll position will not be added to the returning value.\r\n\t * @returns {number} Returns the current X coordinate (horizontal position) in pixels of the mouse relative to a given X position.\r\n\t * @todo Think about allowing to define an \"e\" parameter with the [mouse event object]{@link https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent}. \r\n\t */","meta":{"range":[19916,20192],"filename":"CB_Mouse.js","lineno":434,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\input","code":{"id":"astnode100090228","name":"CB_Mouse.getXRelative","type":"FunctionExpression","paramnames":["x","ignoreScroll"]},"vars":{"mouseX":"CB_Mouse.getXRelative~mouseX","x":"CB_Mouse.getXRelative~x","mouseRelativeX":"CB_Mouse.getXRelative~mouseRelativeX"}},"description":"<p>Gets and returns the current X coordinate (horizontal position) in pixels of the mouse relative to a given X position. The returning value uses the previously-cached value (updated the last time that the [onMouseMove]{@link https://developer.mozilla.org/en-US/docs/Web/API/Element/mousemove_event} event was fired).</p>","kind":"function","params":[{"type":{"names":["number"]},"description":"<p>The X coordinate (horizontal position) in pixels. The returning value will be calculated relatively to it.</p>","name":"x"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If set to true, the horizontal scroll position will not be added to the returning value.</p>","name":"ignoreScroll"}],"returns":[{"type":{"names":["number"]},"description":"<p>Returns the current X coordinate (horizontal position) in pixels of the mouse relative to a given X position.</p>"}],"todo":["Think about allowing to define an \"e\" parameter with the [mouse event object]{@link https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent}."],"name":"getXRelative","longname":"CB_Mouse.getXRelative","memberof":"CB_Mouse","scope":"static"},{"comment":"/**\r\n\t * Gets and returns the current Y coordinate (vertical position) in pixels of the mouse relative to a given Y position. The returning value uses the previously-cached value (updated the last time that the [onMouseMove]{@link https://developer.mozilla.org/en-US/docs/Web/API/Element/mousemove_event} event was fired).\r\n\t * @function\r\n\t * @param {number} y - The Y coordinate (vertical position) in pixels. The returning value will be calculated relatively to it.\r\n\t * @param {boolean} [ignoreScroll=false] - If set to true, the vertical scroll position will not be added to the returning value.\r\n\t * @returns {number} Returns the current Y coordinate (vertical position) in pixels of the mouse relative to a given Y position.\r\n\t * @todo Think about allowing to define an \"e\" parameter with the [mouse event object]{@link https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent}.\r\n\t */","meta":{"range":[21100,21375],"filename":"CB_Mouse.js","lineno":455,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\input","code":{"id":"astnode100090264","name":"CB_Mouse.getYRelative","type":"FunctionExpression","paramnames":["y","ignoreScroll"]},"vars":{"mouseY":"CB_Mouse.getYRelative~mouseY","y":"CB_Mouse.getYRelative~y","mouseRelativeY":"CB_Mouse.getYRelative~mouseRelativeY"}},"description":"<p>Gets and returns the current Y coordinate (vertical position) in pixels of the mouse relative to a given Y position. The returning value uses the previously-cached value (updated the last time that the [onMouseMove]{@link https://developer.mozilla.org/en-US/docs/Web/API/Element/mousemove_event} event was fired).</p>","kind":"function","params":[{"type":{"names":["number"]},"description":"<p>The Y coordinate (vertical position) in pixels. The returning value will be calculated relatively to it.</p>","name":"y"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If set to true, the vertical scroll position will not be added to the returning value.</p>","name":"ignoreScroll"}],"returns":[{"type":{"names":["number"]},"description":"<p>Returns the current Y coordinate (vertical position) in pixels of the mouse relative to a given Y position.</p>"}],"todo":["Think about allowing to define an \"e\" parameter with the [mouse event object]{@link https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent}."],"name":"getYRelative","longname":"CB_Mouse.getYRelative","memberof":"CB_Mouse","scope":"static"},{"comment":"/**\r\n\t * Returns the current X (horizontal) movement (useful when the mouse pointer is locked) in pixels. More information: [MouseEvent.movementX]{@link https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/movementX}.\r\n\t * @function\r\n\t * @param {Event} [e] - [Mouse event object]{@link https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent}. If not provided, the returning value will use the previously-cached value (updated the last time that the [onMouseMove]{@link https://developer.mozilla.org/en-US/docs/Web/API/Element/mousemove_event} event was fired).\r\n\t * @returns {number} Returns the current X (horizontal) movement (useful when the mouse pointer is locked) in pixels.\r\n\t */","meta":{"range":[22086,22334],"filename":"CB_Mouse.js","lineno":474,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\input","code":{"id":"astnode100090300","name":"CB_Mouse.getXMovement","type":"FunctionExpression","paramnames":["e"]},"vars":{"CB_Mouse._xMovement":"CB_Mouse._xMovement"}},"description":"<p>Returns the current X (horizontal) movement (useful when the mouse pointer is locked) in pixels. More information: [MouseEvent.movementX]{@link https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/movementX}.</p>","kind":"function","params":[{"type":{"names":["Event"]},"optional":true,"description":"<p>[Mouse event object]{@link https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent}. If not provided, the returning value will use the previously-cached value (updated the last time that the [onMouseMove]{@link https://developer.mozilla.org/en-US/docs/Web/API/Element/mousemove_event} event was fired).</p>","name":"e"}],"returns":[{"type":{"names":["number"]},"description":"<p>Returns the current X (horizontal) movement (useful when the mouse pointer is locked) in pixels.</p>"}],"name":"getXMovement","longname":"CB_Mouse.getXMovement","memberof":"CB_Mouse","scope":"static"},{"comment":"/**\r\n\t * Returns the current Y (vertical) movement (useful when the mouse pointer is locked) in pixels. More information: [MouseEvent.movementY]{@link https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/movementY}.\r\n\t * @function\r\n\t * @param {Event} [e] - [Mouse event object]{@link https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent}. If not provided, the returning value will use the previously-cached value (updated the last time that the [onMouseMove]{@link https://developer.mozilla.org/en-US/docs/Web/API/Element/mousemove_event} event was fired).\r\n\t * @returns {number} Returns the current Y (vertical) movement (useful when the mouse pointer is locked) in pixels.\r\n\t */","meta":{"range":[23042,23290],"filename":"CB_Mouse.js","lineno":488,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\input","code":{"id":"astnode100090333","name":"CB_Mouse.getYMovement","type":"FunctionExpression","paramnames":["e"]},"vars":{"CB_Mouse._yMovement":"CB_Mouse._yMovement"}},"description":"<p>Returns the current Y (vertical) movement (useful when the mouse pointer is locked) in pixels. More information: [MouseEvent.movementY]{@link https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/movementY}.</p>","kind":"function","params":[{"type":{"names":["Event"]},"optional":true,"description":"<p>[Mouse event object]{@link https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent}. If not provided, the returning value will use the previously-cached value (updated the last time that the [onMouseMove]{@link https://developer.mozilla.org/en-US/docs/Web/API/Element/mousemove_event} event was fired).</p>","name":"e"}],"returns":[{"type":{"names":["number"]},"description":"<p>Returns the current Y (vertical) movement (useful when the mouse pointer is locked) in pixels.</p>"}],"name":"getYMovement","longname":"CB_Mouse.getYMovement","memberof":"CB_Mouse","scope":"static"},{"comment":"/**\r\n\t * Sets a function to execute when a click happens ([onMouseMove]{@link https://developer.mozilla.org/en-US/docs/Web/API/Element/mousemove_event} event) or removes it.\r\n\t * @function\r\n\t * @param {function|null} callbackFunction - The function (event listener) that we want to execute when the event is fired. The first and unique parameter received for this function will be the [mouse event object]{@link https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent} (already normalized by the {@link CB_Mouse.normalizeEvent} function). If a null value is used, the event will be removed.\r\n\t * @param {boolean} [keepOldFunction=true] - Defines whether we want to keep any possible previous event listener for the same target and event name or not.\r\n\t * @param {boolean} [useCapture=false] - Defines whether the event we want to add will use capture or not. This parameter will be effective only if the current client supports the [addEventListener]{@link https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener} method and will be used as its third parameter.\r\n\t * @param {Object} [target=document] - The target where we want to attach the event listener.\r\n\t */","meta":{"range":[24495,24682],"filename":"CB_Mouse.js","lineno":504,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\input","code":{"id":"astnode100090366","name":"CB_Mouse.onMove","type":"FunctionExpression","paramnames":["callbackFunction","keepOldFunction","useCapture","target"]}},"description":"<p>Sets a function to execute when a click happens ([onMouseMove]{@link https://developer.mozilla.org/en-US/docs/Web/API/Element/mousemove_event} event) or removes it.</p>","kind":"function","params":[{"type":{"names":["function","null"]},"description":"<p>The function (event listener) that we want to execute when the event is fired. The first and unique parameter received for this function will be the [mouse event object]{@link https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent} (already normalized by the {@link CB_Mouse.normalizeEvent} function). If a null value is used, the event will be removed.</p>","name":"callbackFunction"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":true,"description":"<p>Defines whether we want to keep any possible previous event listener for the same target and event name or not.</p>","name":"keepOldFunction"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>Defines whether the event we want to add will use capture or not. This parameter will be effective only if the current client supports the [addEventListener]{@link https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener} method and will be used as its third parameter.</p>","name":"useCapture"},{"type":{"names":["Object"]},"optional":true,"defaultvalue":"document","description":"<p>The target where we want to attach the event listener.</p>","name":"target"}],"name":"onMove","longname":"CB_Mouse.onMove","memberof":"CB_Mouse","scope":"static"},{"comment":"/**\r\n\t * Sets a function to execute when a click happens ([onClick]{@link https://developer.mozilla.org/en-US/docs/Web/API/Element/click_event} event) or removes it.\r\n\t * @function\r\n\t * @param {function|null} callbackFunction - The function (event listener) that we want to execute when the event is fired. The first and unique parameter received for this function will be the [mouse event object]{@link https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent} (already normalized by the {@link CB_Mouse.normalizeEvent} function). If a null value is used, the event will be removed.\r\n\t * @param {boolean} [keepOldFunction=true] - Defines whether we want to keep any possible previous event listener for the same target and event name or not.\r\n\t * @param {boolean} [useCapture=false] - Defines whether the event we want to add will use capture or not. This parameter will be effective only if the current client supports the [addEventListener]{@link https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener} method and will be used as its third parameter.\r\n\t * @param {Object} [target=document] - The target where we want to attach the event listener.\r\n\t */","meta":{"range":[25878,26062],"filename":"CB_Mouse.js","lineno":518,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\input","code":{"id":"astnode100090387","name":"CB_Mouse.onClick","type":"FunctionExpression","paramnames":["callbackFunction","keepOldFunction","useCapture","target"]}},"description":"<p>Sets a function to execute when a click happens ([onClick]{@link https://developer.mozilla.org/en-US/docs/Web/API/Element/click_event} event) or removes it.</p>","kind":"function","params":[{"type":{"names":["function","null"]},"description":"<p>The function (event listener) that we want to execute when the event is fired. The first and unique parameter received for this function will be the [mouse event object]{@link https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent} (already normalized by the {@link CB_Mouse.normalizeEvent} function). If a null value is used, the event will be removed.</p>","name":"callbackFunction"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":true,"description":"<p>Defines whether we want to keep any possible previous event listener for the same target and event name or not.</p>","name":"keepOldFunction"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>Defines whether the event we want to add will use capture or not. This parameter will be effective only if the current client supports the [addEventListener]{@link https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener} method and will be used as its third parameter.</p>","name":"useCapture"},{"type":{"names":["Object"]},"optional":true,"defaultvalue":"document","description":"<p>The target where we want to attach the event listener.</p>","name":"target"}],"name":"onClick","longname":"CB_Mouse.onClick","memberof":"CB_Mouse","scope":"static"},{"comment":"/**\r\n\t * Sets a function to execute when a click happens ([onDblClick]{@link https://developer.mozilla.org/en-US/docs/Web/API/Element/dblclick_event} event) or removes it.\r\n\t * @function\r\n\t * @param {function|null} callbackFunction - The function (event listener) that we want to execute when the event is fired. The first and unique parameter received for this function will be the [mouse event object]{@link https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent} (already normalized by the {@link CB_Mouse.normalizeEvent} function). If a null value is used, the event will be removed.\r\n\t * @param {boolean} [keepOldFunction=true] - Defines whether we want to keep any possible previous event listener for the same target and event name or not.\r\n\t * @param {boolean} [useCapture=false] - Defines whether the event we want to add will use capture or not. This parameter will be effective only if the current client supports the [addEventListener]{@link https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener} method and will be used as its third parameter.\r\n\t * @param {Object} [target=document] - The target where we want to attach the event listener.\r\n\t */","meta":{"range":[27264,27479],"filename":"CB_Mouse.js","lineno":532,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\input","code":{"id":"astnode100090408","name":"CB_Mouse.onDblClick","type":"AssignmentExpression","value":"CB_Mouse.onDoubleClick","paramnames":[]}},"description":"<p>Sets a function to execute when a click happens ([onDblClick]{@link https://developer.mozilla.org/en-US/docs/Web/API/Element/dblclick_event} event) or removes it.</p>","kind":"function","params":[{"type":{"names":["function","null"]},"description":"<p>The function (event listener) that we want to execute when the event is fired. The first and unique parameter received for this function will be the [mouse event object]{@link https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent} (already normalized by the {@link CB_Mouse.normalizeEvent} function). If a null value is used, the event will be removed.</p>","name":"callbackFunction"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":true,"description":"<p>Defines whether we want to keep any possible previous event listener for the same target and event name or not.</p>","name":"keepOldFunction"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>Defines whether the event we want to add will use capture or not. This parameter will be effective only if the current client supports the [addEventListener]{@link https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener} method and will be used as its third parameter.</p>","name":"useCapture"},{"type":{"names":["Object"]},"optional":true,"defaultvalue":"document","description":"<p>The target where we want to attach the event listener.</p>","name":"target"}],"name":"onDblClick","longname":"CB_Mouse.onDblClick","memberof":"CB_Mouse","scope":"static"},{"comment":"/**\r\n\t * Sets a function to execute when a mouse button is down ([onMouseDown]{@link https://developer.mozilla.org/en-US/docs/Web/API/Element/mousedown_event} event) or removes it.\r\n\t * @function\r\n\t * @param {function|null} callbackFunction - The function (event listener) that we want to execute when the event is fired. The first and unique parameter received for this function will be the [mouse event object]{@link https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent} (already normalized by the {@link CB_Mouse.normalizeEvent} function). If a null value is used, the event will be removed.\r\n\t * @param {boolean} [keepOldFunction=true] - Defines whether we want to keep any possible previous event listener for the same target and event name or not.\r\n\t * @param {boolean} [useCapture=false] - Defines whether the event we want to add will use capture or not. This parameter will be effective only if the current client supports the [addEventListener]{@link https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener} method and will be used as its third parameter.\r\n\t * @param {Object} [target=document] - The target where we want to attach the event listener.\r\n\t */","meta":{"range":[28690,28883],"filename":"CB_Mouse.js","lineno":546,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\input","code":{"id":"astnode100090433","name":"CB_Mouse.onButtonDown","type":"FunctionExpression","paramnames":["callbackFunction","keepOldFunction","useCapture","target"]}},"description":"<p>Sets a function to execute when a mouse button is down ([onMouseDown]{@link https://developer.mozilla.org/en-US/docs/Web/API/Element/mousedown_event} event) or removes it.</p>","kind":"function","params":[{"type":{"names":["function","null"]},"description":"<p>The function (event listener) that we want to execute when the event is fired. The first and unique parameter received for this function will be the [mouse event object]{@link https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent} (already normalized by the {@link CB_Mouse.normalizeEvent} function). If a null value is used, the event will be removed.</p>","name":"callbackFunction"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":true,"description":"<p>Defines whether we want to keep any possible previous event listener for the same target and event name or not.</p>","name":"keepOldFunction"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>Defines whether the event we want to add will use capture or not. This parameter will be effective only if the current client supports the [addEventListener]{@link https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener} method and will be used as its third parameter.</p>","name":"useCapture"},{"type":{"names":["Object"]},"optional":true,"defaultvalue":"document","description":"<p>The target where we want to attach the event listener.</p>","name":"target"}],"name":"onButtonDown","longname":"CB_Mouse.onButtonDown","memberof":"CB_Mouse","scope":"static"},{"comment":"/**\r\n\t * Sets a function to execute when a mouse button is up ([onMouseUp]{@link https://developer.mozilla.org/en-US/docs/Web/API/Element/mouseup_event} event) or removes it.\r\n\t * @function\r\n\t * @param {function|null} callbackFunction - The function (event listener) that we want to execute when the event is fired. The first and unique parameter received for this function will be the [mouse event object]{@link https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent} (already normalized by the {@link CB_Mouse.normalizeEvent} function). If a null value is used, the event will be removed.\r\n\t * @param {boolean} [keepOldFunction=true] - Defines whether we want to keep any possible previous event listener for the same target and event name or not.\r\n\t * @param {boolean} [useCapture=false] - Defines whether the event we want to add will use capture or not. This parameter will be effective only if the current client supports the [addEventListener]{@link https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener} method and will be used as its third parameter.\r\n\t * @param {Object} [target=document] - The target where we want to attach the event listener.\r\n\t */","meta":{"range":[30088,30277],"filename":"CB_Mouse.js","lineno":560,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\input","code":{"id":"astnode100090454","name":"CB_Mouse.onButtonUp","type":"FunctionExpression","paramnames":["callbackFunction","keepOldFunction","useCapture","target"]}},"description":"<p>Sets a function to execute when a mouse button is up ([onMouseUp]{@link https://developer.mozilla.org/en-US/docs/Web/API/Element/mouseup_event} event) or removes it.</p>","kind":"function","params":[{"type":{"names":["function","null"]},"description":"<p>The function (event listener) that we want to execute when the event is fired. The first and unique parameter received for this function will be the [mouse event object]{@link https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent} (already normalized by the {@link CB_Mouse.normalizeEvent} function). If a null value is used, the event will be removed.</p>","name":"callbackFunction"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":true,"description":"<p>Defines whether we want to keep any possible previous event listener for the same target and event name or not.</p>","name":"keepOldFunction"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>Defines whether the event we want to add will use capture or not. This parameter will be effective only if the current client supports the [addEventListener]{@link https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener} method and will be used as its third parameter.</p>","name":"useCapture"},{"type":{"names":["Object"]},"optional":true,"defaultvalue":"document","description":"<p>The target where we want to attach the event listener.</p>","name":"target"}],"name":"onButtonUp","longname":"CB_Mouse.onButtonUp","memberof":"CB_Mouse","scope":"static"},{"comment":"/**\r\n\t * Sets a function to execute when a mouse leaves a [DOM element]{@link https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement} ([onMouseLeave]{@link https://developer.mozilla.org/en-US/docs/Web/API/Element/mouseleave_event} event) or removes it.\r\n\t * @function\r\n\t * @param {function|null} callbackFunction - The function (event listener) that we want to execute when the event is fired. The first and unique parameter received for this function will be the [mouse event object]{@link https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent} (already normalized by the {@link CB_Mouse.normalizeEvent} function). If a null value is used, the event will be removed.\r\n\t * @param {boolean} [keepOldFunction=true] - Defines whether we want to keep any possible previous event listener for the same target and event name or not.\r\n\t * @param {boolean} [useCapture=false] - Defines whether the event we want to add will use capture or not. This parameter will be effective only if the current client supports the [addEventListener]{@link https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener} method and will be used as its third parameter.\r\n\t * @param {Object} [target=window] - The target where we want to attach the event listener.\r\n\t */","meta":{"range":[31565,31754],"filename":"CB_Mouse.js","lineno":574,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\input","code":{"id":"astnode100090475","name":"CB_Mouse.onLeave","type":"FunctionExpression","paramnames":["callbackFunction","keepOldFunction","useCapture","target"]}},"description":"<p>Sets a function to execute when a mouse leaves a [DOM element]{@link https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement} ([onMouseLeave]{@link https://developer.mozilla.org/en-US/docs/Web/API/Element/mouseleave_event} event) or removes it.</p>","kind":"function","params":[{"type":{"names":["function","null"]},"description":"<p>The function (event listener) that we want to execute when the event is fired. The first and unique parameter received for this function will be the [mouse event object]{@link https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent} (already normalized by the {@link CB_Mouse.normalizeEvent} function). If a null value is used, the event will be removed.</p>","name":"callbackFunction"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":true,"description":"<p>Defines whether we want to keep any possible previous event listener for the same target and event name or not.</p>","name":"keepOldFunction"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>Defines whether the event we want to add will use capture or not. This parameter will be effective only if the current client supports the [addEventListener]{@link https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener} method and will be used as its third parameter.</p>","name":"useCapture"},{"type":{"names":["Object"]},"optional":true,"defaultvalue":"window","description":"<p>The target where we want to attach the event listener.</p>","name":"target"}],"name":"onLeave","longname":"CB_Mouse.onLeave","memberof":"CB_Mouse","scope":"static"},{"comment":"/**\r\n\t * Sets a function to execute when a mouse is over a [DOM element]{@link https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement} ([onMouseOver]{@link https://developer.mozilla.org/en-US/docs/Web/API/Element/mouseover_event} event) or removes it.\r\n\t * @function\r\n\t * @param {function|null} callbackFunction - The function (event listener) that we want to execute when the event is fired. The first and unique parameter received for this function will be the [mouse event object]{@link https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent} (already normalized by the {@link CB_Mouse.normalizeEvent} function). If a null value is used, the event will be removed.\r\n\t * @param {boolean} [keepOldFunction=true] - Defines whether we want to keep any possible previous event listener for the same target and event name or not.\r\n\t * @param {boolean} [useCapture=false] - Defines whether the event we want to add will use capture or not. This parameter will be effective only if the current client supports the [addEventListener]{@link https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener} method and will be used as its third parameter.\r\n\t * @param {Object} [target=document] - The target where we want to attach the event listener.\r\n\t */","meta":{"range":[33044,33231],"filename":"CB_Mouse.js","lineno":588,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\input","code":{"id":"astnode100090496","name":"CB_Mouse.onOver","type":"FunctionExpression","paramnames":["callbackFunction","keepOldFunction","useCapture","target"]}},"description":"<p>Sets a function to execute when a mouse is over a [DOM element]{@link https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement} ([onMouseOver]{@link https://developer.mozilla.org/en-US/docs/Web/API/Element/mouseover_event} event) or removes it.</p>","kind":"function","params":[{"type":{"names":["function","null"]},"description":"<p>The function (event listener) that we want to execute when the event is fired. The first and unique parameter received for this function will be the [mouse event object]{@link https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent} (already normalized by the {@link CB_Mouse.normalizeEvent} function). If a null value is used, the event will be removed.</p>","name":"callbackFunction"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":true,"description":"<p>Defines whether we want to keep any possible previous event listener for the same target and event name or not.</p>","name":"keepOldFunction"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>Defines whether the event we want to add will use capture or not. This parameter will be effective only if the current client supports the [addEventListener]{@link https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener} method and will be used as its third parameter.</p>","name":"useCapture"},{"type":{"names":["Object"]},"optional":true,"defaultvalue":"document","description":"<p>The target where we want to attach the event listener.</p>","name":"target"}],"name":"onOver","longname":"CB_Mouse.onOver","memberof":"CB_Mouse","scope":"static"},{"comment":"/**\r\n\t * Sets a function to execute when a mouse gets out of a [DOM element]{@link https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement} ([onMouseOut]{@link https://developer.mozilla.org/en-US/docs/Web/API/Element/mouseout_event} event) or removes it.\r\n\t * @function\r\n\t * @param {function|null} callbackFunction - The function (event listener) that we want to execute when the event is fired. The first and unique parameter received for this function will be the [mouse event object]{@link https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent} (already normalized by the {@link CB_Mouse.normalizeEvent} function). If a null value is used, the event will be removed.\r\n\t * @param {boolean} [keepOldFunction=true] - Defines whether we want to keep any possible previous event listener for the same target and event name or not.\r\n\t * @param {boolean} [useCapture=false] - Defines whether the event we want to add will use capture or not. This parameter will be effective only if the current client supports the [addEventListener]{@link https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener} method and will be used as its third parameter.\r\n\t * @param {Object} [target=document] - The target where we want to attach the event listener.\r\n\t */","meta":{"range":[34523,34708],"filename":"CB_Mouse.js","lineno":602,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\input","code":{"id":"astnode100090517","name":"CB_Mouse.onOut","type":"FunctionExpression","paramnames":["callbackFunction","keepOldFunction","useCapture","target"]}},"description":"<p>Sets a function to execute when a mouse gets out of a [DOM element]{@link https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement} ([onMouseOut]{@link https://developer.mozilla.org/en-US/docs/Web/API/Element/mouseout_event} event) or removes it.</p>","kind":"function","params":[{"type":{"names":["function","null"]},"description":"<p>The function (event listener) that we want to execute when the event is fired. The first and unique parameter received for this function will be the [mouse event object]{@link https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent} (already normalized by the {@link CB_Mouse.normalizeEvent} function). If a null value is used, the event will be removed.</p>","name":"callbackFunction"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":true,"description":"<p>Defines whether we want to keep any possible previous event listener for the same target and event name or not.</p>","name":"keepOldFunction"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>Defines whether the event we want to add will use capture or not. This parameter will be effective only if the current client supports the [addEventListener]{@link https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener} method and will be used as its third parameter.</p>","name":"useCapture"},{"type":{"names":["Object"]},"optional":true,"defaultvalue":"document","description":"<p>The target where we want to attach the event listener.</p>","name":"target"}],"name":"onOut","longname":"CB_Mouse.onOut","memberof":"CB_Mouse","scope":"static"},{"comment":"/**\r\n\t * Sets a function to execute when the mouse wheel is used ([onWheel]{@link https://developer.mozilla.org/en-US/docs/Web/Events/wheel}, [onMouseWheel]{@link https://developer.mozilla.org/en-US/docs/Web/API/Element/mousewheel_event} or [DOMMouseScroll]{@link https://developer.mozilla.org/en-US/docs/Web/API/Element/DOMMouseScroll_event} event) or removes it.\r\n\t * @function\r\n\t * @param {function|null} callbackFunction - The function (event listener) that we want to execute when the event is fired. The first and unique parameter received for this function will be the [mouse event object]{@link https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent} (already normalized by the {@link CB_Mouse.normalizeEvent} function). If a null value is used, the event will be removed.\r\n\t * @param {boolean} [keepOldFunction=true] - Defines whether we want to keep any possible previous event listener for the same target and event name or not.\r\n\t * @param {boolean} [useCapture=false] - Defines whether the event we want to add will use capture or not. This parameter will be effective only if the current client supports the [addEventListener]{@link https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener} method and will be used as its third parameter.\r\n\t * @param {Object} [target=document] - The target where we want to attach the event listener.\r\n\t */","meta":{"range":[36104,36679],"filename":"CB_Mouse.js","lineno":616,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\input","code":{"id":"astnode100090538","name":"CB_Mouse.onWheel","type":"FunctionExpression","paramnames":["callbackFunction","keepOldFunction","useCapture","target"]},"vars":{"onWheelEventName":"CB_Mouse.onWheel~onWheelEventName","valueToReturn":"CB_Mouse.onWheel~valueToReturn"}},"description":"<p>Sets a function to execute when the mouse wheel is used ([onWheel]{@link https://developer.mozilla.org/en-US/docs/Web/Events/wheel}, [onMouseWheel]{@link https://developer.mozilla.org/en-US/docs/Web/API/Element/mousewheel_event} or [DOMMouseScroll]{@link https://developer.mozilla.org/en-US/docs/Web/API/Element/DOMMouseScroll_event} event) or removes it.</p>","kind":"function","params":[{"type":{"names":["function","null"]},"description":"<p>The function (event listener) that we want to execute when the event is fired. The first and unique parameter received for this function will be the [mouse event object]{@link https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent} (already normalized by the {@link CB_Mouse.normalizeEvent} function). If a null value is used, the event will be removed.</p>","name":"callbackFunction"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":true,"description":"<p>Defines whether we want to keep any possible previous event listener for the same target and event name or not.</p>","name":"keepOldFunction"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>Defines whether the event we want to add will use capture or not. This parameter will be effective only if the current client supports the [addEventListener]{@link https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener} method and will be used as its third parameter.</p>","name":"useCapture"},{"type":{"names":["Object"]},"optional":true,"defaultvalue":"document","description":"<p>The target where we want to attach the event listener.</p>","name":"target"}],"name":"onWheel","longname":"CB_Mouse.onWheel","memberof":"CB_Mouse","scope":"static"},{"comment":"/**\r\n\t * Tells whether mouse pointer lock is supported or not. More information: [Pointer Lock API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Pointer_Lock_API}.\r\n\t * @function\r\n\t * @returns {boolean} Returns whether mouse pointer lock is supported or not.\r\n\t */","meta":{"range":[37012,37413],"filename":"CB_Mouse.js","lineno":638,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\input","code":{"id":"astnode100090593","name":"CB_Mouse.isLockSupported","type":"FunctionExpression","paramnames":[]},"vars":{"CB_Mouse.isLockSupportedReturnCache":"CB_Mouse.isLockSupportedReturnCache"}},"description":"<p>Tells whether mouse pointer lock is supported or not. More information: [Pointer Lock API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Pointer_Lock_API}.</p>","kind":"function","returns":[{"type":{"names":["boolean"]},"description":"<p>Returns whether mouse pointer lock is supported or not.</p>"}],"name":"isLockSupported","longname":"CB_Mouse.isLockSupported","memberof":"CB_Mouse","scope":"static"},{"comment":"/**\r\n\t * Tells whether the mouse pointer is locked or not. More information: [Pointer Lock API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Pointer_Lock_API}.\r\n\t * @function\r\n\t * @param {boolean} [avoidCache=false] - Used as the parameter to call the {@link CB_Mouse.getLockElement} function internally.\r\n\t * @returns {boolean} Returns whether the mouse pointer is locked or not.\r\n\t */","meta":{"range":[37824,38579],"filename":"CB_Mouse.js","lineno":654,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\input","code":{"id":"astnode100090641","name":"CB_Mouse.isLocked","type":"FunctionExpression","paramnames":["avoidCache"]},"vars":{"CB_Mouse._isLockedPrevious":"CB_Mouse._isLockedPrevious","isLockedNow":"CB_Mouse.isLocked~isLockedNow","navigator.pointer":"navigator.pointer","CB_Mouse._isLockedNow":"CB_Mouse._isLockedNow"}},"description":"<p>Tells whether the mouse pointer is locked or not. More information: [Pointer Lock API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Pointer_Lock_API}.</p>","kind":"function","params":[{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>Used as the parameter to call the {@link CB_Mouse.getLockElement} function internally.</p>","name":"avoidCache"}],"returns":[{"type":{"names":["boolean"]},"description":"<p>Returns whether the mouse pointer is locked or not.</p>"}],"name":"isLocked","longname":"CB_Mouse.isLocked","memberof":"CB_Mouse","scope":"static"},{"comment":"/**\r\n\t * Tells whether the mouse pointer was locked before or not when the {@link CB_Mouse.isLocked} function was called the last time. More information: [Pointer Lock API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Pointer_Lock_API}.\r\n\t * @function\r\n\t * @returns {boolean} Returns whether the mouse pointer was locked before or not when the {@link CB_Mouse.isLocked} function was called the last time.\r\n\t */","meta":{"range":[39011,39088],"filename":"CB_Mouse.js","lineno":678,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\input","code":{"id":"astnode100090760","name":"CB_Mouse.wasLocked","type":"FunctionExpression","paramnames":[]}},"description":"<p>Tells whether the mouse pointer was locked before or not when the {@link CB_Mouse.isLocked} function was called the last time. More information: [Pointer Lock API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Pointer_Lock_API}.</p>","kind":"function","returns":[{"type":{"names":["boolean"]},"description":"<p>Returns whether the mouse pointer was locked before or not when the {@link CB_Mouse.isLocked} function was called the last time.</p>"}],"name":"wasLocked","longname":"CB_Mouse.wasLocked","memberof":"CB_Mouse","scope":"static"},{"comment":"/**\r\n\t * Gets the lock element for the mouse pointer (if any) or null otherwise. More information: [Pointer Lock API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Pointer_Lock_API}.\r\n\t * @function\r\n\t * @param {boolean} [avoidCache=false] - If set to false, the returning value will use the previously-cached value (updated when this function is called with this parameter set to true or the [onPointerLockChange]{@link https://developer.mozilla.org/en-US/docs/Web/API/Document/pointerlockchange_event} or analog event is fired or when the {@link CB_Mouse.lock} or {@link CB_Mouse.unlock} functions are called successfully).\r\n\t * @returns {Element|null} Returns the lock element for the mouse pointer (if any) or null otherwise.\r\n\t */","meta":{"range":[39846,40559],"filename":"CB_Mouse.js","lineno":690,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\input","code":{"id":"astnode100090771","name":"CB_Mouse.getLockElement","type":"FunctionExpression","paramnames":["avoidCache"]},"vars":{"CB_Mouse._lockElement":"CB_Mouse._lockElement"}},"description":"<p>Gets the lock element for the mouse pointer (if any) or null otherwise. More information: [Pointer Lock API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Pointer_Lock_API}.</p>","kind":"function","params":[{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If set to false, the returning value will use the previously-cached value (updated when this function is called with this parameter set to true or the [onPointerLockChange]{@link https://developer.mozilla.org/en-US/docs/Web/API/Document/pointerlockchange_event} or analog event is fired or when the {@link CB_Mouse.lock} or {@link CB_Mouse.unlock} functions are called successfully).</p>","name":"avoidCache"}],"returns":[{"type":{"names":["Element","null"]},"description":"<p>Returns the lock element for the mouse pointer (if any) or null otherwise.</p>"}],"name":"getLockElement","longname":"CB_Mouse.getLockElement","memberof":"CB_Mouse","scope":"static"},{"comment":"/**\r\n\t * Locks the mouse pointer (if possible). More information: [Pointer Lock API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Pointer_Lock_API}.\r\n\t * @function\r\n\t * @param {Element} [target=document.body] - The [DOM element]{@link https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement} that the mouse pointer will be locked to.\r\n\t * @param {function} callbackOk - Function callback that will be called (without parameters) if the mouse pointer could be locked successfully.\r\n\t * @param {function} callbackError - Function callback that will be called (without parameters) if the mouse pointer could not be locked successfully.\r\n\t * @returns {Element|null} Returns the current lock element for the mouse pointer (if any) or null otherwise.\r\n\t */","meta":{"range":[41341,42601],"filename":"CB_Mouse.js","lineno":712,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\input","code":{"id":"astnode100090864","name":"CB_Mouse.lock","type":"FunctionExpression","paramnames":["target","callbackOk","callbackError"]},"vars":{"target":"CB_Mouse.lock~target","target.requestPointerLock":"CB_Mouse.lock~target.requestPointerLock","navigator.pointer":"navigator.pointer"}},"description":"<p>Locks the mouse pointer (if possible). More information: [Pointer Lock API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Pointer_Lock_API}.</p>","kind":"function","params":[{"type":{"names":["Element"]},"optional":true,"defaultvalue":"document.body","description":"<p>The [DOM element]{@link https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement} that the mouse pointer will be locked to.</p>","name":"target"},{"type":{"names":["function"]},"description":"<p>Function callback that will be called (without parameters) if the mouse pointer could be locked successfully.</p>","name":"callbackOk"},{"type":{"names":["function"]},"description":"<p>Function callback that will be called (without parameters) if the mouse pointer could not be locked successfully.</p>","name":"callbackError"}],"returns":[{"type":{"names":["Element","null"]},"description":"<p>Returns the current lock element for the mouse pointer (if any) or null otherwise.</p>"}],"name":"lock","longname":"CB_Mouse.lock","memberof":"CB_Mouse","scope":"static"},{"comment":"/**\r\n\t * Unlocks the mouse pointer (if possible). More information: [Pointer Lock API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Pointer_Lock_API}.\r\n\t * @function\r\n\t * @returns {boolean} Returns true if the mouse pointer has been unlocked or false otherwise.\r\n\t */","meta":{"range":[42891,43434],"filename":"CB_Mouse.js","lineno":750,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\input","code":{"id":"astnode100091032","name":"CB_Mouse.unlock","type":"FunctionExpression","paramnames":[]},"vars":{"document.exitPointerLock":"document.exitPointerLock","navigator.pointer":"navigator.pointer"}},"description":"<p>Unlocks the mouse pointer (if possible). More information: [Pointer Lock API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Pointer_Lock_API}.</p>","kind":"function","returns":[{"type":{"names":["boolean"]},"description":"<p>Returns true if the mouse pointer has been unlocked or false otherwise.</p>"}],"name":"unlock","longname":"CB_Mouse.unlock","memberof":"CB_Mouse","scope":"static"},{"comment":"/**\r\n\t * Sets a function to execute when the mouse pointer lock functionality changes its state (it has been either locked or unlocked, using [pointerlockchange]{@link [onPointerLockChange]{@link https://developer.mozilla.org/en-US/docs/Web/API/Document/pointerlockchange_event}}, [mozpointerlockchange]{@link https://developer.mozilla.org/en-US/docs/Web/API/Pointer_Lock_API} or [webkitpointerlockchange]{@link https://developer.mozilla.org/en-US/docs/Web/API/Pointer_Lock_API} event) or removes it. More information: [Pointer Lock API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Pointer_Lock_API}. \r\n\t * @function\r\n\t * @param {function|null} callbackFunction - The function (event listener) that we want to execute when the event is fired. The first and unique parameter received for this function will be the [mouse event object]{@link https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent} (already normalized by the {@link CB_Mouse.normalizeEvent} function). If a null value is used, the event will be removed.\r\n\t * @param {boolean} [keepOldFunction=true] - Defines whether we want to keep any possible previous event listener for the same target and event name or not.\r\n\t * @param {boolean} [useCapture=false] - Defines whether the event we want to add will use capture or not. This parameter will be effective only if the current client supports the [addEventListener]{@link https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener} method and will be used as its third parameter.\r\n\t */","meta":{"range":[44981,45380],"filename":"CB_Mouse.js","lineno":776,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\input","code":{"id":"astnode100091115","name":"CB_Mouse.onLockChange","type":"FunctionExpression","paramnames":["callbackFunction","keepOldFunction","useCapture"]}},"description":"<p>Sets a function to execute when the mouse pointer lock functionality changes its state (it has been either locked or unlocked, using [pointerlockchange]{@link [onPointerLockChange]{@link https://developer.mozilla.org/en-US/docs/Web/API/Document/pointerlockchange_event}}, [mozpointerlockchange]{@link https://developer.mozilla.org/en-US/docs/Web/API/Pointer_Lock_API} or [webkitpointerlockchange]{@link https://developer.mozilla.org/en-US/docs/Web/API/Pointer_Lock_API} event) or removes it. More information: [Pointer Lock API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Pointer_Lock_API}.</p>","kind":"function","params":[{"type":{"names":["function","null"]},"description":"<p>The function (event listener) that we want to execute when the event is fired. The first and unique parameter received for this function will be the [mouse event object]{@link https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent} (already normalized by the {@link CB_Mouse.normalizeEvent} function). If a null value is used, the event will be removed.</p>","name":"callbackFunction"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":true,"description":"<p>Defines whether we want to keep any possible previous event listener for the same target and event name or not.</p>","name":"keepOldFunction"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>Defines whether the event we want to add will use capture or not. This parameter will be effective only if the current client supports the [addEventListener]{@link https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener} method and will be used as its third parameter.</p>","name":"useCapture"}],"name":"onLockChange","longname":"CB_Mouse.onLockChange","memberof":"CB_Mouse","scope":"static"},{"comment":"/**\r\n\t * Sets a function to execute when the mouse pointer fails to either lock or unlock (using [pointerlockerror]{@link https://developer.mozilla.org/en-US/docs/Web/API/Document/pointerlockerror_event}, [mozpointerlockerror]{@link https://developer.mozilla.org/en-US/docs/Web/API/Pointer_Lock_API} or [webkitpointerlockerror]{@link https://developer.mozilla.org/en-US/docs/Web/API/Pointer_Lock_API} event) or removes it. More information: [Pointer Lock API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Pointer_Lock_API}. \r\n\t * @function\r\n\t * @param {function|null} callbackFunction - The function (event listener) that we want to execute when the event is fired. The first and unique parameter received for this function will be the [mouse event object]{@link https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent} (already normalized by the {@link CB_Mouse.normalizeEvent} function). If a null value is used, the event will be removed.\r\n\t * @param {boolean} [keepOldFunction=true] - Defines whether we want to keep any possible previous event listener for the same target and event name or not.\r\n\t * @param {boolean} [useCapture=false] - Defines whether the event we want to add will use capture or not. This parameter will be effective only if the current client supports the [addEventListener]{@link https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener} method and will be used as its third parameter.\r\n\t */","meta":{"range":[46848,47243],"filename":"CB_Mouse.js","lineno":791,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\input","code":{"id":"astnode100091155","name":"CB_Mouse.onLockError","type":"FunctionExpression","paramnames":["callbackFunction","keepOldFunction","useCapture"]}},"description":"<p>Sets a function to execute when the mouse pointer fails to either lock or unlock (using [pointerlockerror]{@link https://developer.mozilla.org/en-US/docs/Web/API/Document/pointerlockerror_event}, [mozpointerlockerror]{@link https://developer.mozilla.org/en-US/docs/Web/API/Pointer_Lock_API} or [webkitpointerlockerror]{@link https://developer.mozilla.org/en-US/docs/Web/API/Pointer_Lock_API} event) or removes it. More information: [Pointer Lock API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Pointer_Lock_API}.</p>","kind":"function","params":[{"type":{"names":["function","null"]},"description":"<p>The function (event listener) that we want to execute when the event is fired. The first and unique parameter received for this function will be the [mouse event object]{@link https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent} (already normalized by the {@link CB_Mouse.normalizeEvent} function). If a null value is used, the event will be removed.</p>","name":"callbackFunction"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":true,"description":"<p>Defines whether we want to keep any possible previous event listener for the same target and event name or not.</p>","name":"keepOldFunction"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>Defines whether the event we want to add will use capture or not. This parameter will be effective only if the current client supports the [addEventListener]{@link https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener} method and will be used as its third parameter.</p>","name":"useCapture"}],"name":"onLockError","longname":"CB_Mouse.onLockError","memberof":"CB_Mouse","scope":"static"},{"comment":"/**\r\n\t * Tells whether the mouse is over a given [DOM element]{@link https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement} or not.\r\n\t * @function\r\n\t * @param {Element} element - The [DOM element]{@link https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement} where we want to know whether the mouse is over or not.\r\n\t * @returns {boolean} Returns whether the mouse is over the given [DOM element]{@link https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement} or not.\r\n\t */","meta":{"range":[49175,49312],"filename":"CB_Mouse.js","lineno":852,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\input","code":{"id":"astnode100091326","name":"CB_Mouse.isOverElement","type":"FunctionExpression","paramnames":["element"]}},"description":"<p>Tells whether the mouse is over a given [DOM element]{@link https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement} or not.</p>","kind":"function","params":[{"type":{"names":["Element"]},"description":"<p>The [DOM element]{@link https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement} where we want to know whether the mouse is over or not.</p>","name":"element"}],"returns":[{"type":{"names":["boolean"]},"description":"<p>Returns whether the mouse is over the given [DOM element]{@link https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement} or not.</p>"}],"name":"isOverElement","longname":"CB_Mouse.isOverElement","memberof":"CB_Mouse","scope":"static"},{"comment":"/**\r\n\t * Tells whether the mouse is over a given line (infinite line) or not.\r\n\t * @function\r\n\t * @param {number} lineX1 - The X coordinate (horizontal position) of the first pixel of the line.\r\n\t * @param {number} lineY1 - The Y coordinate (vertical position) of the first pixel of the line.\r\n\t * @param {number} lineX2 - The X coordinate (horizontal position) of the second pixel of the line.\r\n\t * @param {number} lineY2 - The Y coordinate (vertical position) of the second pixel of the line.\r\n\t * @param {number} [tolerance=1] - The amount of loss of precision we can tolerate to consider a collision.\r\n\t * @param {Element} [element] - If a [DOM element]{@link https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement} is given, the mouse coordinates will be calculated relatively to the position of this [DOM element]{@link https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement}.\r\n\t * @returns {boolean} Returns whether the mouse is over the given line (infinite line) or not.\r\n\t * @todo Think about using a \"width\" parameter (apart from the \"tolerance\" parameter).\r\n\t */","meta":{"range":[50417,50993],"filename":"CB_Mouse.js","lineno":870,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\input","code":{"id":"astnode100091348","name":"CB_Mouse.isOverLine","type":"FunctionExpression","paramnames":["lineX1","lineY1","lineX2","lineY2","tolerance","element"]},"vars":{"tolerance":"CB_Mouse.isOverLine~tolerance","mouseX":"CB_Mouse.isOverLine~mouseX","mouseY":"CB_Mouse.isOverLine~mouseY"}},"description":"<p>Tells whether the mouse is over a given line (infinite line) or not.</p>","kind":"function","params":[{"type":{"names":["number"]},"description":"<p>The X coordinate (horizontal position) of the first pixel of the line.</p>","name":"lineX1"},{"type":{"names":["number"]},"description":"<p>The Y coordinate (vertical position) of the first pixel of the line.</p>","name":"lineY1"},{"type":{"names":["number"]},"description":"<p>The X coordinate (horizontal position) of the second pixel of the line.</p>","name":"lineX2"},{"type":{"names":["number"]},"description":"<p>The Y coordinate (vertical position) of the second pixel of the line.</p>","name":"lineY2"},{"type":{"names":["number"]},"optional":true,"defaultvalue":1,"description":"<p>The amount of loss of precision we can tolerate to consider a collision.</p>","name":"tolerance"},{"type":{"names":["Element"]},"optional":true,"description":"<p>If a [DOM element]{@link https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement} is given, the mouse coordinates will be calculated relatively to the position of this [DOM element]{@link https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement}.</p>","name":"element"}],"returns":[{"type":{"names":["boolean"]},"description":"<p>Returns whether the mouse is over the given line (infinite line) or not.</p>"}],"todo":["Think about using a \"width\" parameter (apart from the \"tolerance\" parameter)."],"name":"isOverLine","longname":"CB_Mouse.isOverLine","memberof":"CB_Mouse","scope":"static"},{"comment":"/**\r\n\t * Tells whether the mouse is over a given line segment or not.\r\n\t * @function\r\n\t * @param {number} lineX1 - The X coordinate (horizontal position) of the first pixel of the line segment.\r\n\t * @param {number} lineY1 - The Y coordinate (vertical position) of the first pixel of the line segment.\r\n\t * @param {number} lineX2 - The X coordinate (horizontal position) of the second pixel of the line segment.\r\n\t * @param {number} lineY2 - The Y coordinate (vertical position) of the second pixel of the line segment.\r\n\t * @param {number} [tolerance=1] - The amount of loss of precision we can tolerate to consider a collision.\r\n\t * @param {Element} [element] - If a [DOM element]{@link https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement} is given, the mouse coordinates will be calculated relatively to the position of this [DOM element]{@link https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement}.\r\n\t * @returns {boolean} Returns whether the mouse is over the given line segment or not.\r\n\t * @todo Think about using a \"width\" parameter (apart from the \"tolerance\" parameter).\r\n\t */","meta":{"range":[52114,52696],"filename":"CB_Mouse.js","lineno":901,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\input","code":{"id":"astnode100091436","name":"CB_Mouse.isOverSegment","type":"FunctionExpression","paramnames":["lineX1","lineY1","lineX2","lineY2","tolerance","element"]},"vars":{"tolerance":"CB_Mouse.isOverSegment~tolerance","mouseX":"CB_Mouse.isOverSegment~mouseX","mouseY":"CB_Mouse.isOverSegment~mouseY"}},"description":"<p>Tells whether the mouse is over a given line segment or not.</p>","kind":"function","params":[{"type":{"names":["number"]},"description":"<p>The X coordinate (horizontal position) of the first pixel of the line segment.</p>","name":"lineX1"},{"type":{"names":["number"]},"description":"<p>The Y coordinate (vertical position) of the first pixel of the line segment.</p>","name":"lineY1"},{"type":{"names":["number"]},"description":"<p>The X coordinate (horizontal position) of the second pixel of the line segment.</p>","name":"lineX2"},{"type":{"names":["number"]},"description":"<p>The Y coordinate (vertical position) of the second pixel of the line segment.</p>","name":"lineY2"},{"type":{"names":["number"]},"optional":true,"defaultvalue":1,"description":"<p>The amount of loss of precision we can tolerate to consider a collision.</p>","name":"tolerance"},{"type":{"names":["Element"]},"optional":true,"description":"<p>If a [DOM element]{@link https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement} is given, the mouse coordinates will be calculated relatively to the position of this [DOM element]{@link https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement}.</p>","name":"element"}],"returns":[{"type":{"names":["boolean"]},"description":"<p>Returns whether the mouse is over the given line segment or not.</p>"}],"todo":["Think about using a \"width\" parameter (apart from the \"tolerance\" parameter)."],"name":"isOverSegment","longname":"CB_Mouse.isOverSegment","memberof":"CB_Mouse","scope":"static"},{"comment":"/**\r\n\t * Tells whether the mouse is over a given rectangle or not.\r\n\t * @function\r\n\t * @param {number} rectangleX - The X coordinate (horizontal position) of the first pixel of the rectangle (upper left corner).\r\n\t * @param {number} rectangleY - The Y coordinate (vertical position) of the first pixel of the rectangle (upper left corner).\r\n\t * @param {number} rectangleWidth - The width of the rectangle in pixels.\r\n\t * @param {number} rectangleHeight - The height of the rectangle in pixels.\r\n\t * @param {Element} [element] - If a [DOM element]{@link https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement} is given, the mouse coordinates will be calculated relatively to the position of this [DOM element]{@link https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement}.\r\n\t * @returns {boolean} Returns whether the mouse is over the given rectangle or not.\r\n\t */","meta":{"range":[53588,54115],"filename":"CB_Mouse.js","lineno":930,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\input","code":{"id":"astnode100091524","name":"CB_Mouse.isOverRectangle","type":"FunctionExpression","paramnames":["rectangleX","rectangleY","rectangleWidth","rectangleHeight","element"]},"vars":{"mouseX":"CB_Mouse.isOverRectangle~mouseX","mouseY":"CB_Mouse.isOverRectangle~mouseY"}},"description":"<p>Tells whether the mouse is over a given rectangle or not.</p>","kind":"function","params":[{"type":{"names":["number"]},"description":"<p>The X coordinate (horizontal position) of the first pixel of the rectangle (upper left corner).</p>","name":"rectangleX"},{"type":{"names":["number"]},"description":"<p>The Y coordinate (vertical position) of the first pixel of the rectangle (upper left corner).</p>","name":"rectangleY"},{"type":{"names":["number"]},"description":"<p>The width of the rectangle in pixels.</p>","name":"rectangleWidth"},{"type":{"names":["number"]},"description":"<p>The height of the rectangle in pixels.</p>","name":"rectangleHeight"},{"type":{"names":["Element"]},"optional":true,"description":"<p>If a [DOM element]{@link https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement} is given, the mouse coordinates will be calculated relatively to the position of this [DOM element]{@link https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement}.</p>","name":"element"}],"returns":[{"type":{"names":["boolean"]},"description":"<p>Returns whether the mouse is over the given rectangle or not.</p>"}],"name":"isOverRectangle","longname":"CB_Mouse.isOverRectangle","memberof":"CB_Mouse","scope":"static"},{"comment":"/**\r\n\t * Tells whether the mouse is over a given circle or not.\r\n\t * @function\r\n\t * @param {number} centreX - The X coordinate (horizontal position) of the center of the circle in pixels.\r\n\t * @param {number} centreY - The Y coordinate (vertical position) of the center of the circle in pixels.\r\n\t * @param {number} radius - The radius of the circle in pixels.\r\n\t * @param {Element} [element] - If a [DOM element]{@link https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement} is given, the mouse coordinates will be calculated relatively to the position of this [DOM element]{@link https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement}.\r\n\t * @returns {boolean} Returns whether the mouse is over the given circle or not.\r\n\t */","meta":{"range":[54870,55321],"filename":"CB_Mouse.js","lineno":956,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\input","code":{"id":"astnode100091596","name":"CB_Mouse.isOverCircle","type":"FunctionExpression","paramnames":["centreX","centreY","radius","element"]},"vars":{"mouseX":"CB_Mouse.isOverCircle~mouseX","mouseY":"CB_Mouse.isOverCircle~mouseY"}},"description":"<p>Tells whether the mouse is over a given circle or not.</p>","kind":"function","params":[{"type":{"names":["number"]},"description":"<p>The X coordinate (horizontal position) of the center of the circle in pixels.</p>","name":"centreX"},{"type":{"names":["number"]},"description":"<p>The Y coordinate (vertical position) of the center of the circle in pixels.</p>","name":"centreY"},{"type":{"names":["number"]},"description":"<p>The radius of the circle in pixels.</p>","name":"radius"},{"type":{"names":["Element"]},"optional":true,"description":"<p>If a [DOM element]{@link https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement} is given, the mouse coordinates will be calculated relatively to the position of this [DOM element]{@link https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement}.</p>","name":"element"}],"returns":[{"type":{"names":["boolean"]},"description":"<p>Returns whether the mouse is over the given circle or not.</p>"}],"name":"isOverCircle","longname":"CB_Mouse.isOverCircle","memberof":"CB_Mouse","scope":"static"},{"comment":"/**\r\n\t * Tells whether the mouse is over a given ellipse or not.\r\n\t * @function\r\n\t * @param {number} centreX - The \"X\" coordinate of the center of the ellipse.\r\n\t * @param {number} centreY - The \"Y\" coordinate of the center of the ellipse.\r\n\t * @param {number} radiusX - The X (horizontal) radius of the ellipse.\r\n\t * @param {number} radiusY - The Y (vertical) radius of the ellipse.\r\n\t * @param {number} [rotation=0] - The ellipse rotation. The value given will be considered either degrees or radians depending on the given \"rotationUseDegrees\" parameter (by default, it is considered radians). Not implemented yet!\r\n\t * @param {boolean} [rotationUseDegrees=false] - Defines whether the \"rotation\" given should be considered degrees or not (radians). Not implemented yet!\r\n\t * @returns {boolean} Returns whether the mouse is over the given ellipse or not.\r\n\t */","meta":{"range":[56202,56751],"filename":"CB_Mouse.js","lineno":984,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\input","code":{"id":"astnode100091666","name":"CB_Mouse.isOverEllipse","type":"FunctionExpression","paramnames":["centreX","centreY","radiusX","radiusY","rotation","rotationUseDegrees","radius","element"]},"vars":{"mouseX":"CB_Mouse.isOverEllipse~mouseX","mouseY":"CB_Mouse.isOverEllipse~mouseY"}},"description":"<p>Tells whether the mouse is over a given ellipse or not.</p>","kind":"function","params":[{"type":{"names":["number"]},"description":"<p>The &quot;X&quot; coordinate of the center of the ellipse.</p>","name":"centreX"},{"type":{"names":["number"]},"description":"<p>The &quot;Y&quot; coordinate of the center of the ellipse.</p>","name":"centreY"},{"type":{"names":["number"]},"description":"<p>The X (horizontal) radius of the ellipse.</p>","name":"radiusX"},{"type":{"names":["number"]},"description":"<p>The Y (vertical) radius of the ellipse.</p>","name":"radiusY"},{"type":{"names":["number"]},"optional":true,"defaultvalue":0,"description":"<p>The ellipse rotation. The value given will be considered either degrees or radians depending on the given &quot;rotationUseDegrees&quot; parameter (by default, it is considered radians). Not implemented yet!</p>","name":"rotation"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>Defines whether the &quot;rotation&quot; given should be considered degrees or not (radians). Not implemented yet!</p>","name":"rotationUseDegrees"}],"returns":[{"type":{"names":["boolean"]},"description":"<p>Returns whether the mouse is over the given ellipse or not.</p>"}],"name":"isOverEllipse","longname":"CB_Mouse.isOverEllipse","memberof":"CB_Mouse","scope":"static"},{"comment":"/**\r\n\t * Hides the mouse cursor in a given [DOM element]{@link https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement} by changing its internal CSS code of the [style.cursor]{@link https://developer.mozilla.org/en-US/docs/Web/CSS/cursor} property.\r\n\t * @function\r\n\t * @param {Element} [element=document.body] - If a [DOM element]{@link https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement} is given, the mouse cursor will be hidden when it is over this [DOM element]{@link https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement}. Otherwise, it will be hidden in the whole document (using [document.body]{@link https://developer.mozilla.org/en-US/docs/Web/API/Document/body} as element).\r\n\t * @param {boolean} [recursive=true] - If it is set to true, all the child [DOM elements]{@link https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement} will also be affected.\r\n\t * @todo Check whether the path used in the \"url\" is right or not (now it uses the {@link CB_scriptPath} variable).\r\n\t */","meta":{"range":[57779,59109],"filename":"CB_Mouse.js","lineno":1008,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\input","code":{"id":"astnode100091744","name":"CB_Mouse.hide","type":"FunctionExpression","paramnames":["element","recursive"]},"vars":{"CSS":"CB_Mouse.hide~CSS"}},"description":"<p>Hides the mouse cursor in a given [DOM element]{@link https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement} by changing its internal CSS code of the [style.cursor]{@link https://developer.mozilla.org/en-US/docs/Web/CSS/cursor} property.</p>","kind":"function","params":[{"type":{"names":["Element"]},"optional":true,"defaultvalue":"document.body","description":"<p>If a [DOM element]{@link https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement} is given, the mouse cursor will be hidden when it is over this [DOM element]{@link https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement}. Otherwise, it will be hidden in the whole document (using [document.body]{@link https://developer.mozilla.org/en-US/docs/Web/API/Document/body} as element).</p>","name":"element"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":true,"description":"<p>If it is set to true, all the child [DOM elements]{@link https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement} will also be affected.</p>","name":"recursive"}],"todo":["Check whether the path used in the \"url\" is right or not (now it uses the {@link CB_scriptPath} variable)."],"name":"hide","longname":"CB_Mouse.hide","memberof":"CB_Mouse","scope":"static"},{"comment":"/**\r\n\t * Restores (unhides) the mouse cursor in a given [DOM element]{@link https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement} by changing its internal CSS code of the [style.cursor]{@link https://developer.mozilla.org/en-US/docs/Web/CSS/cursor} property to the default one (using \"default\" as the CSS code).\r\n\t * @function\r\n\t * @param {Element} [element=document.body] - If a [DOM element]{@link https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement} is given, the mouse cursor will be restored (unhidden) when it is over this [DOM element]{@link https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement}. Otherwise, it will be restored (unhidden) in the whole document (using [document.body]{@link https://developer.mozilla.org/en-US/docs/Web/API/Document/body} as the \"element\").\r\n\t * @param {boolean} [recursive=true] - If it is set to true, all the child [DOM elements]{@link https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement} will also be affected.\r\n\t */","meta":{"range":[60115,60300],"filename":"CB_Mouse.js","lineno":1026,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\input","code":{"id":"astnode100091837","name":"CB_Mouse.restore","type":"FunctionExpression","paramnames":["element","recursive"]},"vars":{"CSS":"CB_Mouse.restore~CSS"}},"description":"<p>Restores (unhides) the mouse cursor in a given [DOM element]{@link https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement} by changing its internal CSS code of the [style.cursor]{@link https://developer.mozilla.org/en-US/docs/Web/CSS/cursor} property to the default one (using &quot;default&quot; as the CSS code).</p>","kind":"function","params":[{"type":{"names":["Element"]},"optional":true,"defaultvalue":"document.body","description":"<p>If a [DOM element]{@link https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement} is given, the mouse cursor will be restored (unhidden) when it is over this [DOM element]{@link https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement}. Otherwise, it will be restored (unhidden) in the whole document (using [document.body]{@link https://developer.mozilla.org/en-US/docs/Web/API/Document/body} as the &quot;element&quot;).</p>","name":"element"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":true,"description":"<p>If it is set to true, all the child [DOM elements]{@link https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement} will also be affected.</p>","name":"recursive"}],"name":"restore","longname":"CB_Mouse.restore","memberof":"CB_Mouse","scope":"static"},{"comment":"/**\r\n\t * Sets the desired CSS code for the [style.cursor]{@link https://developer.mozilla.org/en-US/docs/Web/CSS/cursor} property of the given [DOM element]{@link https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement}.\r\n\t * @function\r\n\t * @param {string} [CSS=\"\"] - CSS code for the [style.cursor]{@link https://developer.mozilla.org/en-US/docs/Web/CSS/cursor} property of the given [DOM element]{@link https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement}. If not given, an empty string will be used.\r\n\t * @param {Element} [element=document.body] - If a [DOM element]{@link https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement} is given, the CSS code updated will affect the given [DOM element]{@link https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement}. Otherwise, it will affect the whole document (using [document.body]{@link https://developer.mozilla.org/en-US/docs/Web/API/Document/body} as the \"element\").\r\n\t * @param {boolean} [recursive=true] - If it is set to true, all the child [DOM elements]{@link https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement} will also be affected.\r\n\t */","meta":{"range":[61572,62527],"filename":"CB_Mouse.js","lineno":1049,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\input","code":{"id":"astnode100091858","name":"CB_Mouse.setCSS","type":"FunctionExpression","paramnames":["CSS","element","recursive"]},"vars":{"CSS":"CB_Mouse.setCSS~CSS","element":"CB_Mouse.setCSS~element","recursive":"CB_Mouse.setCSS~recursive","element.style.cursor":"CB_Mouse.setCSS~element.style.cursor","elementsChildren":"CB_Mouse.setCSS~elementsChildren","elementsChildrenLength":"CB_Mouse.setCSS~elementsChildrenLength","x":"CB_Mouse.setCSS~x"}},"description":"<p>Sets the desired CSS code for the [style.cursor]{@link https://developer.mozilla.org/en-US/docs/Web/CSS/cursor} property of the given [DOM element]{@link https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement}.</p>","kind":"function","params":[{"type":{"names":["string"]},"optional":true,"defaultvalue":"\"\"","description":"<p>CSS code for the [style.cursor]{@link https://developer.mozilla.org/en-US/docs/Web/CSS/cursor} property of the given [DOM element]{@link https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement}. If not given, an empty string will be used.</p>","name":"CSS"},{"type":{"names":["Element"]},"optional":true,"defaultvalue":"document.body","description":"<p>If a [DOM element]{@link https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement} is given, the CSS code updated will affect the given [DOM element]{@link https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement}. Otherwise, it will affect the whole document (using [document.body]{@link https://developer.mozilla.org/en-US/docs/Web/API/Document/body} as the &quot;element&quot;).</p>","name":"element"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":true,"description":"<p>If it is set to true, all the child [DOM elements]{@link https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement} will also be affected.</p>","name":"recursive"}],"name":"setCSS","longname":"CB_Mouse.setCSS","memberof":"CB_Mouse","scope":"static"},{"comment":"/**\r\n\t * Uses an [IMG element]{@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/img} inside a [DIV element]{@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/div} (fakes the cursor) to simulate the mouse cursor (following its movements). If it was already called before and a fake cursor is already being used, the {@link CB_Mouse.CursorImage.hide} function must be called before in order to start using a different fake cursor image.\r\n\t <br />\r\n\t Caution: Performance could be dramatically decreased while using this workaround.\r\n\t * @function\r\n\t * @param {boolean} [showCursorImage=true] - If set to true and a valid cursor image is given, the fake cursor functionality will be used. Otherwise, the fake cursor will stop being used.\r\n\t * @param {string} [cursorImage] - If a valid image path is given and \"showCursorImage\" is set to true, the fake cursor functionality will be used with the given image. Otherwise, the fake cursor will stop being used.\r\n\t * @param {number} [cursorImageWidth=32] - Width in pixels of the cursor image.\r\n\t * @param {number} [cursorImageHeight=32] - Height in pixels of the cursor image.\r\n\t * @param {boolean} [hideNormalCursor=true] - If set to true, hides the system cursor (calls the {@link CB_Mouse.hide} function internally). Otherwise, shows the system cursor (calls the {@link CB_Mouse.restore} function internally).\r\n\t * @param {boolean} [isSprite=false] - Defines whether the cursor will be animated (using sprites) or not. If so, the cursorImage must be an image containing sprites horizontally (their individual width is defined by the \"cursorImageWidth\" parameter). Once the last sprite is reached, it returns to the first one automatically and continues to the next one again (without stopping).\r\n\t * @param {number} [numberOfFrames=1] - Number of frames (sprites) being used from the cursor image (\"cursorImage\" parameter). Used when the \"isSprite\" parameter is set to true.\r\n\t * @param {number} [framesMs=100] - Number of milliseconds between each frame (between one sprite and next one). Used when the \"isSprite\" parameter is set to true.\r\n\t * @param {Element} [divElement=CB_Elements.id('CB_fakeCursorImageDiv')] - The ID of the [DIV element]{@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/div} that will contain the image of the fake cursor (uses a [DOM element]{@link https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement} with \"CB_fakeCursorImageDiv\" ID by default).\r\n\t * @param {Element} [imageElement=CB_Elements.id('CB_fakeCursorImage')] - The ID of the [IMG element]{@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/img} that will contain the fake cursor (uses a [DOM element]{@link https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement} with \"CB_fakeCursorImage\" ID by default).\r\n\t * @todo Allow defining an \"onMove\" parameter (a callback) to be able to call the \"move\" method with non-default parameters, etc.\r\n\t */","meta":{"range":[65504,70461],"filename":"CB_Mouse.js","lineno":1092,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\input","code":{"id":"astnode100091979","name":"CB_Mouse.CursorImage.set","type":"FunctionExpression","paramnames":["showCursorImage","cursorImage","cursorImageWidth","cursorImageHeight","hideNormalCursor","isSprite","numberOfFrames","framesMs","divElement","imageElement"]},"vars":{"showCursorImage":"CB_Mouse.CursorImage.set~showCursorImage","hideNormalCursor":"CB_Mouse.CursorImage.set~hideNormalCursor","cursorImageWidth":"CB_Mouse.CursorImage.set~cursorImageWidth","cursorImageHeight":"CB_Mouse.CursorImage.set~cursorImageHeight","numberOfFrames":"CB_Mouse.CursorImage.set~numberOfFrames","framesMs":"CB_Mouse.CursorImage.set~framesMs","CB_fakeCursorImageDiv":"CB_Mouse.CursorImage.set~CB_fakeCursorImageDiv","CB_fakeCursorImage":"CB_Mouse.CursorImage.set~CB_fakeCursorImage","CB_fakeCursorImageDiv.style.position":"CB_Mouse.CursorImage.set~CB_fakeCursorImageDiv.style.position","CB_fakeCursorImage.style.position":"CB_Mouse.CursorImage.set~CB_fakeCursorImage.style.position","CB_fakeCursorImageDiv.style.visibility":"CB_Mouse.CursorImage.set~CB_fakeCursorImageDiv.style.visibility","CB_fakeCursorImageDiv.style.zIndex":"CB_Mouse.CursorImage.set~CB_fakeCursorImageDiv.style.zIndex","CB_fakeCursorImage.style.zIndex":"CB_Mouse.CursorImage.set~CB_fakeCursorImage.style.zIndex","CB_fakeCursorImageDiv.style.overflow":"CB_Mouse.CursorImage.set~CB_fakeCursorImageDiv.style.overflow","CB_Mouse.CursorImage._showCursorImage":"CB_Mouse.CursorImage._showCursorImage","CB_fakeCursorImage.src":"CB_Mouse.CursorImage.set~CB_fakeCursorImage.src","CB_fakeCursorImage.style.left":"CB_Mouse.CursorImage.set~CB_fakeCursorImage.style.left","CB_fakeCursorImageDiv.style.width":"CB_Mouse.CursorImage.set~CB_fakeCursorImageDiv.style.width","CB_fakeCursorImage.style.width":"CB_Mouse.CursorImage.set~CB_fakeCursorImage.style.width","CB_fakeCursorImageDiv.style.height":"CB_Mouse.CursorImage.set~CB_fakeCursorImageDiv.style.height","CB_fakeCursorImage.style.height":"CB_Mouse.CursorImage.set~CB_fakeCursorImage.style.height","CB_Mouse.CursorImage._cursorImageDiv":"CB_Mouse.CursorImage._cursorImageDiv","CB_Mouse.CursorImage._cursorImage":"CB_Mouse.CursorImage._cursorImage"}},"description":"<p>Uses an [IMG element]{@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/img} inside a [DIV element]{@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/div} (fakes the cursor) to simulate the mouse cursor (following its movements). If it was already called before and a fake cursor is already being used, the {@link CB_Mouse.CursorImage.hide} function must be called before in order to start using a different fake cursor image.<br> <br /><br> Caution: Performance could be dramatically decreased while using this workaround.</p>","kind":"function","params":[{"type":{"names":["boolean"]},"optional":true,"defaultvalue":true,"description":"<p>If set to true and a valid cursor image is given, the fake cursor functionality will be used. Otherwise, the fake cursor will stop being used.</p>","name":"showCursorImage"},{"type":{"names":["string"]},"optional":true,"description":"<p>If a valid image path is given and &quot;showCursorImage&quot; is set to true, the fake cursor functionality will be used with the given image. Otherwise, the fake cursor will stop being used.</p>","name":"cursorImage"},{"type":{"names":["number"]},"optional":true,"defaultvalue":32,"description":"<p>Width in pixels of the cursor image.</p>","name":"cursorImageWidth"},{"type":{"names":["number"]},"optional":true,"defaultvalue":32,"description":"<p>Height in pixels of the cursor image.</p>","name":"cursorImageHeight"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":true,"description":"<p>If set to true, hides the system cursor (calls the {@link CB_Mouse.hide} function internally). Otherwise, shows the system cursor (calls the {@link CB_Mouse.restore} function internally).</p>","name":"hideNormalCursor"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>Defines whether the cursor will be animated (using sprites) or not. If so, the cursorImage must be an image containing sprites horizontally (their individual width is defined by the &quot;cursorImageWidth&quot; parameter). Once the last sprite is reached, it returns to the first one automatically and continues to the next one again (without stopping).</p>","name":"isSprite"},{"type":{"names":["number"]},"optional":true,"defaultvalue":1,"description":"<p>Number of frames (sprites) being used from the cursor image (&quot;cursorImage&quot; parameter). Used when the &quot;isSprite&quot; parameter is set to true.</p>","name":"numberOfFrames"},{"type":{"names":["number"]},"optional":true,"defaultvalue":100,"description":"<p>Number of milliseconds between each frame (between one sprite and next one). Used when the &quot;isSprite&quot; parameter is set to true.</p>","name":"framesMs"},{"type":{"names":["Element"]},"optional":true,"defaultvalue":"CB_Elements.id('CB_fakeCursorImageDiv')","description":"<p>The ID of the [DIV element]{@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/div} that will contain the image of the fake cursor (uses a [DOM element]{@link https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement} with &quot;CB_fakeCursorImageDiv&quot; ID by default).</p>","name":"divElement"},{"type":{"names":["Element"]},"optional":true,"defaultvalue":"CB_Elements.id('CB_fakeCursorImage')","description":"<p>The ID of the [IMG element]{@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/img} that will contain the fake cursor (uses a [DOM element]{@link https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement} with &quot;CB_fakeCursorImage&quot; ID by default).</p>","name":"imageElement"}],"todo":["Allow defining an \"onMove\" parameter (a callback) to be able to call the \"move\" method with non-default parameters, etc."],"name":"set","longname":"CB_Mouse.CursorImage.set","memberof":"CB_Mouse.CursorImage","scope":"static"},{"comment":"/**\r\n\t * Gets the [DIV element]{@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/div} that contains the [IMG element]{@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/img} of the fake cursor (if any).\r\n\t * @function\r\n\t * @returns {Element} Returns the [DIV element]{@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/div} that contains the [IMG element]{@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/img} of the fake cursor (if any).\r\n\t */","meta":{"range":[70974,71069],"filename":"CB_Mouse.js","lineno":1190,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\input","code":{"id":"astnode100092441","name":"CB_Mouse.CursorImage.get","type":"FunctionExpression","paramnames":[]}},"description":"<p>Gets the [DIV element]{@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/div} that contains the [IMG element]{@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/img} of the fake cursor (if any).</p>","kind":"function","returns":[{"type":{"names":["Element"]},"description":"<p>Returns the [DIV element]{@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/div} that contains the [IMG element]{@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/img} of the fake cursor (if any).</p>"}],"name":"get","longname":"CB_Mouse.CursorImage.get","memberof":"CB_Mouse.CursorImage","scope":"static"},{"comment":"/**\r\n\t * Gets the [IMG element]{@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/img} of the fake cursor (if any).\r\n\t * @function\r\n\t * @returns {Element} Returns the [IMG element]{@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/img} of the fake cursor (if any).\r\n\t */","meta":{"range":[71381,71476],"filename":"CB_Mouse.js","lineno":1201,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\input","code":{"id":"astnode100092456","name":"CB_Mouse.CursorImage.getImage","type":"FunctionExpression","paramnames":[]}},"description":"<p>Gets the [IMG element]{@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/img} of the fake cursor (if any).</p>","kind":"function","returns":[{"type":{"names":["Element"]},"description":"<p>Returns the [IMG element]{@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/img} of the fake cursor (if any).</p>"}],"name":"getImage","longname":"CB_Mouse.CursorImage.getImage","memberof":"CB_Mouse.CursorImage","scope":"static"},{"comment":"/**\r\n\t * Tells whether the fake cursor is showing or not\r\n\t * @function\r\n\t * @returns {boolean} Returns whether the fake cursor is showing or not.\r\n\t */","meta":{"range":[71642,71742],"filename":"CB_Mouse.js","lineno":1212,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\input","code":{"id":"astnode100092471","name":"CB_Mouse.CursorImage.isShowing","type":"FunctionExpression","paramnames":[]}},"description":"<p>Tells whether the fake cursor is showing or not</p>","kind":"function","returns":[{"type":{"names":["boolean"]},"description":"<p>Returns whether the fake cursor is showing or not.</p>"}],"name":"isShowing","longname":"CB_Mouse.CursorImage.isShowing","memberof":"CB_Mouse.CursorImage","scope":"static"},{"comment":"/**\r\n\t * Hides the fake cursor image.\r\n\t * @function\r\n\t * @param {boolean} [showNormalCursor=true] - If set to true, restores (shows) the system cursor (calls the {@link CB_Mouse.restore} function internally).\r\n\t */","meta":{"range":[71971,72438],"filename":"CB_Mouse.js","lineno":1223,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\input","code":{"id":"astnode100092486","name":"CB_Mouse.CursorImage.hide","type":"FunctionExpression","paramnames":["showNormalCursor"]},"vars":{"showNormalCursor":"CB_Mouse.CursorImage.hide~showNormalCursor"}},"description":"<p>Hides the fake cursor image.</p>","kind":"function","params":[{"type":{"names":["boolean"]},"optional":true,"defaultvalue":true,"description":"<p>If set to true, restores (shows) the system cursor (calls the {@link CB_Mouse.restore} function internally).</p>","name":"showNormalCursor"}],"name":"hide","longname":"CB_Mouse.CursorImage.hide","memberof":"CB_Mouse.CursorImage","scope":"static"},{"comment":"/**\r\n\t * Moves the fake cursor image (if it is not hidden). Automatically called when the [onMouseMove]{@link https://developer.mozilla.org/en-US/docs/Web/API/Element/mousemove_event} event is fired.\r\n\t * @function\r\n\t * @param {number} [x=CB_Mouse.getX(null, false)] - The X coordinate (horizontal position) in pixels where the fake cursor image wants to be moved to. If not provided, it will use the value returned by calling CB_Mouse.getX(null, false) internally.\r\n\t * @param {number} [y=CB_Mouse.getY(null, false)] - The Y coordinate (vertical position) in pixels where the fake cursor image wants to be moved to. If not provided, it will use the value returned by calling CB_Mouse.getY(null, false) internally.\r\n\t */","meta":{"range":[73172,73755],"filename":"CB_Mouse.js","lineno":1242,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\input","code":{"id":"astnode100092530","name":"CB_Mouse.CursorImage.move","type":"FunctionExpression","paramnames":["x","y"]},"vars":{"CB_Mouse.CursorImage._cursorImageDiv.style.left":"CB_Mouse.CursorImage._cursorImageDiv.style.left","CB_Mouse.CursorImage._cursorImageDiv.style.top":"CB_Mouse.CursorImage._cursorImageDiv.style.top"}},"description":"<p>Moves the fake cursor image (if it is not hidden). Automatically called when the [onMouseMove]{@link https://developer.mozilla.org/en-US/docs/Web/API/Element/mousemove_event} event is fired.</p>","kind":"function","params":[{"type":{"names":["number"]},"optional":true,"defaultvalue":"CB_Mouse.getX(null, false)","description":"<p>The X coordinate (horizontal position) in pixels where the fake cursor image wants to be moved to. If not provided, it will use the value returned by calling CB_Mouse.getX(null, false) internally.</p>","name":"x"},{"type":{"names":["number"]},"optional":true,"defaultvalue":"CB_Mouse.getY(null, false)","description":"<p>The Y coordinate (vertical position) in pixels where the fake cursor image wants to be moved to. If not provided, it will use the value returned by calling CB_Mouse.getY(null, false) internally.</p>","name":"y"}],"name":"move","longname":"CB_Mouse.CursorImage.move","memberof":"CB_Mouse.CursorImage","scope":"static"},{"comment":"/**\r\n * @file Pointer management. Contains the {@link CB_Pointer} static class.\r\n * @author Joan Alba Maldonado <workindalian@gmail.com>\r\n */","meta":{"filename":"CB_Pointer.js","lineno":1,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\input","code":{}},"name":"CrossBase/input/CB_Pointer.js","kind":"file","description":"<p>Pointer management. Contains the {@link CB_Pointer} static class.</p>","preserveName":true,"author":["Joan Alba Maldonado <workindalian@gmail.com>"],"longname":"CrossBase/input/CB_Pointer.js","scope":"global"},{"comment":"/**\r\n * Static class to manage the pointer, using the [Pointer API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Pointer_events} if available and falling back to internal emulation otherwise. It will return itself if it is tried to be instantiated.\r\n * @namespace\r\n */","meta":{"range":[432,478],"filename":"CB_Pointer.js","lineno":11,"columnno":4,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\input","code":{"id":"astnode100092738","name":"CB_Pointer","type":"FunctionExpression"}},"description":"<p>Static class to manage the pointer, using the [Pointer API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Pointer_events} if available and falling back to internal emulation otherwise. It will return itself if it is tried to be instantiated.</p>","kind":"namespace","name":"CB_Pointer","longname":"CB_Pointer","scope":"global","params":[]},{"comment":"/**\r\n\t * Tries to return the given [pointer event]{@link https://developer.mozilla.org/en-US/docs/Web/API/PointerEvent} with some properties normalized (since different clients can use different values) and perhaps some new properties added (in the case they were missing), when possible. The new attached methods and properties may include polyfills, etc. It also calls the {@link CB_Events.normalize} function internally. Some properties added or affected could be \"POINTER_TYPE_TOUCH\", \"POINTER_TYPE_MOUSE\", \"POINTER_TYPE_PEN\", \"[pointerId]{@link https://developer.mozilla.org/en-US/docs/Web/API/PointerEvent/pointerId}\", \"[pointerType]{@link https://developer.mozilla.org/en-US/docs/Web/API/PointerEvent/pointerType}\", \"[pressure]{@link https://developer.mozilla.org/en-US/docs/Web/API/PointerEvent/pressure}\", \"[tangentialPressure]{@link https://developer.mozilla.org/en-US/docs/Web/API/PointerEvent/tangentialPressure}\", \"[tiltX]{@link https://developer.mozilla.org/en-US/docs/Web/API/PointerEvent/tiltX}\", \"[tiltY]{@link https://developer.mozilla.org/en-US/docs/Web/API/PointerEvent/tiltY}\", \"[width]{@link https://developer.mozilla.org/en-US/docs/Web/API/PointerEvent/width}\", \"[height]{@link https://developer.mozilla.org/en-US/docs/Web/API/PointerEvent/height}\", \"[currentTarget]{@link https://developer.mozilla.org/en-US/docs/Web/API/Event/currentTarget}\", \"[isPrimary]{@link https://developer.mozilla.org/en-US/docs/Web/API/PointerEvent/isPrimary}\", \"[twist]{@link https://developer.mozilla.org/en-US/docs/Web/API/PointerEvent/twist}\", etc.\r\n\t * @function\r\n\t * @param {Event} e - Pointer event object. If not provided, it will use the value of \"event\", \"window.event\", \"Event\" or an empty object (\"{}\").\r\n\t * @returns {Event} Returns the pointer event object normalized.\r\n\t * @todo Think about using Object.defineProperty with \"writable: true\" as option to prevent some web clients problems that have read only properties.\r\n\t * @todo Maybe e.width and e.height should be both 1 as default (?).\r\n\t */","meta":{"range":[5111,6842],"filename":"CB_Pointer.js","lineno":79,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\input","code":{"id":"astnode100092991","name":"CB_Pointer.normalizeEvent","type":"FunctionExpression","paramnames":["e"]},"vars":{"e":"CB_Pointer.normalizeEvent~e","e.POINTER_TYPE_TOUCH":"CB_Pointer.normalizeEvent~e.POINTER_TYPE_TOUCH","e.POINTER_TYPE_MOUSE":"CB_Pointer.normalizeEvent~e.POINTER_TYPE_MOUSE","e.POINTER_TYPE_PEN":"CB_Pointer.normalizeEvent~e.POINTER_TYPE_PEN","e.pointerType":"CB_Pointer.normalizeEvent~e.pointerType","e.pressure":"CB_Pointer.normalizeEvent~e.pressure","e.tangentialPressure":"CB_Pointer.normalizeEvent~e.tangentialPressure","e.twist":"CB_Pointer.normalizeEvent~e.twist","e.tiltX":"CB_Pointer.normalizeEvent~e.tiltX","e.tiltY":"CB_Pointer.normalizeEvent~e.tiltY","e.width":"CB_Pointer.normalizeEvent~e.width","e.height":"CB_Pointer.normalizeEvent~e.height","e.currentTarget":"CB_Pointer.normalizeEvent~e.currentTarget","e.isPrimary":"CB_Pointer.normalizeEvent~e.isPrimary","e.pointerId":"CB_Pointer.normalizeEvent~e.pointerId"}},"description":"<p>Tries to return the given [pointer event]{@link https://developer.mozilla.org/en-US/docs/Web/API/PointerEvent} with some properties normalized (since different clients can use different values) and perhaps some new properties added (in the case they were missing), when possible. The new attached methods and properties may include polyfills, etc. It also calls the {@link CB_Events.normalize} function internally. Some properties added or affected could be &quot;POINTER_TYPE_TOUCH&quot;, &quot;POINTER_TYPE_MOUSE&quot;, &quot;POINTER_TYPE_PEN&quot;, &quot;[pointerId]{@link https://developer.mozilla.org/en-US/docs/Web/API/PointerEvent/pointerId}&quot;, &quot;[pointerType]{@link https://developer.mozilla.org/en-US/docs/Web/API/PointerEvent/pointerType}&quot;, &quot;[pressure]{@link https://developer.mozilla.org/en-US/docs/Web/API/PointerEvent/pressure}&quot;, &quot;[tangentialPressure]{@link https://developer.mozilla.org/en-US/docs/Web/API/PointerEvent/tangentialPressure}&quot;, &quot;[tiltX]{@link https://developer.mozilla.org/en-US/docs/Web/API/PointerEvent/tiltX}&quot;, &quot;[tiltY]{@link https://developer.mozilla.org/en-US/docs/Web/API/PointerEvent/tiltY}&quot;, &quot;[width]{@link https://developer.mozilla.org/en-US/docs/Web/API/PointerEvent/width}&quot;, &quot;[height]{@link https://developer.mozilla.org/en-US/docs/Web/API/PointerEvent/height}&quot;, &quot;[currentTarget]{@link https://developer.mozilla.org/en-US/docs/Web/API/Event/currentTarget}&quot;, &quot;[isPrimary]{@link https://developer.mozilla.org/en-US/docs/Web/API/PointerEvent/isPrimary}&quot;, &quot;[twist]{@link https://developer.mozilla.org/en-US/docs/Web/API/PointerEvent/twist}&quot;, etc.</p>","kind":"function","params":[{"type":{"names":["Event"]},"description":"<p>Pointer event object. If not provided, it will use the value of &quot;event&quot;, &quot;window.event&quot;, &quot;Event&quot; or an empty object (&quot;{}&quot;).</p>","name":"e"}],"returns":[{"type":{"names":["Event"]},"description":"<p>Returns the pointer event object normalized.</p>"}],"todo":["Think about using Object.defineProperty with \"writable: true\" as option to prevent some web clients problems that have read only properties.","Maybe e.width and e.height should be both 1 as default (?)."],"name":"normalizeEvent","longname":"CB_Pointer.normalizeEvent","memberof":"CB_Pointer","scope":"static"},{"comment":"/**\r\n\t * Sets the desired value for the CSS' style [pointer-events]{@link https://developer.mozilla.org/en-US/docs/Web/CSS/pointer-events} property of a given element.\r\n\t * @function\r\n\t * @param {Element} element - Element whose CSS' style \"[pointer-events]{@link https://developer.mozilla.org/en-US/docs/Web/CSS/pointer-events}\" property we want to edit.\r\n\t * @param {string} value - CSS code for the CSS' style \"[pointer-events]{@link https://developer.mozilla.org/en-US/docs/Web/CSS/pointer-events}\" property.\r\n\t * @param {boolean} [important=false] - If set to true, it will add the \" !important\" text to the \"[pointer-events]{@link https://developer.mozilla.org/en-US/docs/Web/CSS/pointer-events}\" property.\r\n\t */","meta":{"range":[7575,7936],"filename":"CB_Pointer.js","lineno":115,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\input","code":{"id":"astnode100093250","name":"CB_Pointer.setPointerEventsProperty","type":"FunctionExpression","paramnames":["element","value","important"]},"vars":{"value":"CB_Pointer.setPointerEventsProperty~value","element.style.pointerEvents":"element.style.pointerEvents"}},"description":"<p>Sets the desired value for the CSS' style [pointer-events]{@link https://developer.mozilla.org/en-US/docs/Web/CSS/pointer-events} property of a given element.</p>","kind":"function","params":[{"type":{"names":["Element"]},"description":"<p>Element whose CSS' style &quot;[pointer-events]{@link https://developer.mozilla.org/en-US/docs/Web/CSS/pointer-events}&quot; property we want to edit.</p>","name":"element"},{"type":{"names":["string"]},"description":"<p>CSS code for the CSS' style &quot;[pointer-events]{@link https://developer.mozilla.org/en-US/docs/Web/CSS/pointer-events}&quot; property.</p>","name":"value"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If set to true, it will add the &quot; !important&quot; text to the &quot;[pointer-events]{@link https://developer.mozilla.org/en-US/docs/Web/CSS/pointer-events}&quot; property.</p>","name":"important"}],"name":"setPointerEventsProperty","longname":"CB_Pointer.setPointerEventsProperty","memberof":"CB_Pointer","scope":"static"},{"comment":"/**\r\n\t * Sets a function to execute when the \"[onPointerDown]{@link https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers/onpointerdown}\" event is fired or removes it. More information: [Pointer events]{@link https://developer.mozilla.org/en-US/docs/Web/API/Pointer_events}.\r\n\t * @function\r\n\t * @param {function|null} callbackFunction - The function (event listener) that we want to execute when the event is fired. The first and unique parameter received for this function will be the event object (already normalized by the {@link CB_Pointer.normalizeEvent} function). If a null value is used, the event will be removed.\r\n\t * @param {boolean} [keepOldFunction=true] - Defines whether we want to keep any possible previous event listener for the same target and event name or not.\r\n\t * @param {boolean} [useCapture=false] - Defines whether the event we want to add will use capture or not. This parameter will be effective only if the current client supports the [addEventListener]{@link https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener} method and will be used as its third parameter.\r\n\t * @param {Object} [target=document] - The target where we want to attach the event listener.\r\n\t */","meta":{"range":[9185,9378],"filename":"CB_Pointer.js","lineno":134,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\input","code":{"id":"astnode100093304","name":"CB_Pointer.onDown","type":"FunctionExpression","paramnames":["callbackFunction","keepOldFunction","useCapture","target"]}},"description":"<p>Sets a function to execute when the &quot;[onPointerDown]{@link https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers/onpointerdown}&quot; event is fired or removes it. More information: [Pointer events]{@link https://developer.mozilla.org/en-US/docs/Web/API/Pointer_events}.</p>","kind":"function","params":[{"type":{"names":["function","null"]},"description":"<p>The function (event listener) that we want to execute when the event is fired. The first and unique parameter received for this function will be the event object (already normalized by the {@link CB_Pointer.normalizeEvent} function). If a null value is used, the event will be removed.</p>","name":"callbackFunction"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":true,"description":"<p>Defines whether we want to keep any possible previous event listener for the same target and event name or not.</p>","name":"keepOldFunction"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>Defines whether the event we want to add will use capture or not. This parameter will be effective only if the current client supports the [addEventListener]{@link https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener} method and will be used as its third parameter.</p>","name":"useCapture"},{"type":{"names":["Object"]},"optional":true,"defaultvalue":"document","description":"<p>The target where we want to attach the event listener.</p>","name":"target"}],"name":"onDown","longname":"CB_Pointer.onDown","memberof":"CB_Pointer","scope":"static"},{"comment":"/**\r\n\t * Sets a function to execute when the \"[onPointerUp]{@link https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers/onpointerup}\" event is fired or removes it. More information: [Pointer events]{@link https://developer.mozilla.org/en-US/docs/Web/API/Pointer_events}.\r\n\t * @function\r\n\t * @param {function|null} callbackFunction - The function (event listener) that we want to execute when the event is fired. The first and unique parameter received for this function will be the event object (already normalized by the {@link CB_Pointer.normalizeEvent} function). If a null value is used, the event will be removed.\r\n\t * @param {boolean} [keepOldFunction=true] - Defines whether we want to keep any possible previous event listener for the same target and event name or not.\r\n\t * @param {boolean} [useCapture=false] - Defines whether the event we want to add will use capture or not. This parameter will be effective only if the current client supports the [addEventListener]{@link https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener} method and will be used as its third parameter.\r\n\t * @param {Object} [target=document] - The target where we want to attach the event listener.\r\n\t */","meta":{"range":[10621,10816],"filename":"CB_Pointer.js","lineno":148,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\input","code":{"id":"astnode100093325","name":"CB_Pointer.onUp","type":"FunctionExpression","paramnames":["callbackFunction","keepOldFunction","useCapture","target"]}},"description":"<p>Sets a function to execute when the &quot;[onPointerUp]{@link https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers/onpointerup}&quot; event is fired or removes it. More information: [Pointer events]{@link https://developer.mozilla.org/en-US/docs/Web/API/Pointer_events}.</p>","kind":"function","params":[{"type":{"names":["function","null"]},"description":"<p>The function (event listener) that we want to execute when the event is fired. The first and unique parameter received for this function will be the event object (already normalized by the {@link CB_Pointer.normalizeEvent} function). If a null value is used, the event will be removed.</p>","name":"callbackFunction"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":true,"description":"<p>Defines whether we want to keep any possible previous event listener for the same target and event name or not.</p>","name":"keepOldFunction"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>Defines whether the event we want to add will use capture or not. This parameter will be effective only if the current client supports the [addEventListener]{@link https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener} method and will be used as its third parameter.</p>","name":"useCapture"},{"type":{"names":["Object"]},"optional":true,"defaultvalue":"document","description":"<p>The target where we want to attach the event listener.</p>","name":"target"}],"name":"onUp","longname":"CB_Pointer.onUp","memberof":"CB_Pointer","scope":"static"},{"comment":"/**\r\n\t * Sets a function to execute when the \"[onPointerCancel]{@link https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers/onpointercancel}\" event is fired or removes it. More information: [Pointer events]{@link https://developer.mozilla.org/en-US/docs/Web/API/Pointer_events}.\r\n\t * @function\r\n\t * @param {function|null} callbackFunction - The function (event listener) that we want to execute when the event is fired. The first and unique parameter received for this function will be the event object (already normalized by the {@link CB_Pointer.normalizeEvent} function). If a null value is used, the event will be removed.\r\n\t * @param {boolean} [keepOldFunction=true] - Defines whether we want to keep any possible previous event listener for the same target and event name or not.\r\n\t * @param {boolean} [useCapture=false] - Defines whether the event we want to add will use capture or not. This parameter will be effective only if the current client supports the [addEventListener]{@link https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener} method and will be used as its third parameter.\r\n\t * @param {Object} [target=document] - The target where we want to attach the event listener.\r\n\t */","meta":{"range":[12068,12271],"filename":"CB_Pointer.js","lineno":162,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\input","code":{"id":"astnode100093347","name":"CB_Pointer.onCancel","type":"FunctionExpression","paramnames":["callbackFunction","keepOldFunction","useCapture","target"]}},"description":"<p>Sets a function to execute when the &quot;[onPointerCancel]{@link https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers/onpointercancel}&quot; event is fired or removes it. More information: [Pointer events]{@link https://developer.mozilla.org/en-US/docs/Web/API/Pointer_events}.</p>","kind":"function","params":[{"type":{"names":["function","null"]},"description":"<p>The function (event listener) that we want to execute when the event is fired. The first and unique parameter received for this function will be the event object (already normalized by the {@link CB_Pointer.normalizeEvent} function). If a null value is used, the event will be removed.</p>","name":"callbackFunction"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":true,"description":"<p>Defines whether we want to keep any possible previous event listener for the same target and event name or not.</p>","name":"keepOldFunction"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>Defines whether the event we want to add will use capture or not. This parameter will be effective only if the current client supports the [addEventListener]{@link https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener} method and will be used as its third parameter.</p>","name":"useCapture"},{"type":{"names":["Object"]},"optional":true,"defaultvalue":"document","description":"<p>The target where we want to attach the event listener.</p>","name":"target"}],"name":"onCancel","longname":"CB_Pointer.onCancel","memberof":"CB_Pointer","scope":"static"},{"comment":"/**\r\n\t * Sets a function to execute when the \"[onPointerEnter]{@link https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers/onpointerenter}\" event is fired or removes it. More information: [Pointer events]{@link https://developer.mozilla.org/en-US/docs/Web/API/Pointer_events}.\r\n\t * @function\r\n\t * @param {function|null} callbackFunction - The function (event listener) that we want to execute when the event is fired. The first and unique parameter received for this function will be the event object (already normalized by the {@link CB_Pointer.normalizeEvent} function). If a null value is used, the event will be removed.\r\n\t * @param {boolean} [keepOldFunction=true] - Defines whether we want to keep any possible previous event listener for the same target and event name or not.\r\n\t * @param {boolean} [useCapture=false] - Defines whether the event we want to add will use capture or not. This parameter will be effective only if the current client supports the [addEventListener]{@link https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener} method and will be used as its third parameter.\r\n\t * @param {Object} [target=document] - The target where we want to attach the event listener.\r\n\t */","meta":{"range":[13522,13717],"filename":"CB_Pointer.js","lineno":176,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\input","code":{"id":"astnode100093369","name":"CB_Pointer.onEnter","type":"FunctionExpression","paramnames":["callbackFunction","keepOldFunction","useCapture","target"]}},"description":"<p>Sets a function to execute when the &quot;[onPointerEnter]{@link https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers/onpointerenter}&quot; event is fired or removes it. More information: [Pointer events]{@link https://developer.mozilla.org/en-US/docs/Web/API/Pointer_events}.</p>","kind":"function","params":[{"type":{"names":["function","null"]},"description":"<p>The function (event listener) that we want to execute when the event is fired. The first and unique parameter received for this function will be the event object (already normalized by the {@link CB_Pointer.normalizeEvent} function). If a null value is used, the event will be removed.</p>","name":"callbackFunction"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":true,"description":"<p>Defines whether we want to keep any possible previous event listener for the same target and event name or not.</p>","name":"keepOldFunction"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>Defines whether the event we want to add will use capture or not. This parameter will be effective only if the current client supports the [addEventListener]{@link https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener} method and will be used as its third parameter.</p>","name":"useCapture"},{"type":{"names":["Object"]},"optional":true,"defaultvalue":"document","description":"<p>The target where we want to attach the event listener.</p>","name":"target"}],"name":"onEnter","longname":"CB_Pointer.onEnter","memberof":"CB_Pointer","scope":"static"},{"comment":"/**\r\n\t * Sets a function to execute when the \"[onPointerLeave]{@link https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers/onpointerleave}\" event is fired or removes it. More information: [Pointer events]{@link https://developer.mozilla.org/en-US/docs/Web/API/Pointer_events}.\r\n\t * @function\r\n\t * @param {function|null} callbackFunction - The function (event listener) that we want to execute when the event is fired. The first and unique parameter received for this function will be the event object (already normalized by the {@link CB_Pointer.normalizeEvent} function). If a null value is used, the event will be removed.\r\n\t * @param {boolean} [keepOldFunction=true] - Defines whether we want to keep any possible previous event listener for the same target and event name or not.\r\n\t * @param {boolean} [useCapture=false] - Defines whether the event we want to add will use capture or not. This parameter will be effective only if the current client supports the [addEventListener]{@link https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener} method and will be used as its third parameter.\r\n\t * @param {Object} [target=document] - The target where we want to attach the event listener.\r\n\t */","meta":{"range":[14967,15168],"filename":"CB_Pointer.js","lineno":190,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\input","code":{"id":"astnode100093390","name":"CB_Pointer.onLeave","type":"FunctionExpression","paramnames":["callbackFunction","keepOldFunction","useCapture","target"]}},"description":"<p>Sets a function to execute when the &quot;[onPointerLeave]{@link https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers/onpointerleave}&quot; event is fired or removes it. More information: [Pointer events]{@link https://developer.mozilla.org/en-US/docs/Web/API/Pointer_events}.</p>","kind":"function","params":[{"type":{"names":["function","null"]},"description":"<p>The function (event listener) that we want to execute when the event is fired. The first and unique parameter received for this function will be the event object (already normalized by the {@link CB_Pointer.normalizeEvent} function). If a null value is used, the event will be removed.</p>","name":"callbackFunction"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":true,"description":"<p>Defines whether we want to keep any possible previous event listener for the same target and event name or not.</p>","name":"keepOldFunction"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>Defines whether the event we want to add will use capture or not. This parameter will be effective only if the current client supports the [addEventListener]{@link https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener} method and will be used as its third parameter.</p>","name":"useCapture"},{"type":{"names":["Object"]},"optional":true,"defaultvalue":"document","description":"<p>The target where we want to attach the event listener.</p>","name":"target"}],"name":"onLeave","longname":"CB_Pointer.onLeave","memberof":"CB_Pointer","scope":"static"},{"comment":"/**\r\n\t * Sets a function to execute when the \"[onPointerOver]{@link https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers/onpointerover}\" event is fired or removes it. More information: [Pointer events]{@link https://developer.mozilla.org/en-US/docs/Web/API/Pointer_events}.\r\n\t * @function\r\n\t * @param {function|null} callbackFunction - The function (event listener) that we want to execute when the event is fired. The first and unique parameter received for this function will be the event object (already normalized by the {@link CB_Pointer.normalizeEvent} function). If a null value is used, the event will be removed.\r\n\t * @param {boolean} [keepOldFunction=true] - Defines whether we want to keep any possible previous event listener for the same target and event name or not.\r\n\t * @param {boolean} [useCapture=false] - Defines whether the event we want to add will use capture or not. This parameter will be effective only if the current client supports the [addEventListener]{@link https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener} method and will be used as its third parameter.\r\n\t * @param {Object} [target=document] - The target where we want to attach the event listener.\r\n\t */","meta":{"range":[16415,16608],"filename":"CB_Pointer.js","lineno":204,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\input","code":{"id":"astnode100093412","name":"CB_Pointer.onOver","type":"FunctionExpression","paramnames":["callbackFunction","keepOldFunction","useCapture","target"]}},"description":"<p>Sets a function to execute when the &quot;[onPointerOver]{@link https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers/onpointerover}&quot; event is fired or removes it. More information: [Pointer events]{@link https://developer.mozilla.org/en-US/docs/Web/API/Pointer_events}.</p>","kind":"function","params":[{"type":{"names":["function","null"]},"description":"<p>The function (event listener) that we want to execute when the event is fired. The first and unique parameter received for this function will be the event object (already normalized by the {@link CB_Pointer.normalizeEvent} function). If a null value is used, the event will be removed.</p>","name":"callbackFunction"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":true,"description":"<p>Defines whether we want to keep any possible previous event listener for the same target and event name or not.</p>","name":"keepOldFunction"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>Defines whether the event we want to add will use capture or not. This parameter will be effective only if the current client supports the [addEventListener]{@link https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener} method and will be used as its third parameter.</p>","name":"useCapture"},{"type":{"names":["Object"]},"optional":true,"defaultvalue":"document","description":"<p>The target where we want to attach the event listener.</p>","name":"target"}],"name":"onOver","longname":"CB_Pointer.onOver","memberof":"CB_Pointer","scope":"static"},{"comment":"/**\r\n\t * Sets a function to execute when the \"[onPointerOut]{@link https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers/onpointerout}\" event is fired or removes it. More information: [Pointer events]{@link https://developer.mozilla.org/en-US/docs/Web/API/Pointer_events}.\r\n\t * @function\r\n\t * @param {function|null} callbackFunction - The function (event listener) that we want to execute when the event is fired. The first and unique parameter received for this function will be the event object (already normalized by the {@link CB_Pointer.normalizeEvent} function). If a null value is used, the event will be removed.\r\n\t * @param {boolean} [keepOldFunction=true] - Defines whether we want to keep any possible previous event listener for the same target and event name or not.\r\n\t * @param {boolean} [useCapture=false] - Defines whether the event we want to add will use capture or not. This parameter will be effective only if the current client supports the [addEventListener]{@link https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener} method and will be used as its third parameter.\r\n\t * @param {Object} [target=document] - The target where we want to attach the event listener.\r\n\t */","meta":{"range":[17853,18050],"filename":"CB_Pointer.js","lineno":218,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\input","code":{"id":"astnode100093433","name":"CB_Pointer.onOut","type":"FunctionExpression","paramnames":["callbackFunction","keepOldFunction","useCapture","target"]}},"description":"<p>Sets a function to execute when the &quot;[onPointerOut]{@link https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers/onpointerout}&quot; event is fired or removes it. More information: [Pointer events]{@link https://developer.mozilla.org/en-US/docs/Web/API/Pointer_events}.</p>","kind":"function","params":[{"type":{"names":["function","null"]},"description":"<p>The function (event listener) that we want to execute when the event is fired. The first and unique parameter received for this function will be the event object (already normalized by the {@link CB_Pointer.normalizeEvent} function). If a null value is used, the event will be removed.</p>","name":"callbackFunction"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":true,"description":"<p>Defines whether we want to keep any possible previous event listener for the same target and event name or not.</p>","name":"keepOldFunction"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>Defines whether the event we want to add will use capture or not. This parameter will be effective only if the current client supports the [addEventListener]{@link https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener} method and will be used as its third parameter.</p>","name":"useCapture"},{"type":{"names":["Object"]},"optional":true,"defaultvalue":"document","description":"<p>The target where we want to attach the event listener.</p>","name":"target"}],"name":"onOut","longname":"CB_Pointer.onOut","memberof":"CB_Pointer","scope":"static"},{"comment":"/**\r\n\t * Sets a function to execute when the \"[onPointerMove]{@link https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers/onpointermove}\" event is fired or removes it. More information: [Pointer events]{@link https://developer.mozilla.org/en-US/docs/Web/API/Pointer_events}.\r\n\t * @function\r\n\t * @param {function|null} callbackFunction - The function (event listener) that we want to execute when the event is fired. The first and unique parameter received for this function will be the event object (already normalized by the {@link CB_Pointer.normalizeEvent} function). If a null value is used, the event will be removed.\r\n\t * @param {boolean} [keepOldFunction=true] - Defines whether we want to keep any possible previous event listener for the same target and event name or not.\r\n\t * @param {boolean} [useCapture=false] - Defines whether the event we want to add will use capture or not. This parameter will be effective only if the current client supports the [addEventListener]{@link https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener} method and will be used as its third parameter.\r\n\t * @param {Object} [target=document] - The target where we want to attach the event listener.\r\n\t */","meta":{"range":[19297,19490],"filename":"CB_Pointer.js","lineno":232,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\input","code":{"id":"astnode100093455","name":"CB_Pointer.onMove","type":"FunctionExpression","paramnames":["callbackFunction","keepOldFunction","useCapture","target"]}},"description":"<p>Sets a function to execute when the &quot;[onPointerMove]{@link https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers/onpointermove}&quot; event is fired or removes it. More information: [Pointer events]{@link https://developer.mozilla.org/en-US/docs/Web/API/Pointer_events}.</p>","kind":"function","params":[{"type":{"names":["function","null"]},"description":"<p>The function (event listener) that we want to execute when the event is fired. The first and unique parameter received for this function will be the event object (already normalized by the {@link CB_Pointer.normalizeEvent} function). If a null value is used, the event will be removed.</p>","name":"callbackFunction"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":true,"description":"<p>Defines whether we want to keep any possible previous event listener for the same target and event name or not.</p>","name":"keepOldFunction"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>Defines whether the event we want to add will use capture or not. This parameter will be effective only if the current client supports the [addEventListener]{@link https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener} method and will be used as its third parameter.</p>","name":"useCapture"},{"type":{"names":["Object"]},"optional":true,"defaultvalue":"document","description":"<p>The target where we want to attach the event listener.</p>","name":"target"}],"name":"onMove","longname":"CB_Pointer.onMove","memberof":"CB_Pointer","scope":"static"},{"comment":"/**\r\n\t * Sets a function to execute when the \"[onGotPointerCapture]{@link https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers/ongotpointercapture}\" event is fired or removes it. More information: [Pointer events]{@link https://developer.mozilla.org/en-US/docs/Web/API/Pointer_events}.\r\n\t * @function\r\n\t * @param {function|null} callbackFunction - The function (event listener) that we want to execute when the event is fired. The first and unique parameter received for this function will be the event object (already normalized by the {@link CB_Pointer.normalizeEvent} function). If a null value is used, the event will be removed.\r\n\t * @param {boolean} [keepOldFunction=true] - Defines whether we want to keep any possible previous event listener for the same target and event name or not.\r\n\t * @param {boolean} [useCapture=false] - Defines whether the event we want to add will use capture or not. This parameter will be effective only if the current client supports the [addEventListener]{@link https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener} method and will be used as its third parameter.\r\n\t * @param {Object} [target=document] - The target where we want to attach the event listener.\r\n\t */","meta":{"range":[20750,20960],"filename":"CB_Pointer.js","lineno":246,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\input","code":{"id":"astnode100093476","name":"CB_Pointer.onGotPointCapture","type":"FunctionExpression","paramnames":["callbackFunction","keepOldFunction","useCapture","target"]}},"description":"<p>Sets a function to execute when the &quot;[onGotPointerCapture]{@link https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers/ongotpointercapture}&quot; event is fired or removes it. More information: [Pointer events]{@link https://developer.mozilla.org/en-US/docs/Web/API/Pointer_events}.</p>","kind":"function","params":[{"type":{"names":["function","null"]},"description":"<p>The function (event listener) that we want to execute when the event is fired. The first and unique parameter received for this function will be the event object (already normalized by the {@link CB_Pointer.normalizeEvent} function). If a null value is used, the event will be removed.</p>","name":"callbackFunction"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":true,"description":"<p>Defines whether we want to keep any possible previous event listener for the same target and event name or not.</p>","name":"keepOldFunction"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>Defines whether the event we want to add will use capture or not. This parameter will be effective only if the current client supports the [addEventListener]{@link https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener} method and will be used as its third parameter.</p>","name":"useCapture"},{"type":{"names":["Object"]},"optional":true,"defaultvalue":"document","description":"<p>The target where we want to attach the event listener.</p>","name":"target"}],"name":"onGotPointCapture","longname":"CB_Pointer.onGotPointCapture","memberof":"CB_Pointer","scope":"static"},{"comment":"/**\r\n\t * Sets a function to execute when the \"[onLostPointerCapture]{@link https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers/onlostpointercapture}\" event is fired or removes it. More information: [Pointer events]{@link https://developer.mozilla.org/en-US/docs/Web/API/Pointer_events}.\r\n\t * @function\r\n\t * @param {function|null} callbackFunction - The function (event listener) that we want to execute when the event is fired. The first and unique parameter received for this function will be the event object (already normalized by the {@link CB_Pointer.normalizeEvent} function). If a null value is used, the event will be removed.\r\n\t * @param {boolean} [keepOldFunction=true] - Defines whether we want to keep any possible previous event listener for the same target and event name or not.\r\n\t * @param {boolean} [useCapture=false] - Defines whether the event we want to add will use capture or not. This parameter will be effective only if the current client supports the [addEventListener]{@link https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener} method and will be used as its third parameter.\r\n\t * @param {Object} [target=document] - The target where we want to attach the event listener.\r\n\t */","meta":{"range":[22222,22440],"filename":"CB_Pointer.js","lineno":260,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\input","code":{"id":"astnode100093497","name":"CB_Pointer.onLostPointCapture","type":"FunctionExpression","paramnames":["callbackFunction","keepOldFunction","useCapture","target"]}},"description":"<p>Sets a function to execute when the &quot;[onLostPointerCapture]{@link https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers/onlostpointercapture}&quot; event is fired or removes it. More information: [Pointer events]{@link https://developer.mozilla.org/en-US/docs/Web/API/Pointer_events}.</p>","kind":"function","params":[{"type":{"names":["function","null"]},"description":"<p>The function (event listener) that we want to execute when the event is fired. The first and unique parameter received for this function will be the event object (already normalized by the {@link CB_Pointer.normalizeEvent} function). If a null value is used, the event will be removed.</p>","name":"callbackFunction"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":true,"description":"<p>Defines whether we want to keep any possible previous event listener for the same target and event name or not.</p>","name":"keepOldFunction"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>Defines whether the event we want to add will use capture or not. This parameter will be effective only if the current client supports the [addEventListener]{@link https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener} method and will be used as its third parameter.</p>","name":"useCapture"},{"type":{"names":["Object"]},"optional":true,"defaultvalue":"document","description":"<p>The target where we want to attach the event listener.</p>","name":"target"}],"name":"onLostPointCapture","longname":"CB_Pointer.onLostPointCapture","memberof":"CB_Pointer","scope":"static"},{"comment":"/**\r\n * @file Touch events management. Contains the {@link CB_Touch} static class.\r\n * @author Joan Alba Maldonado <workindalian@gmail.com>\r\n */","meta":{"filename":"CB_Touch.js","lineno":1,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\input","code":{}},"name":"CrossBase/input/CB_Touch.js","kind":"file","description":"<p>Touch events management. Contains the {@link CB_Touch} static class.</p>","preserveName":true,"author":["Joan Alba Maldonado <workindalian@gmail.com>"],"longname":"CrossBase/input/CB_Touch.js","scope":"global"},{"comment":"/**\r\n * Static class to manage the [touch events]{@link https://developer.mozilla.org/en-US/docs/Web/API/Touch_events}. It will return itself if it is tried to be instantiated. It can also use [Pressure.js]{@link https://pressurejs.com/} and [Hammer.js]{@link https://hammerjs.github.io/}.\r\n * @namespace\r\n */","meta":{"range":[467,509],"filename":"CB_Touch.js","lineno":11,"columnno":4,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\input","code":{"id":"astnode100094284","name":"CB_Touch","type":"FunctionExpression"}},"description":"<p>Static class to manage the [touch events]{@link https://developer.mozilla.org/en-US/docs/Web/API/Touch_events}. It will return itself if it is tried to be instantiated. It can also use [Pressure.js]{@link https://pressurejs.com/} and [Hammer.js]{@link https://hammerjs.github.io/}.</p>","kind":"namespace","name":"CB_Touch","longname":"CB_Touch","scope":"global","params":[]},{"comment":"/**\r\n\t * Normalizes the given \"force\" property value across different clients. The new attached methods and properties may include polyfills, etc. This function is called by {@link CB_Touch.normalizePoint} automatically.\r\n\t * @function\r\n\t * @param {number} force - Force value to be normalized.\r\n\t * @returns {Event} Returns the force value normalized.\r\n\t * @todo Not all web clients are the same, so not all should be normalized.\r\n\t */","meta":{"range":[4224,4582],"filename":"CB_Touch.js","lineno":91,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\input","code":{"id":"astnode100094635","name":"CB_Touch.normalizeForce","type":"FunctionExpression","paramnames":["force"]},"vars":{"force":"CB_Touch.normalizeForce~force"}},"description":"<p>Normalizes the given &quot;force&quot; property value across different clients. The new attached methods and properties may include polyfills, etc. This function is called by {@link CB_Touch.normalizePoint} automatically.</p>","kind":"function","params":[{"type":{"names":["number"]},"description":"<p>Force value to be normalized.</p>","name":"force"}],"returns":[{"type":{"names":["Event"]},"description":"<p>Returns the force value normalized.</p>"}],"todo":["Not all web clients are the same, so not all should be normalized."],"name":"normalizeForce","longname":"CB_Touch.normalizeForce","memberof":"CB_Touch","scope":"static"},{"comment":"/**\r\n\t * Tries to return the [touch event]{@link https://developer.mozilla.org/en-US/docs/Web/API/TouchEvent} object with some properties normalized (since different clients can use different values), when possible. It also calls the {@link CB_Events.normalize} and {@link CB_Touch.normalizePoints} functions internally. Some properties affected could be [targetTouches]{@link https://developer.mozilla.org/en-US/docs/Web/API/TouchEvent/targetTouches}, [touches]{@link https://developer.mozilla.org/en-US/docs/Web/API/TouchEvent/touches}, [changedTouches]{@link https://developer.mozilla.org/en-US/docs/Web/API/TouchEvent/changedTouches}, etc.\r\n\t * @function\r\n\t * @param {Event} e - [Touch event]{@link https://developer.mozilla.org/en-US/docs/Web/API/TouchEvent} object. If not provided, it will use the value of \"event\", \"window.event\", \"Event\" or an empty object (\"{}\").\r\n\t * @returns {Event} Returns the [touch event]{@link https://developer.mozilla.org/en-US/docs/Web/API/TouchEvent} object normalized.\r\n\t * @todo Add more properties and methods to normalize (if needed)\r\n\t */","meta":{"range":[5679,6058],"filename":"CB_Touch.js","lineno":109,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\input","code":{"id":"astnode100094692","name":"CB_Touch.normalizeEvent","type":"FunctionExpression","paramnames":["e"]},"vars":{"e":"CB_Touch.normalizeEvent~e","e.targetTouches":"CB_Touch.normalizeEvent~e.targetTouches","e.touches":"CB_Touch.normalizeEvent~e.touches","e.changedTouches":"CB_Touch.normalizeEvent~e.changedTouches"}},"description":"<p>Tries to return the [touch event]{@link https://developer.mozilla.org/en-US/docs/Web/API/TouchEvent} object with some properties normalized (since different clients can use different values), when possible. It also calls the {@link CB_Events.normalize} and {@link CB_Touch.normalizePoints} functions internally. Some properties affected could be [targetTouches]{@link https://developer.mozilla.org/en-US/docs/Web/API/TouchEvent/targetTouches}, [touches]{@link https://developer.mozilla.org/en-US/docs/Web/API/TouchEvent/touches}, [changedTouches]{@link https://developer.mozilla.org/en-US/docs/Web/API/TouchEvent/changedTouches}, etc.</p>","kind":"function","params":[{"type":{"names":["Event"]},"description":"<p>[Touch event]{@link https://developer.mozilla.org/en-US/docs/Web/API/TouchEvent} object. If not provided, it will use the value of &quot;event&quot;, &quot;window.event&quot;, &quot;Event&quot; or an empty object (&quot;{}&quot;).</p>","name":"e"}],"returns":[{"type":{"names":["Event"]},"description":"<p>Returns the [touch event]{@link https://developer.mozilla.org/en-US/docs/Web/API/TouchEvent} object normalized.</p>"}],"todo":["Add more properties and methods to normalize (if needed)"],"name":"normalizeEvent","longname":"CB_Touch.normalizeEvent","memberof":"CB_Touch","scope":"static"},{"comment":"/**\r\n\t * Normalizes a given list of points. Calls {@link CB_Touch.normalizePoint} internally. This function is called by {@link CB_Touch.normalizeEvent} automatically.\r\n\t * @function\r\n\t * @param {TouchList|array} points - [TouchList]{@link https://developer.mozilla.org/en-US/docs/Web/API/TouchList} or array with the points ([Touch objects]{@link https://developer.mozilla.org/en-US/docs/Web/API/Touch}) to be normalized.\r\n\t * @returns {TouchList|array} Returns the given points normalized.\r\n\t */","meta":{"range":[6570,6870],"filename":"CB_Touch.js","lineno":130,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\input","code":{"id":"astnode100094746","name":"CB_Touch.normalizePoints","type":"FunctionExpression","paramnames":["points"]},"vars":{"x":"CB_Touch.normalizePoints~x","points[undefined]":null}},"description":"<p>Normalizes a given list of points. Calls {@link CB_Touch.normalizePoint} internally. This function is called by {@link CB_Touch.normalizeEvent} automatically.</p>","kind":"function","params":[{"type":{"names":["TouchList","array"]},"description":"<p>[TouchList]{@link https://developer.mozilla.org/en-US/docs/Web/API/TouchList} or array with the points ([Touch objects]{@link https://developer.mozilla.org/en-US/docs/Web/API/Touch}) to be normalized.</p>","name":"points"}],"returns":[{"type":{"names":["TouchList","array"]},"description":"<p>Returns the given points normalized.</p>"}],"name":"normalizePoints","longname":"CB_Touch.normalizePoints","memberof":"CB_Touch","scope":"static"},{"comment":"/**\r\n\t * Normalizes a given point. Calls {@link CB_Touch.normalizeForce} internally. This function is called by {@link CB_Touch.normalizePoints} automatically.\r\n\t * @function\r\n\t * @param {Touch} point - [Touch object]{@link https://developer.mozilla.org/en-US/docs/Web/API/Touch} to be normalized.\r\n\t * @returns {Touch} Returns the given point normalized.\r\n\t */","meta":{"range":[7246,7846],"filename":"CB_Touch.js","lineno":147,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\input","code":{"id":"astnode100094802","name":"CB_Touch.normalizePoint","type":"FunctionExpression","paramnames":["point"]},"vars":{"point.force":"point.force","e.force":"e.force"}},"description":"<p>Normalizes a given point. Calls {@link CB_Touch.normalizeForce} internally. This function is called by {@link CB_Touch.normalizePoints} automatically.</p>","kind":"function","params":[{"type":{"names":["Touch"]},"description":"<p>[Touch object]{@link https://developer.mozilla.org/en-US/docs/Web/API/Touch} to be normalized.</p>","name":"point"}],"returns":[{"type":{"names":["Touch"]},"description":"<p>Returns the given point normalized.</p>"}],"name":"normalizePoint","longname":"CB_Touch.normalizePoint","memberof":"CB_Touch","scope":"static"},{"comment":"/**\r\n\t * Returns the last [touch event]{@link https://developer.mozilla.org/en-US/docs/Web/API/TouchEvent} object (if any), processed by {@link CB_Touch.normalizeEvent} internally, which was used in the last touch event fired, if that touch event was [touchstart]{@link https://developer.mozilla.org/en-US/docs/Web/API/Element/touchstart_event}, [touchenter]{@link https://w3.org/TR/2011/WD-touch-events-20110505/#the-touchenter-event} or [touchmove]{@link https://developer.mozilla.org/en-US/docs/Web/API/Element/touchmove_event}. The [touchend]{@link https://developer.mozilla.org/en-US/docs/Web/API/Element/touchend_event} and [touchleave]{@link https://w3.org/TR/2011/WD-touch-events-20110505/#the-touchleave-event} events set it to \"null\".\r\n\t * @function\r\n\t * @returns {Event|null} Returns the last [touch event]{@link https://developer.mozilla.org/en-US/docs/Web/API/TouchEvent} affected, if any.\r\n\t */","meta":{"range":[8768,8831],"filename":"CB_Touch.js","lineno":168,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\input","code":{"id":"astnode100094907","name":"CB_Touch.getData","type":"FunctionExpression","paramnames":[]}},"description":"<p>Returns the last [touch event]{@link https://developer.mozilla.org/en-US/docs/Web/API/TouchEvent} object (if any), processed by {@link CB_Touch.normalizeEvent} internally, which was used in the last touch event fired, if that touch event was [touchstart]{@link https://developer.mozilla.org/en-US/docs/Web/API/Element/touchstart_event}, [touchenter]{@link https://w3.org/TR/2011/WD-touch-events-20110505/#the-touchenter-event} or [touchmove]{@link https://developer.mozilla.org/en-US/docs/Web/API/Element/touchmove_event}. The [touchend]{@link https://developer.mozilla.org/en-US/docs/Web/API/Element/touchend_event} and [touchleave]{@link https://w3.org/TR/2011/WD-touch-events-20110505/#the-touchleave-event} events set it to &quot;null&quot;.</p>","kind":"function","returns":[{"type":{"names":["Event","null"]},"description":"<p>Returns the last [touch event]{@link https://developer.mozilla.org/en-US/docs/Web/API/TouchEvent} affected, if any.</p>"}],"name":"getData","longname":"CB_Touch.getData","memberof":"CB_Touch","scope":"static"},{"comment":"/**\r\n\t * Returns the maximum of touch points supported by the device (if possible).\r\n\t * @function\r\n\t * @returns {integer|null} Maximum touch points supported by the device (if possible). If it cannot be detected, returns null.\r\n\t */","meta":{"range":[9078,9355],"filename":"CB_Touch.js","lineno":179,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\input","code":{"id":"astnode100094918","name":"CB_Touch.getMaxTouchPoints","type":"FunctionExpression","paramnames":[]}},"description":"<p>Returns the maximum of touch points supported by the device (if possible).</p>","kind":"function","returns":[{"type":{"names":["integer","null"]},"description":"<p>Maximum touch points supported by the device (if possible). If it cannot be detected, returns null.</p>"}],"name":"getMaxTouchPoints","longname":"CB_Touch.getMaxTouchPoints","memberof":"CB_Touch","scope":"static"},{"comment":"/**\r\n\t * Sets a function to execute when the [onTouchStart]{@link https://developer.mozilla.org/en-US/docs/Web/API/Element/touchstart_event} event is fired or removes it. More information: [Touch events]{@link https://developer.mozilla.org/en-US/docs/DOM/Touch_events}.\r\n\t * @function\r\n\t * @param {function|null} callbackFunction - The function (event listener) that we want to execute when the event is fired. The first and unique parameter received for this function will be the event object (already normalized by the {@link CB_Touch.normalizeEvent} function). If a null value is used, the event will be removed.\r\n\t * @param {boolean} [keepOldFunction=true] - Defines whether we want to keep any possible previous event listener for the same target and event name or not.\r\n\t * @param {boolean} [useCapture=false] - Defines whether the event we want to add will use capture or not. This parameter will be effective only if the current client supports the [addEventListener]{@link https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener} method and will be used as its third parameter.\r\n\t * @param {Object} [target=document] - The target where we want to attach the event listener.\r\n\t */","meta":{"range":[10582,10771],"filename":"CB_Touch.js","lineno":198,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\input","code":{"id":"astnode100094958","name":"CB_Touch.onStart","type":"FunctionExpression","paramnames":["callbackFunction","keepOldFunction","useCapture","target"]}},"description":"<p>Sets a function to execute when the [onTouchStart]{@link https://developer.mozilla.org/en-US/docs/Web/API/Element/touchstart_event} event is fired or removes it. More information: [Touch events]{@link https://developer.mozilla.org/en-US/docs/DOM/Touch_events}.</p>","kind":"function","params":[{"type":{"names":["function","null"]},"description":"<p>The function (event listener) that we want to execute when the event is fired. The first and unique parameter received for this function will be the event object (already normalized by the {@link CB_Touch.normalizeEvent} function). If a null value is used, the event will be removed.</p>","name":"callbackFunction"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":true,"description":"<p>Defines whether we want to keep any possible previous event listener for the same target and event name or not.</p>","name":"keepOldFunction"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>Defines whether the event we want to add will use capture or not. This parameter will be effective only if the current client supports the [addEventListener]{@link https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener} method and will be used as its third parameter.</p>","name":"useCapture"},{"type":{"names":["Object"]},"optional":true,"defaultvalue":"document","description":"<p>The target where we want to attach the event listener.</p>","name":"target"}],"name":"onStart","longname":"CB_Touch.onStart","memberof":"CB_Touch","scope":"static"},{"comment":"/**\r\n\t * Sets a function to execute when the [onTouchEnd]{@link https://developer.mozilla.org/en-US/docs/Web/API/Element/touchend_event} event is fired or removes it. More information: [Touch events]{@link https://developer.mozilla.org/en-US/docs/DOM/Touch_events}.\r\n\t * @function\r\n\t * @param {function|null} callbackFunction - The function (event listener) that we want to execute when the event is fired. The first and unique parameter received for this function will be the event object (already normalized by the {@link CB_Touch.normalizeEvent} function). If a null value is used, the event will be removed.\r\n\t * @param {boolean} [keepOldFunction=true] - Defines whether we want to keep any possible previous event listener for the same target and event name or not.\r\n\t * @param {boolean} [useCapture=false] - Defines whether the event we want to add will use capture or not. This parameter will be effective only if the current client supports the [addEventListener]{@link https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener} method and will be used as its third parameter.\r\n\t * @param {Object} [target=document] - The target where we want to attach the event listener.\r\n\t */","meta":{"range":[11993,12178],"filename":"CB_Touch.js","lineno":212,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\input","code":{"id":"astnode100094979","name":"CB_Touch.onEnd","type":"FunctionExpression","paramnames":["callbackFunction","keepOldFunction","useCapture","target"]}},"description":"<p>Sets a function to execute when the [onTouchEnd]{@link https://developer.mozilla.org/en-US/docs/Web/API/Element/touchend_event} event is fired or removes it. More information: [Touch events]{@link https://developer.mozilla.org/en-US/docs/DOM/Touch_events}.</p>","kind":"function","params":[{"type":{"names":["function","null"]},"description":"<p>The function (event listener) that we want to execute when the event is fired. The first and unique parameter received for this function will be the event object (already normalized by the {@link CB_Touch.normalizeEvent} function). If a null value is used, the event will be removed.</p>","name":"callbackFunction"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":true,"description":"<p>Defines whether we want to keep any possible previous event listener for the same target and event name or not.</p>","name":"keepOldFunction"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>Defines whether the event we want to add will use capture or not. This parameter will be effective only if the current client supports the [addEventListener]{@link https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener} method and will be used as its third parameter.</p>","name":"useCapture"},{"type":{"names":["Object"]},"optional":true,"defaultvalue":"document","description":"<p>The target where we want to attach the event listener.</p>","name":"target"}],"name":"onEnd","longname":"CB_Touch.onEnd","memberof":"CB_Touch","scope":"static"},{"comment":"/**\r\n\t * Sets a function to execute when the [onTouchCancel]{@link https://developer.mozilla.org/en-US/docs/Web/API/Element/touchcancel_event} event is fired or removes it. More information: [Touch events]{@link https://developer.mozilla.org/en-US/docs/DOM/Touch_events}.\r\n\t * @function\r\n\t * @param {function|null} callbackFunction - The function (event listener) that we want to execute when the event is fired. The first and unique parameter received for this function will be the event object (already normalized by the {@link CB_Touch.normalizeEvent} function). If a null value is used, the event will be removed.\r\n\t * @param {boolean} [keepOldFunction=true] - Defines whether we want to keep any possible previous event listener for the same target and event name or not.\r\n\t * @param {boolean} [useCapture=false] - Defines whether the event we want to add will use capture or not. This parameter will be effective only if the current client supports the [addEventListener]{@link https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener} method and will be used as its third parameter.\r\n\t * @param {Object} [target=document] - The target where we want to attach the event listener.\r\n\t */","meta":{"range":[13406,13597],"filename":"CB_Touch.js","lineno":226,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\input","code":{"id":"astnode100095000","name":"CB_Touch.onCancel","type":"FunctionExpression","paramnames":["callbackFunction","keepOldFunction","useCapture","target"]}},"description":"<p>Sets a function to execute when the [onTouchCancel]{@link https://developer.mozilla.org/en-US/docs/Web/API/Element/touchcancel_event} event is fired or removes it. More information: [Touch events]{@link https://developer.mozilla.org/en-US/docs/DOM/Touch_events}.</p>","kind":"function","params":[{"type":{"names":["function","null"]},"description":"<p>The function (event listener) that we want to execute when the event is fired. The first and unique parameter received for this function will be the event object (already normalized by the {@link CB_Touch.normalizeEvent} function). If a null value is used, the event will be removed.</p>","name":"callbackFunction"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":true,"description":"<p>Defines whether we want to keep any possible previous event listener for the same target and event name or not.</p>","name":"keepOldFunction"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>Defines whether the event we want to add will use capture or not. This parameter will be effective only if the current client supports the [addEventListener]{@link https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener} method and will be used as its third parameter.</p>","name":"useCapture"},{"type":{"names":["Object"]},"optional":true,"defaultvalue":"document","description":"<p>The target where we want to attach the event listener.</p>","name":"target"}],"name":"onCancel","longname":"CB_Touch.onCancel","memberof":"CB_Touch","scope":"static"},{"comment":"/**\r\n\t * Sets a function to execute when the [onTouchEnter]{@link https://w3.org/TR/2011/WD-touch-events-20110505/#the-touchenter-event} event is fired or removes it. More information: [Touch events]{@link https://developer.mozilla.org/en-US/docs/DOM/Touch_events}.\r\n\t * @function\r\n\t * @param {function|null} callbackFunction - The function (event listener) that we want to execute when the event is fired. The first and unique parameter received for this function will be the event object (already normalized by the {@link CB_Touch.normalizeEvent} function). If a null value is used, the event will be removed.\r\n\t * @param {boolean} [keepOldFunction=true] - Defines whether we want to keep any possible previous event listener for the same target and event name or not.\r\n\t * @param {boolean} [useCapture=false] - Defines whether the event we want to add will use capture or not. This parameter will be effective only if the current client supports the [addEventListener]{@link https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener} method and will be used as its third parameter.\r\n\t * @param {Object} [target=document] - The target where we want to attach the event listener.\r\n\t */","meta":{"range":[14820,15009],"filename":"CB_Touch.js","lineno":240,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\input","code":{"id":"astnode100095021","name":"CB_Touch.onEnter","type":"FunctionExpression","paramnames":["callbackFunction","keepOldFunction","useCapture","target"]}},"description":"<p>Sets a function to execute when the [onTouchEnter]{@link https://w3.org/TR/2011/WD-touch-events-20110505/#the-touchenter-event} event is fired or removes it. More information: [Touch events]{@link https://developer.mozilla.org/en-US/docs/DOM/Touch_events}.</p>","kind":"function","params":[{"type":{"names":["function","null"]},"description":"<p>The function (event listener) that we want to execute when the event is fired. The first and unique parameter received for this function will be the event object (already normalized by the {@link CB_Touch.normalizeEvent} function). If a null value is used, the event will be removed.</p>","name":"callbackFunction"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":true,"description":"<p>Defines whether we want to keep any possible previous event listener for the same target and event name or not.</p>","name":"keepOldFunction"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>Defines whether the event we want to add will use capture or not. This parameter will be effective only if the current client supports the [addEventListener]{@link https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener} method and will be used as its third parameter.</p>","name":"useCapture"},{"type":{"names":["Object"]},"optional":true,"defaultvalue":"document","description":"<p>The target where we want to attach the event listener.</p>","name":"target"}],"name":"onEnter","longname":"CB_Touch.onEnter","memberof":"CB_Touch","scope":"static"},{"comment":"/**\r\n\t * Sets a function to execute when the [onTouchLeave]{@link https://w3.org/TR/2011/WD-touch-events-20110505/#the-touchleave-event} event is fired or removes it. More information: [Touch events]{@link https://developer.mozilla.org/en-US/docs/DOM/Touch_events}.\r\n\t * @function\r\n\t * @param {function|null} callbackFunction - The function (event listener) that we want to execute when the event is fired. The first and unique parameter received for this function will be the event object (already normalized by the {@link CB_Touch.normalizeEvent} function). If a null value is used, the event will be removed.\r\n\t * @param {boolean} [keepOldFunction=true] - Defines whether we want to keep any possible previous event listener for the same target and event name or not.\r\n\t * @param {boolean} [useCapture=false] - Defines whether the event we want to add will use capture or not. This parameter will be effective only if the current client supports the [addEventListener]{@link https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener} method and will be used as its third parameter.\r\n\t * @param {Object} [target=document] - The target where we want to attach the event listener.\r\n\t */","meta":{"range":[16231,16420],"filename":"CB_Touch.js","lineno":254,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\input","code":{"id":"astnode100095042","name":"CB_Touch.onLeave","type":"FunctionExpression","paramnames":["callbackFunction","keepOldFunction","useCapture","target"]}},"description":"<p>Sets a function to execute when the [onTouchLeave]{@link https://w3.org/TR/2011/WD-touch-events-20110505/#the-touchleave-event} event is fired or removes it. More information: [Touch events]{@link https://developer.mozilla.org/en-US/docs/DOM/Touch_events}.</p>","kind":"function","params":[{"type":{"names":["function","null"]},"description":"<p>The function (event listener) that we want to execute when the event is fired. The first and unique parameter received for this function will be the event object (already normalized by the {@link CB_Touch.normalizeEvent} function). If a null value is used, the event will be removed.</p>","name":"callbackFunction"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":true,"description":"<p>Defines whether we want to keep any possible previous event listener for the same target and event name or not.</p>","name":"keepOldFunction"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>Defines whether the event we want to add will use capture or not. This parameter will be effective only if the current client supports the [addEventListener]{@link https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener} method and will be used as its third parameter.</p>","name":"useCapture"},{"type":{"names":["Object"]},"optional":true,"defaultvalue":"document","description":"<p>The target where we want to attach the event listener.</p>","name":"target"}],"name":"onLeave","longname":"CB_Touch.onLeave","memberof":"CB_Touch","scope":"static"},{"comment":"/**\r\n\t * Sets a function to execute when the [onTouchMove]{@link https://developer.mozilla.org/en-US/docs/Web/API/Element/touchmove_event} event is fired or removes it. More information: [Touch events]{@link https://developer.mozilla.org/en-US/docs/DOM/Touch_events}.\r\n\t * @function\r\n\t * @param {function|null} callbackFunction - The function (event listener) that we want to execute when the event is fired. The first and unique parameter received for this function will be the event object (already normalized by the {@link CB_Touch.normalizeEvent} function). If a null value is used, the event will be removed.\r\n\t * @param {boolean} [keepOldFunction=true] - Defines whether we want to keep any possible previous event listener for the same target and event name or not.\r\n\t * @param {boolean} [useCapture=false] - Defines whether the event we want to add will use capture or not. This parameter will be effective only if the current client supports the [addEventListener]{@link https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener} method and will be used as its third parameter.\r\n\t * @param {Object} [target=document] - The target where we want to attach the event listener.\r\n\t */","meta":{"range":[17644,17831],"filename":"CB_Touch.js","lineno":268,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\input","code":{"id":"astnode100095063","name":"CB_Touch.onMove","type":"FunctionExpression","paramnames":["callbackFunction","keepOldFunction","useCapture","target"]}},"description":"<p>Sets a function to execute when the [onTouchMove]{@link https://developer.mozilla.org/en-US/docs/Web/API/Element/touchmove_event} event is fired or removes it. More information: [Touch events]{@link https://developer.mozilla.org/en-US/docs/DOM/Touch_events}.</p>","kind":"function","params":[{"type":{"names":["function","null"]},"description":"<p>The function (event listener) that we want to execute when the event is fired. The first and unique parameter received for this function will be the event object (already normalized by the {@link CB_Touch.normalizeEvent} function). If a null value is used, the event will be removed.</p>","name":"callbackFunction"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":true,"description":"<p>Defines whether we want to keep any possible previous event listener for the same target and event name or not.</p>","name":"keepOldFunction"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>Defines whether the event we want to add will use capture or not. This parameter will be effective only if the current client supports the [addEventListener]{@link https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener} method and will be used as its third parameter.</p>","name":"useCapture"},{"type":{"names":["Object"]},"optional":true,"defaultvalue":"document","description":"<p>The target where we want to attach the event listener.</p>","name":"target"}],"name":"onMove","longname":"CB_Touch.onMove","memberof":"CB_Touch","scope":"static"},{"comment":"/**\r\n\t* Returns the [Hammer.js]{@link https://hammerjs.github.io/} object (if any). Useful for managing touch gestures.\r\n\t * @function\r\n\t * @returns {Object} Returns the [Hammer.js]{@link https://hammerjs.github.io/} object (if any).\r\n\t */","meta":{"range":[19199,19282],"filename":"CB_Touch.js","lineno":316,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\input","code":{"id":"astnode100095175","name":"CB_Touch.getHammerJSObject","type":"FunctionExpression","paramnames":[]}},"description":"<p>Returns the [Hammer.js]{@link https://hammerjs.github.io/} object (if any). Useful for managing touch gestures.</p>","kind":"function","returns":[{"type":{"names":["Object"]},"description":"<p>Returns the [Hammer.js]{@link https://hammerjs.github.io/} object (if any).</p>"}],"name":"getHammerJSObject","longname":"CB_Touch.getHammerJSObject","memberof":"CB_Touch","scope":"static"},{"comment":"/**\r\n\t* Returns the [Pressure.js]{@link https://pressurejs.com/} object (if any). Useful for managing [Force Touch/3D Touch]{@link https://en.wikipedia.org/wiki/Force_Touch} and [Pointer Pressure]{@link https://developer.mozilla.org/en-US/docs/Web/API/PointerEvent/pressure} features.\r\n\t * @function\r\n\t * @returns {Object} Returns the [Pressure.js]{@link https://pressurejs.com/} object (if any).\r\n\t */","meta":{"range":[19697,19784],"filename":"CB_Touch.js","lineno":327,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\input","code":{"id":"astnode100095186","name":"CB_Touch.getPressureJSObject","type":"FunctionExpression","paramnames":[]}},"description":"<p>Returns the [Pressure.js]{@link https://pressurejs.com/} object (if any). Useful for managing [Force Touch/3D Touch]{@link https://en.wikipedia.org/wiki/Force_Touch} and [Pointer Pressure]{@link https://developer.mozilla.org/en-US/docs/Web/API/PointerEvent/pressure} features.</p>","kind":"function","returns":[{"type":{"names":["Object"]},"description":"<p>Returns the [Pressure.js]{@link https://pressurejs.com/} object (if any).</p>"}],"name":"getPressureJSObject","longname":"CB_Touch.getPressureJSObject","memberof":"CB_Touch","scope":"static"},{"comment":"/**\r\n\t* First time, this function will return true. Next calls, with same index, returns false during the previously-defined time set in the previous call and true after that delay. After the first call, next calls of this function with same index will be ignored (returning always false) until the delay provided expires. If it is called after a previous call with the same index and the delay of the previous call already expired, it will act as it was the first call again. Useful, for example, to prevent the [onTouchStart]{@link https://developer.mozilla.org/en-US/docs/Web/API/Element/touchstart_event} event to fire twice or more when a layer (container) is closed and behind there is another one with also the [onTouchStart]{@link https://developer.mozilla.org/en-US/docs/Web/API/Element/touchstart_event} event.\r\n\t * @function\r\n\t * @param {integer} [delayMs=CB_Touch._delayMsDefault] - Delay desired in milliseconds. For same indexes, this parameter will be ignored if there was a previous call to this function whose delay did not expire yet.\r\n\t * @param {integer|string} [index=0] - Desired index to identify the process.\r\n\t * @returns {boolean} First time, this function will return true. Next calls with the same index, returns false during the given time and true after that delay. After the first call, next calls with same index of this function will be ignored (returning always false) until the delay provided expires. If it is called after a previous call with the same index and the delay of the previous call already expired, it will act as it was the first call again.\r\n\t */","meta":{"range":[21494,21972],"filename":"CB_Touch.js","lineno":343,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\input","code":{"id":"astnode100095215","name":"CB_Touch.delay","type":"FunctionExpression","paramnames":["delayMs","index"]},"vars":{"index":"CB_Touch.delay~index","CB_Touch._delayPerforming[undefined]":"CB_Touch._delayPerforming[undefined]","delayMs":"CB_Touch.delay~delayMs","CB_Touch._delayTimeout[undefined]":"CB_Touch._delayTimeout[undefined]","":null}},"description":"<p>First time, this function will return true. Next calls, with same index, returns false during the previously-defined time set in the previous call and true after that delay. After the first call, next calls of this function with same index will be ignored (returning always false) until the delay provided expires. If it is called after a previous call with the same index and the delay of the previous call already expired, it will act as it was the first call again. Useful, for example, to prevent the [onTouchStart]{@link https://developer.mozilla.org/en-US/docs/Web/API/Element/touchstart_event} event to fire twice or more when a layer (container) is closed and behind there is another one with also the [onTouchStart]{@link https://developer.mozilla.org/en-US/docs/Web/API/Element/touchstart_event} event.</p>","kind":"function","params":[{"type":{"names":["integer"]},"optional":true,"defaultvalue":"CB_Touch._delayMsDefault","description":"<p>Delay desired in milliseconds. For same indexes, this parameter will be ignored if there was a previous call to this function whose delay did not expire yet.</p>","name":"delayMs"},{"type":{"names":["integer","string"]},"optional":true,"defaultvalue":0,"description":"<p>Desired index to identify the process.</p>","name":"index"}],"returns":[{"type":{"names":["boolean"]},"description":"<p>First time, this function will return true. Next calls with the same index, returns false during the given time and true after that delay. After the first call, next calls with same index of this function will be ignored (returning always false) until the delay provided expires. If it is called after a previous call with the same index and the delay of the previous call already expired, it will act as it was the first call again.</p>"}],"name":"delay","longname":"CB_Touch.delay","memberof":"CB_Touch","scope":"static"},{"comment":"/**\r\n * @file Controllers (gamepads, joysticks, remotes, etc.) management. Contains the {@link CB_Controllers} static class.\r\n * @author Joan Alba Maldonado <workindalian@gmail.com>\r\n */","meta":{"filename":"CB_Controllers.js","lineno":1,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\input\\controllers","code":{}},"name":"CrossBase/input/controllers/CB_Controllers.js","kind":"file","description":"<p>Controllers (gamepads, joysticks, remotes, etc.) management. Contains the {@link CB_Controllers} static class.</p>","preserveName":true,"author":["Joan Alba Maldonado <workindalian@gmail.com>"],"longname":"CrossBase/input/controllers/CB_Controllers.js","scope":"global"},{"comment":"/**\r\n * Static class to manage different controllers (gamepads, joysticks, remotes, etc.). It will return itself if it is tried to be instantiated. It uses [gamepad-plus]{@link https://github.com/MozillaReality/gamepad-plus}.\r\n * @namespace CB_Controllers\r\n * @todo Find a way to do button mapping (so we could use names as LEFT, RIGHT, etc.) and normalization for most web clients and gamepads (without forgetting proprietary ones as WII U, etc.).\r\n * @todo Consider using always a numeric index instead of the ID of the gamepad (array instead of object), which could be a string, for CB_Controllers._gamepads (for optimization purposes).\r\n * @todo Consider modifying {@link CB_Controllers.isButtonDown} function or add a new one to check whether any button (or axes) is down or not.\r\n */","meta":{"filename":"CB_Controllers.js","lineno":7,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\input\\controllers","code":{}},"description":"<p>Static class to manage different controllers (gamepads, joysticks, remotes, etc.). It will return itself if it is tried to be instantiated. It uses [gamepad-plus]{@link https://github.com/MozillaReality/gamepad-plus}.</p>","kind":"namespace","name":"CB_Controllers","todo":["Find a way to do button mapping (so we could use names as LEFT, RIGHT, etc.) and normalization for most web clients and gamepads (without forgetting proprietary ones as WII U, etc.).","Consider using always a numeric index instead of the ID of the gamepad (array instead of object), which could be a string, for CB_Controllers._gamepads (for optimization purposes).","Consider modifying {@link CB_Controllers.isButtonDown} function or add a new one to check whether any button (or axes) is down or not."],"longname":"CB_Controllers","scope":"global"},{"comment":"/**\r\n\t * Sets a function to execute when a gamepad is connected ([\"onGamepadConnected\"]{@link https://developer.mozilla.org/en-US/docs/Web/API/Window/ongamepadconnected} event is fired) or removes it. More information: [Gamepad API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Gamepad_API}.\r\n\t * @function\r\n\t * @param {function|null} callbackFunction - The function (event listener) that we want to execute when the event is fired. The first parameter received for this function will be the gamepad object affected and the second parameter will be an object containing all current gamepads objects (properties will be the index of each gamepad). If a null value is used, the event will be removed.\r\n\t * @param {boolean} [keepOldFunction=true] - Defines whether we want to keep any possible previous event listener for the same target and event name or not.\r\n\t *\t@todo Make it compatible with proprietary ones (if possible).\r\n\t */","meta":{"range":[7698,7875],"filename":"CB_Controllers.js","lineno":175,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\input\\controllers","code":{"id":"astnode100095775","name":"CB_Controllers.onConnect","type":"FunctionExpression","paramnames":["callbackFunction","keepOldFunction"]}},"description":"<p>Sets a function to execute when a gamepad is connected ([&quot;onGamepadConnected&quot;]{@link https://developer.mozilla.org/en-US/docs/Web/API/Window/ongamepadconnected} event is fired) or removes it. More information: [Gamepad API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Gamepad_API}.</p>","kind":"function","params":[{"type":{"names":["function","null"]},"description":"<p>The function (event listener) that we want to execute when the event is fired. The first parameter received for this function will be the gamepad object affected and the second parameter will be an object containing all current gamepads objects (properties will be the index of each gamepad). If a null value is used, the event will be removed.</p>","name":"callbackFunction"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":true,"description":"<p>Defines whether we want to keep any possible previous event listener for the same target and event name or not.</p>","name":"keepOldFunction"}],"todo":["Make it compatible with proprietary ones (if possible)."],"name":"onConnect","longname":"CB_Controllers.onConnect","memberof":"CB_Controllers","scope":"static"},{"comment":"/**\r\n\t * Sets a function to execute when a gamepad is disconnected ([\"onGamepadDisconnected\"]{@link https://developer.mozilla.org/en-US/docs/Web/API/Window/ongamepaddisconnected} event is fired) or removes it. More information: [Gamepad API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Gamepad_API}.\r\n\t * @function\r\n\t * @param {function|null} callbackFunction - The function (event listener) that we want to execute when the event is fired. The first parameter received for this function will be the gamepad object affected and the second parameter will be an object containing all current gamepads objects (properties will be the index of each gamepad). If a null value is used, the event will be removed.\r\n\t * @param {boolean} [keepOldFunction=true] - Defines whether we want to keep any possible previous event listener for the same target and event name or not.\r\n\t *\t@todo Make it compatible with proprietary ones (if possible).\r\n\t */","meta":{"range":[8837,9020],"filename":"CB_Controllers.js","lineno":188,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\input\\controllers","code":{"id":"astnode100095792","name":"CB_Controllers.onDisconnect","type":"FunctionExpression","paramnames":["callbackFunction","keepOldFunction"]}},"description":"<p>Sets a function to execute when a gamepad is disconnected ([&quot;onGamepadDisconnected&quot;]{@link https://developer.mozilla.org/en-US/docs/Web/API/Window/ongamepaddisconnected} event is fired) or removes it. More information: [Gamepad API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Gamepad_API}.</p>","kind":"function","params":[{"type":{"names":["function","null"]},"description":"<p>The function (event listener) that we want to execute when the event is fired. The first parameter received for this function will be the gamepad object affected and the second parameter will be an object containing all current gamepads objects (properties will be the index of each gamepad). If a null value is used, the event will be removed.</p>","name":"callbackFunction"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":true,"description":"<p>Defines whether we want to keep any possible previous event listener for the same target and event name or not.</p>","name":"keepOldFunction"}],"todo":["Make it compatible with proprietary ones (if possible)."],"name":"onDisconnect","longname":"CB_Controllers.onDisconnect","memberof":"CB_Controllers","scope":"static"},{"comment":"/**\r\n\t * Gets an array with information about the status of the axes of a given gamepad (or from all if none is given).\r\n\t * @function\r\n\t * @param {integer|string} [gamepadId=\"\"] - If an empty string is given, all gamepads available will be checked. Otherwise, it will only check the gamepad with the given ID or index (if any). When more than one gamepad is checked, the first axes values found which are not zero (0) will have priority.\r\n\t * @param {boolean} [gamepadIdNumeric=false|true] - If the \"gamepadId\" parameter is an empty string, this parameter will be ignored. Otherwise, if the \"gamepadId\" parameter is not empty and this parameter is set to true, the gamepadId parameter will be converted to integer using \"parseInt\" internally. By default, this parameter is false unless the given \"gamepadId\" is numeric.\r\n\t * @param {boolean} [caseSensitive=false] - Defines whether the \"gamepadId\" given should match the ID of the gamepad being case sensitive or not. This parameter will only be considered when the \"gamepadIdNumeric\" parameter is set to false.\r\n\t * @param {boolean} [avoidProprietary={@link CB_Configuration.CrossBase.CB_Controllers_avoidProprietary_DEFAULT}] - If set to true, proprietary gamepads will not be checked (performance will be faster).\r\n\t * @returns {array} Returns an array with information about the status of the axes of a given gamepad (or from all if none is given).\r\n\t */","meta":{"range":[14815,15050],"filename":"CB_Controllers.js","lineno":320,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\input\\controllers","code":{"id":"astnode100096219","name":"CB_Controllers.getAxes","type":"FunctionExpression","paramnames":["gamepadId","gamepadIdNumeric","caseSensitive","avoidProprietary"]}},"description":"<p>Gets an array with information about the status of the axes of a given gamepad (or from all if none is given).</p>","kind":"function","params":[{"type":{"names":["integer","string"]},"optional":true,"defaultvalue":"\"\"","description":"<p>If an empty string is given, all gamepads available will be checked. Otherwise, it will only check the gamepad with the given ID or index (if any). When more than one gamepad is checked, the first axes values found which are not zero (0) will have priority.</p>","name":"gamepadId"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":"false|true","description":"<p>If the &quot;gamepadId&quot; parameter is an empty string, this parameter will be ignored. Otherwise, if the &quot;gamepadId&quot; parameter is not empty and this parameter is set to true, the gamepadId parameter will be converted to integer using &quot;parseInt&quot; internally. By default, this parameter is false unless the given &quot;gamepadId&quot; is numeric.</p>","name":"gamepadIdNumeric"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>Defines whether the &quot;gamepadId&quot; given should match the ID of the gamepad being case sensitive or not. This parameter will only be considered when the &quot;gamepadIdNumeric&quot; parameter is set to false.</p>","name":"caseSensitive"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":"{@link CB_Configuration.CrossBase.CB_Controllers_avoidProprietary_DEFAULT}","description":"<p>If set to true, proprietary gamepads will not be checked (performance will be faster).</p>","name":"avoidProprietary"}],"returns":[{"type":{"names":["array"]},"description":"<p>Returns an array with information about the status of the axes of a given gamepad (or from all if none is given).</p>"}],"name":"getAxes","longname":"CB_Controllers.getAxes","memberof":"CB_Controllers","scope":"static"},{"comment":"/**\r\n\t * Gets an array with the axes pressed of a given gamepad (or from all if none is given). If more than one gamepad is pressing the same axis, it will return the value of the first one found.\r\n\t * @function\r\n\t * @param {integer|string} [gamepadId=\"\"] - If an empty string is given, all gamepads available will be checked. Otherwise, it will only check the gamepad with the given ID or index (if any).\r\n\t * @param {float} [minimumValue=0.5] - The minimum value (included) that the checked axis or axes must have to consider them to be pressed.\r\n\t * @param {float} [maximumValue=1|-0.5] - The maximum value (included) that the checked axis or axes must have to consider them to be pressed. The default value will be -0.5 if the given \"minimumValue\" is negative or zero (0) or it will be 1 otherwise.\r\n\t * @param {boolean} [gamepadIdNumeric=false|true] - If the \"gamepadId\" parameter is an empty string, this parameter will be ignored. Otherwise, if the \"gamepadId\" parameter is not empty and this parameter is set to true, the gamepadId parameter will be converted to integer using \"parseInt\" internally. By default, this parameter is false unless the given \"gamepadId\" is numeric.\r\n\t * @param {boolean} [caseSensitive=false] - Defines whether the \"gamepadId\" given should match the ID of the gamepad being case sensitive or not. This parameter will only be considered when the \"gamepadIdNumeric\" parameter is set to false.\r\n\t * @param {boolean} [avoidProprietary={@link CB_Configuration.CrossBase.CB_Controllers_avoidProprietary_DEFAULT}] - If set to true, proprietary gamepads will not be checked (performance will be faster).\r\n\t * @returns {Object} Returns an array with the axes pressed of a given gamepad (or from all if none is given). If more than one gamepad is pressing the same axis, it will return the value of the first one found.\r\n\t */","meta":{"range":[18697,19028],"filename":"CB_Controllers.js","lineno":378,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\input\\controllers","code":{"id":"astnode100096498","name":"CB_Controllers.getAxesDown","type":"FunctionExpression","paramnames":["gamepadId","minimumValue","maximumValue","gamepadIdNumeric","caseSensitive","avoidProprietary"]}},"description":"<p>Gets an array with the axes pressed of a given gamepad (or from all if none is given). If more than one gamepad is pressing the same axis, it will return the value of the first one found.</p>","kind":"function","params":[{"type":{"names":["integer","string"]},"optional":true,"defaultvalue":"\"\"","description":"<p>If an empty string is given, all gamepads available will be checked. Otherwise, it will only check the gamepad with the given ID or index (if any).</p>","name":"gamepadId"},{"type":{"names":["float"]},"optional":true,"defaultvalue":0.5,"description":"<p>The minimum value (included) that the checked axis or axes must have to consider them to be pressed.</p>","name":"minimumValue"},{"type":{"names":["float"]},"optional":true,"defaultvalue":"1|-0.5","description":"<p>The maximum value (included) that the checked axis or axes must have to consider them to be pressed. The default value will be -0.5 if the given &quot;minimumValue&quot; is negative or zero (0) or it will be 1 otherwise.</p>","name":"maximumValue"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":"false|true","description":"<p>If the &quot;gamepadId&quot; parameter is an empty string, this parameter will be ignored. Otherwise, if the &quot;gamepadId&quot; parameter is not empty and this parameter is set to true, the gamepadId parameter will be converted to integer using &quot;parseInt&quot; internally. By default, this parameter is false unless the given &quot;gamepadId&quot; is numeric.</p>","name":"gamepadIdNumeric"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>Defines whether the &quot;gamepadId&quot; given should match the ID of the gamepad being case sensitive or not. This parameter will only be considered when the &quot;gamepadIdNumeric&quot; parameter is set to false.</p>","name":"caseSensitive"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":"{@link CB_Configuration.CrossBase.CB_Controllers_avoidProprietary_DEFAULT}","description":"<p>If set to true, proprietary gamepads will not be checked (performance will be faster).</p>","name":"avoidProprietary"}],"returns":[{"type":{"names":["Object"]},"description":"<p>Returns an array with the axes pressed of a given gamepad (or from all if none is given). If more than one gamepad is pressing the same axis, it will return the value of the first one found.</p>"}],"name":"getAxesDown","longname":"CB_Controllers.getAxesDown","memberof":"CB_Controllers","scope":"static"},{"comment":"/**\r\n\t * Returns whether a given axis or axes are being pressed or not (accepts one index or more than one with an array).\r\n\t * @function\r\n\t * @param {integer|array} axesNumbers - Number with the index of the axis or array of numbers with the indexes of the axes that we want to check.\r\n\t * @param {integer|string} [gamepadId=\"\"] - If an empty string is given, all gamepads available will be checked. Otherwise, it will only check the gamepad with the given ID or index (if any).\r\n\t * @param {float} [minimumValue=0.5] - The minimum value (included) that the checked axis or axes must have to consider them to be pressed.\r\n\t * @param {float} [maximumValue=1|-0.5] - The maximum value (included) that the checked axis or axes must have to consider them to be pressed. The default value will be -0.5 if the given \"minimumValue\" is negative or zero (0) or it will be 1 otherwise.\r\n\t * @param {boolean} [allPressed=false] - If set to true, the function will return true only in the case that all given axes are being pressed. In the case that this parameter is set to true and the \"gamepadId\" parameter is set to an empty string, it will not have in mind whether the axes are pressed by a unique gamepad or by different ones as long as all axes are pressed.\r\n\t * @param {boolean} [gamepadIdNumeric=false|true] - If the \"gamepadId\" parameter is an empty string, this parameter will be ignored. Otherwise, if the \"gamepadId\" parameter is not empty and this parameter is set to true, the gamepadId parameter will be converted to integer using \"parseInt\" internally. By default, this parameter is false unless the given \"gamepadId\" is numeric.\r\n\t * @param {boolean} [caseSensitive=false] - Defines whether the \"gamepadId\" given should match the ID of the gamepad being case sensitive or not. This parameter will only be considered when the \"gamepadIdNumeric\" parameter is set to false.\r\n\t * @param {boolean} [avoidProprietary={@link CB_Configuration.CrossBase.CB_Controllers_avoidProprietary_DEFAULT}] - If set to true, proprietary gamepads will not be checked (performance will be faster).\r\n\t * @returns {boolean} If the \"allPressed\" parameter is false, returns true if the given code or any of the given codes is pressed. If the \"allPressed\" parameter is set to true, it will return true only in the case that all given axes are being pressed. In the case that the \"allPressed\" parameter is set to true and the gamepadId parameter is set to an empty string, it will not have in mind whether the axes are pressed by a unique gamepad or by different ones as long as all axes are pressed.\r\n\t * @todo Make it compatible with proprietary gamepads (if possible).\r\n\t */","meta":{"range":[21706,23265],"filename":"CB_Controllers.js","lineno":398,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\input\\controllers","code":{"id":"astnode100096529","name":"CB_Controllers.isAxisDown","type":"FunctionExpression","paramnames":["axesNumbers","gamepadId","minimumValue","maximumValue","allPressed","gamepadIdNumeric","caseSensitive","avoidProprietary"]},"vars":{"isDown":"CB_Controllers.isAxisDown~isDown","axesNumbers":"CB_Controllers.isAxisDown~axesNumbers","axesAll":"CB_Controllers.isAxisDown~axesAll","axesNumbersLength":"CB_Controllers.isAxisDown~axesNumbersLength","x":"CB_Controllers.isAxisDown~x"}},"description":"<p>Returns whether a given axis or axes are being pressed or not (accepts one index or more than one with an array).</p>","kind":"function","params":[{"type":{"names":["integer","array"]},"description":"<p>Number with the index of the axis or array of numbers with the indexes of the axes that we want to check.</p>","name":"axesNumbers"},{"type":{"names":["integer","string"]},"optional":true,"defaultvalue":"\"\"","description":"<p>If an empty string is given, all gamepads available will be checked. Otherwise, it will only check the gamepad with the given ID or index (if any).</p>","name":"gamepadId"},{"type":{"names":["float"]},"optional":true,"defaultvalue":0.5,"description":"<p>The minimum value (included) that the checked axis or axes must have to consider them to be pressed.</p>","name":"minimumValue"},{"type":{"names":["float"]},"optional":true,"defaultvalue":"1|-0.5","description":"<p>The maximum value (included) that the checked axis or axes must have to consider them to be pressed. The default value will be -0.5 if the given &quot;minimumValue&quot; is negative or zero (0) or it will be 1 otherwise.</p>","name":"maximumValue"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If set to true, the function will return true only in the case that all given axes are being pressed. In the case that this parameter is set to true and the &quot;gamepadId&quot; parameter is set to an empty string, it will not have in mind whether the axes are pressed by a unique gamepad or by different ones as long as all axes are pressed.</p>","name":"allPressed"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":"false|true","description":"<p>If the &quot;gamepadId&quot; parameter is an empty string, this parameter will be ignored. Otherwise, if the &quot;gamepadId&quot; parameter is not empty and this parameter is set to true, the gamepadId parameter will be converted to integer using &quot;parseInt&quot; internally. By default, this parameter is false unless the given &quot;gamepadId&quot; is numeric.</p>","name":"gamepadIdNumeric"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>Defines whether the &quot;gamepadId&quot; given should match the ID of the gamepad being case sensitive or not. This parameter will only be considered when the &quot;gamepadIdNumeric&quot; parameter is set to false.</p>","name":"caseSensitive"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":"{@link CB_Configuration.CrossBase.CB_Controllers_avoidProprietary_DEFAULT}","description":"<p>If set to true, proprietary gamepads will not be checked (performance will be faster).</p>","name":"avoidProprietary"}],"returns":[{"type":{"names":["boolean"]},"description":"<p>If the &quot;allPressed&quot; parameter is false, returns true if the given code or any of the given codes is pressed. If the &quot;allPressed&quot; parameter is set to true, it will return true only in the case that all given axes are being pressed. In the case that the &quot;allPressed&quot; parameter is set to true and the gamepadId parameter is set to an empty string, it will not have in mind whether the axes are pressed by a unique gamepad or by different ones as long as all axes are pressed.</p>"}],"todo":["Make it compatible with proprietary gamepads (if possible)."],"name":"isAxisDown","longname":"CB_Controllers.isAxisDown","memberof":"CB_Controllers","scope":"static"},{"comment":"/**\r\n\t * Gets an object with all the buttons of a given gamepad (or from all if none is given).\r\n\t * @function\r\n\t * @param {integer|string} [gamepadId=\"\"] - If an empty string is given, all gamepads available will be checked. Otherwise, it will only check the gamepad with the given ID or index (if any).\r\n\t * @param {boolean} [gamepadIdNumeric=false|true] - If the \"gamepadId\" parameter is an empty string, this parameter will be ignored. Otherwise, if the \"gamepadId\" parameter is not empty and this parameter is set to true, the gamepadId parameter will be converted to integer using \"parseInt\" internally. By default, this parameter is false unless the given \"gamepadId\" is numeric.\r\n\t * @param {boolean} [caseSensitive=false] - Defines whether the \"gamepadId\" given should match the ID of the gamepad being case sensitive or not. This parameter will only be considered when the \"gamepadIdNumeric\" parameter is set to false.\r\n\t * @param {boolean} [avoidProprietary={@link CB_Configuration.CrossBase.CB_Controllers_avoidProprietary_DEFAULT}] - If set to true, proprietary gamepads will not be checked (performance will be faster).\r\n\t * @returns {Object} Returns an object with all the buttons of a given gamepad (or from all if none is given). The indexes will be the button code and the values will be an object with information about the button (with properties such as \"pressed\", \"value\", etc.).\r\n\t */","meta":{"range":[25993,26234],"filename":"CB_Controllers.js","lineno":475,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\input\\controllers","code":{"id":"astnode100096778","name":"CB_Controllers.getButtons","type":"FunctionExpression","paramnames":["gamepadId","gamepadIdNumeric","caseSensitive","avoidProprietary"]}},"description":"<p>Gets an object with all the buttons of a given gamepad (or from all if none is given).</p>","kind":"function","params":[{"type":{"names":["integer","string"]},"optional":true,"defaultvalue":"\"\"","description":"<p>If an empty string is given, all gamepads available will be checked. Otherwise, it will only check the gamepad with the given ID or index (if any).</p>","name":"gamepadId"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":"false|true","description":"<p>If the &quot;gamepadId&quot; parameter is an empty string, this parameter will be ignored. Otherwise, if the &quot;gamepadId&quot; parameter is not empty and this parameter is set to true, the gamepadId parameter will be converted to integer using &quot;parseInt&quot; internally. By default, this parameter is false unless the given &quot;gamepadId&quot; is numeric.</p>","name":"gamepadIdNumeric"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>Defines whether the &quot;gamepadId&quot; given should match the ID of the gamepad being case sensitive or not. This parameter will only be considered when the &quot;gamepadIdNumeric&quot; parameter is set to false.</p>","name":"caseSensitive"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":"{@link CB_Configuration.CrossBase.CB_Controllers_avoidProprietary_DEFAULT}","description":"<p>If set to true, proprietary gamepads will not be checked (performance will be faster).</p>","name":"avoidProprietary"}],"returns":[{"type":{"names":["Object"]},"description":"<p>Returns an object with all the buttons of a given gamepad (or from all if none is given). The indexes will be the button code and the values will be an object with information about the button (with properties such as &quot;pressed&quot;, &quot;value&quot;, etc.).</p>"}],"name":"getButtons","longname":"CB_Controllers.getButtons","memberof":"CB_Controllers","scope":"static"},{"comment":"/**\r\n\t * Gets an object with the buttons pressed of a given gamepad (or from all if none is given).\r\n\t * @function\r\n\t * @param {integer|string} [gamepadId=\"\"] - If an empty string is given, all gamepads available will be checked. Otherwise, it will only check the gamepad with the given ID or index (if any).\r\n\t * @param {boolean} [gamepadIdNumeric=false|true] - If the \"gamepadId\" parameter is an empty string, this parameter will be ignored. Otherwise, if the \"gamepadId\" parameter is not empty and this parameter is set to true, the gamepadId parameter will be converted to integer using \"parseInt\" internally. By default, this parameter is false unless the given \"gamepadId\" is numeric.\r\n\t * @param {boolean} [caseSensitive=false] - Defines whether the \"gamepadId\" given should match the ID of the gamepad being case sensitive or not. This parameter will only be considered when the \"gamepadIdNumeric\" parameter is set to false.\r\n\t * @param {boolean} [avoidProprietary={@link CB_Configuration.CrossBase.CB_Controllers_avoidProprietary_DEFAULT}] - If set to true, proprietary gamepads will not be checked (performance will be faster).\r\n\t * @returns {Object} Returns an object with the buttons pressed of a given gamepad (or from all if none is given).\r\n\t */","meta":{"range":[28557,28806],"filename":"CB_Controllers.js","lineno":521,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\input\\controllers","code":{"id":"astnode100096908","name":"CB_Controllers.getButtonsDown","type":"FunctionExpression","paramnames":["gamepadId","gamepadIdNumeric","caseSensitive","avoidProprietary"]}},"description":"<p>Gets an object with the buttons pressed of a given gamepad (or from all if none is given).</p>","kind":"function","params":[{"type":{"names":["integer","string"]},"optional":true,"defaultvalue":"\"\"","description":"<p>If an empty string is given, all gamepads available will be checked. Otherwise, it will only check the gamepad with the given ID or index (if any).</p>","name":"gamepadId"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":"false|true","description":"<p>If the &quot;gamepadId&quot; parameter is an empty string, this parameter will be ignored. Otherwise, if the &quot;gamepadId&quot; parameter is not empty and this parameter is set to true, the gamepadId parameter will be converted to integer using &quot;parseInt&quot; internally. By default, this parameter is false unless the given &quot;gamepadId&quot; is numeric.</p>","name":"gamepadIdNumeric"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>Defines whether the &quot;gamepadId&quot; given should match the ID of the gamepad being case sensitive or not. This parameter will only be considered when the &quot;gamepadIdNumeric&quot; parameter is set to false.</p>","name":"caseSensitive"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":"{@link CB_Configuration.CrossBase.CB_Controllers_avoidProprietary_DEFAULT}","description":"<p>If set to true, proprietary gamepads will not be checked (performance will be faster).</p>","name":"avoidProprietary"}],"returns":[{"type":{"names":["Object"]},"description":"<p>Returns an object with the buttons pressed of a given gamepad (or from all if none is given).</p>"}],"name":"getButtonsDown","longname":"CB_Controllers.getButtonsDown","memberof":"CB_Controllers","scope":"static"},{"comment":"/**\r\n\t * Returns whether a given button or buttons are being pressed or not (accepts one key code or more than one with an array).\r\n\t * @function\r\n\t * @param {integer|array} buttonCodes - Number with the button code or array of numbers with the button codes that we want to check.\r\n\t * @param {integer|string} [gamepadId=\"\"] - If an empty string is given, all gamepads available will be checked. Otherwise, it will only check the gamepad with the given ID or index (if any).\r\n\t * @param {boolean} [allPressed=false] - If set to true, the function will return true only in the case that all given buttons are being pressed. In the case that this parameter is set to true and the \"gamepadId\" parameter is set to an empty string, it will not have in mind whether the buttons are pressed by a unique gamepad or by different ones as long as all buttons are pressed.\r\n\t * @param {boolean} [gamepadIdNumeric=false|true] - If the \"gamepadId\" parameter is an empty string, this parameter will be ignored. Otherwise, if the \"gamepadId\" parameter is not empty and this parameter is set to true, the gamepadId parameter will be converted to integer using \"parseInt\" internally. By default, this parameter is false unless the given \"gamepadId\" is numeric.\r\n\t * @param {boolean} [caseSensitive=false] - Defines whether the \"gamepadId\" given should match the ID of the gamepad being case sensitive or not. This parameter will only be considered when the \"gamepadIdNumeric\" parameter is set to false.\r\n\t * @param {boolean} [avoidProprietary={@link CB_Configuration.CrossBase.CB_Controllers_avoidProprietary_DEFAULT}] - If set to true, proprietary gamepads will not be checked (performance will be faster).\r\n\t * @returns {boolean} If the \"allPressed\" parameter is false, returns true if the given code or any of the given codes is pressed. If the \"allPressed\" parameter is set to true, it will return true only in the case that all given buttons are being pressed. In the case that the \"allPressed\" parameter is set to true and the gamepadId parameter is set to an empty string, it will not have in mind whether the buttons are pressed by a unique gamepad or by different ones as long as all buttons are pressed.\r\n\t * @todo Make it compatible with proprietary gamepads (if possible).\r\n\t */","meta":{"range":[31098,32651],"filename":"CB_Controllers.js","lineno":539,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\input\\controllers","code":{"id":"astnode100096932","name":"CB_Controllers.isButtonDown","type":"FunctionExpression","paramnames":["buttonCodes","gamepadId","allPressed","gamepadIdNumeric","caseSensitive","avoidProprietary"]},"vars":{"isDown":"CB_Controllers.isButtonDown~isDown","buttonCodes":"CB_Controllers.isButtonDown~buttonCodes","buttonsDown":"CB_Controllers.isButtonDown~buttonsDown","buttonCodesLength":"CB_Controllers.isButtonDown~buttonCodesLength","x":"CB_Controllers.isButtonDown~x"}},"description":"<p>Returns whether a given button or buttons are being pressed or not (accepts one key code or more than one with an array).</p>","kind":"function","params":[{"type":{"names":["integer","array"]},"description":"<p>Number with the button code or array of numbers with the button codes that we want to check.</p>","name":"buttonCodes"},{"type":{"names":["integer","string"]},"optional":true,"defaultvalue":"\"\"","description":"<p>If an empty string is given, all gamepads available will be checked. Otherwise, it will only check the gamepad with the given ID or index (if any).</p>","name":"gamepadId"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If set to true, the function will return true only in the case that all given buttons are being pressed. In the case that this parameter is set to true and the &quot;gamepadId&quot; parameter is set to an empty string, it will not have in mind whether the buttons are pressed by a unique gamepad or by different ones as long as all buttons are pressed.</p>","name":"allPressed"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":"false|true","description":"<p>If the &quot;gamepadId&quot; parameter is an empty string, this parameter will be ignored. Otherwise, if the &quot;gamepadId&quot; parameter is not empty and this parameter is set to true, the gamepadId parameter will be converted to integer using &quot;parseInt&quot; internally. By default, this parameter is false unless the given &quot;gamepadId&quot; is numeric.</p>","name":"gamepadIdNumeric"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>Defines whether the &quot;gamepadId&quot; given should match the ID of the gamepad being case sensitive or not. This parameter will only be considered when the &quot;gamepadIdNumeric&quot; parameter is set to false.</p>","name":"caseSensitive"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":"{@link CB_Configuration.CrossBase.CB_Controllers_avoidProprietary_DEFAULT}","description":"<p>If set to true, proprietary gamepads will not be checked (performance will be faster).</p>","name":"avoidProprietary"}],"returns":[{"type":{"names":["boolean"]},"description":"<p>If the &quot;allPressed&quot; parameter is false, returns true if the given code or any of the given codes is pressed. If the &quot;allPressed&quot; parameter is set to true, it will return true only in the case that all given buttons are being pressed. In the case that the &quot;allPressed&quot; parameter is set to true and the gamepadId parameter is set to an empty string, it will not have in mind whether the buttons are pressed by a unique gamepad or by different ones as long as all buttons are pressed.</p>"}],"todo":["Make it compatible with proprietary gamepads (if possible)."],"name":"isButtonDown","longname":"CB_Controllers.isButtonDown","memberof":"CB_Controllers","scope":"static"},{"comment":"/**\r\n\t * Returns an object with the current gamepad objects, if any (using the [GamePad API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Gamepad_API} for non-proprietary gamepads).\r\n\t * @function\r\n\t * @param {boolean} [avoidProprietary={@link CB_Configuration.CrossBase.CB_Controllers_avoidProprietary_DEFAULT}] - If set to true, proprietary gamepads which do not use the [GamePad API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Gamepad_API} (as WII, WI U gamepads, etc.) will not be included in the returning object and it will only include the ones detected by the [GamePad API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Gamepad_API}. Otherwise, if set to true, the returning object will contain one property called \"standard\" which will contain an object with the \"gamepads\" property with the gamepad objects that use the [GamePad API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Gamepad_API} and possibly different properties (one per each proprietary system) and inside of them an object with the \"gamepads\" property and maybe also other properties for other kind of devices which will include the status objects of those devices for each proprietary system. For gamepads that support the [GamePad API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Gamepad_API}, the indexes will be the identifier for each gamepad and the value its gamepad object. For proprietary gamepads, it will contain the returning value of the \"getGamePads\" function of each proprietary API.\r\n\t * @returns {Object} Returns an object with the current gamepad objects, if any (using the [GamePad API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Gamepad_API} for non-proprietary gamepads).\r\n\t * @todo The proprietary ones should return better-normalized values to simulate the [GamePad API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Gamepad_API}.\r\n\t */","meta":{"range":[34573,35242],"filename":"CB_Controllers.js","lineno":581,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\input\\controllers","code":{"id":"astnode100097043","name":"CB_Controllers.getGamePads","type":"FunctionExpression","paramnames":["avoidProprietary"]},"vars":{"avoidProprietary":"CB_Controllers.getGamePads~avoidProprietary"}},"description":"<p>Returns an object with the current gamepad objects, if any (using the [GamePad API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Gamepad_API} for non-proprietary gamepads).</p>","kind":"function","params":[{"type":{"names":["boolean"]},"optional":true,"defaultvalue":"{@link CB_Configuration.CrossBase.CB_Controllers_avoidProprietary_DEFAULT}","description":"<p>If set to true, proprietary gamepads which do not use the [GamePad API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Gamepad_API} (as WII, WI U gamepads, etc.) will not be included in the returning object and it will only include the ones detected by the [GamePad API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Gamepad_API}. Otherwise, if set to true, the returning object will contain one property called &quot;standard&quot; which will contain an object with the &quot;gamepads&quot; property with the gamepad objects that use the [GamePad API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Gamepad_API} and possibly different properties (one per each proprietary system) and inside of them an object with the &quot;gamepads&quot; property and maybe also other properties for other kind of devices which will include the status objects of those devices for each proprietary system. For gamepads that support the [GamePad API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Gamepad_API}, the indexes will be the identifier for each gamepad and the value its gamepad object. For proprietary gamepads, it will contain the returning value of the &quot;getGamePads&quot; function of each proprietary API.</p>","name":"avoidProprietary"}],"returns":[{"type":{"names":["Object"]},"description":"<p>Returns an object with the current gamepad objects, if any (using the [GamePad API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Gamepad_API} for non-proprietary gamepads).</p>"}],"todo":["The proprietary ones should return better-normalized values to simulate the [GamePad API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Gamepad_API}."],"name":"getGamePads","longname":"CB_Controllers.getGamePads","memberof":"CB_Controllers","scope":"static"},{"comment":"/**\r\n * @file Nintendo Wii remotes (Wiimotes) management. Contains the {@link CB_Controllers_Proprietary.WII} static class.\r\n * @author Joan Alba Maldonado <workindalian@gmail.com>\r\n */","meta":{"filename":"CB_Controllers_Proprietary_WII.js","lineno":1,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\input\\controllers","code":{}},"name":"CrossBase/input/controllers/CB_Controllers_Proprietary_WII.js","kind":"file","description":"<p>Nintendo Wii remotes (Wiimotes) management. Contains the {@link CB_Controllers_Proprietary.WII} static class.</p>","preserveName":true,"author":["Joan Alba Maldonado <workindalian@gmail.com>"],"longname":"CrossBase/input/controllers/CB_Controllers_Proprietary_WII.js","scope":"global"},{"comment":"/**\r\n * Static class to manage proprietary controller APIs.\r\n * @namespace CB_Controllers_Proprietary\r\n*/","meta":{"filename":"CB_Controllers_Proprietary_WII.js","lineno":6,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\input\\controllers","code":{}},"description":"<p>Static class to manage proprietary controller APIs.</p>","kind":"namespace","name":"CB_Controllers_Proprietary","longname":"CB_Controllers_Proprietary","scope":"global"},{"comment":"/**\r\n * Static class to manage the Nintendo Wii remotes (Wiimotes). It will return itself if it is tried to be instantiated. It uses [wii-js]{@link https://github.com/ryanmcgrath/wii-js}. NOTE: This class is still under development.\r\n * @namespace CB_Controllers_Proprietary.WII\r\n * @todo Find a way to know how to check when a button is released.\r\n * @todo Update values of CB_Controllers_Proprietary.WII._wiimotes[x].UP, etc.\r\n * @todo Do not forget x and y properties (?).\r\n */","meta":{"filename":"CB_Controllers_Proprietary_WII.js","lineno":11,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\input\\controllers","code":{}},"description":"<p>Static class to manage the Nintendo Wii remotes (Wiimotes). It will return itself if it is tried to be instantiated. It uses [wii-js]{@link https://github.com/ryanmcgrath/wii-js}. NOTE: This class is still under development.</p>","kind":"namespace","name":"WII","todo":["Find a way to know how to check when a button is released.","Update values of CB_Controllers_Proprietary.WII._wiimotes[x].UP, etc.","Do not forget x and y properties (?)."],"memberof":"CB_Controllers_Proprietary","longname":"CB_Controllers_Proprietary.WII","scope":"static"},{"comment":"/**\r\n\t * Returns an object with all gamepads simulating the [GamePad API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Gamepad_API}.\r\n\t * @function\r\n\t * @returns {Object} Returns an object with the \"remotes\" property which contains another object whose properties are the index of each device and the value an object with the status of that device. The number of remotes is 4 (index from \"0\" to \"3\"). Simulating the [GamePad API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Gamepad_API}. Those status objects which are not using the real API will have a property called \"usingPrototype\" set to true.\r\n\t */","meta":{"range":[7676,7857],"filename":"CB_Controllers_Proprietary_WII.js","lineno":142,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\input\\controllers","code":{"id":"astnode100097767","name":"CB_Controllers_Proprietary.WII.getGamePads","type":"FunctionExpression","paramnames":[]}},"description":"<p>Returns an object with all gamepads simulating the [GamePad API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Gamepad_API}.</p>","kind":"function","returns":[{"type":{"names":["Object"]},"description":"<p>Returns an object with the &quot;remotes&quot; property which contains another object whose properties are the index of each device and the value an object with the status of that device. The number of remotes is 4 (index from &quot;0&quot; to &quot;3&quot;). Simulating the [GamePad API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Gamepad_API}. Those status objects which are not using the real API will have a property called &quot;usingPrototype&quot; set to true.</p>"}],"name":"getGamePads","longname":"CB_Controllers_Proprietary.WII.getGamePads","memberof":"CB_Controllers_Proprietary.WII","scope":"static"},{"comment":"/**\r\n * @file Nintendo Wii U gamepad and remotes (Wiimotes) management. Contains the {@link CB_Controllers_Proprietary.WII_U} static class.\r\n * @author Joan Alba Maldonado <workindalian@gmail.com>\r\n */","meta":{"filename":"CB_Controllers_Proprietary_WII_U.js","lineno":1,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\input\\controllers","code":{}},"name":"CrossBase/input/controllers/CB_Controllers_Proprietary_WII_U.js","kind":"file","description":"<p>Nintendo Wii U gamepad and remotes (Wiimotes) management. Contains the {@link CB_Controllers_Proprietary.WII_U} static class.</p>","preserveName":true,"author":["Joan Alba Maldonado <workindalian@gmail.com>"],"longname":"CrossBase/input/controllers/CB_Controllers_Proprietary_WII_U.js","scope":"global"},{"comment":"/**\r\n * Static class to manage the Nintendo Wii U gamepad and remotes. It will return itself if it is tried to be instantiated. NOTE: This class is still under development.\r\n * @namespace CB_Controllers_Proprietary.WII_U\r\n * @todo Function or option that returns an array with the pressed buttons (LEFT: true, L: true, R: false, etc.). Use the bitmasks of CB_Controllers_Proprietary.WII_U.GAMEPAD_BUTTONS and CB_Controllers_Proprietary.WII_U.REMOTE_BUTTONS.\r\n */","meta":{"filename":"CB_Controllers_Proprietary_WII_U.js","lineno":6,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\input\\controllers","code":{}},"description":"<p>Static class to manage the Nintendo Wii U gamepad and remotes. It will return itself if it is tried to be instantiated. NOTE: This class is still under development.</p>","kind":"namespace","name":"WII_U","todo":["Function or option that returns an array with the pressed buttons (LEFT: true, L: true, R: false, etc.). Use the bitmasks of CB_Controllers_Proprietary.WII_U.GAMEPAD_BUTTONS and CB_Controllers_Proprietary.WII_U.REMOTE_BUTTONS."],"memberof":"CB_Controllers_Proprietary","longname":"CB_Controllers_Proprietary.WII_U","scope":"static"},{"comment":"/**\r\n\t * Object which keeps the values for the Nintendo Wii U gamepad's buttons (bitmasks).\r\n\t * @memberof CB_Controllers_Proprietary.WII_U\r\n\t * @name GAMEPAD_BUTTONS\r\n\t * @constant\r\n\t * @type {Object}\r\n\t * @default\r\n\t * @property {number} LEFT_STICK_LEFT - LEFT on the LEFT STICK. Default action: Scroll/Pan.\r\n\t * @property {number} LEFT_STICK_RIGHT - RIGHT on the LEFT STICK. Default action: Scroll/Pan.\r\n\t * @property {number} LEFT_STICK_UP - UP on the LEFT STICK. Default action: Scroll/Pan.\r\n\t * @property {number} LEFT_STICK_DOWN - DOWN on the LEFT STICK. Default action: Scroll/Pan.\r\n\t * @property {number} LEFT_STICK_CLICK - CLICK on the LEFT STICK. Default action: Hide/show bottom toolbar.\r\n\t * @property {number} RIGHT_STICK_LEFT - LEFT on the RIGHT STICK. Default action: Zoom.\r\n\t * @property {number} RIGHT_STICK_RIGHT - RIGHT on the RIGHT STICK. Default action: Zoom.\r\n\t * @property {number} RIGHT_STICK_UP - UP on the RIGHT STICK. Default action: Zoom.\r\n\t * @property {number} RIGHT_STICK_DOWN - DOWN on the RIGHT STICK. Default action: Zoom.\r\n\t * @property {number} RIGHT_STICK_CLICK - CLICK on the RIGHT STICK. Default actionn: Toggle zoom in/out on center of screen.\r\n\t * @property {number} TV - \"TV\" button.\r\n\t * @property {number} A - \"A\" button. Send the \"Enter\" key (keyCode 13).\r\n\t * @property {number} B - \"B\" button. Default action: Back to previous page (hold B: Close current tab).\r\n\t * @property {number} X - \"X\" button. Default action: Toggle curtain mode.\r\n\t * @property {number} Y - \"Y\" button. Default action: View bookmarks.\r\n\t * @property {number} LEFT - LEFT button on the control pad. Default action: Select links / form fields.\r\n\t * @property {number} RIGHT - RIGHT button on the control pad. Default action: Select links / form fields.\r\n\t * @property {number} UP - UP button on the control pad. Default action: Select links / form fields.\r\n\t * @property {number} DOWN - DOWN button on the control pad. Default action: Select links / form fields.\r\n\t * @property {number} ZL - \"ZL\" button. Default action: Switch to previous tab (hold ZL+ZR: Tilt scrolling).\r\n\t * @property {number} ZR - \"ZR\" button. Default action: Switch to next tab (hold ZL+ZR: Tilt scrolling).\r\n\t * @property {number} L - \"L\" button. Default action: Back to previous page.\r\n\t * @property {number} R - \"R\" button. Default action: Forward to next page.\r\n\t * @property {number} START - \"START\" button.\r\n\t * @property {number} PLUS - Alias for {@link CB_Controllers_Proprietary.WII_U.GAMEPAD_BUTTONS.START}.\r\n\t * @property {number} SELECT - \"SELECT\" button.\r\n\t * @property {number} MINUS - Alias for {@link CB_Controllers_Proprietary.WII_U.GAMEPAD_BUTTONS.SELECT}.\r\n\t * @property {number} HOME - HOME button. Default action: Quit browser.\r\n\t */","meta":{"filename":"CB_Controllers_Proprietary_WII_U.js","lineno":45,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\input\\controllers","code":{}},"description":"<p>Object which keeps the values for the Nintendo Wii U gamepad's buttons (bitmasks).</p>","memberof":"CB_Controllers_Proprietary.WII_U","name":"GAMEPAD_BUTTONS","kind":"constant","type":{"names":["Object"]},"properties":[{"type":{"names":["number"]},"description":"<p>LEFT on the LEFT STICK. Default action: Scroll/Pan.</p>","name":"LEFT_STICK_LEFT"},{"type":{"names":["number"]},"description":"<p>RIGHT on the LEFT STICK. Default action: Scroll/Pan.</p>","name":"LEFT_STICK_RIGHT"},{"type":{"names":["number"]},"description":"<p>UP on the LEFT STICK. Default action: Scroll/Pan.</p>","name":"LEFT_STICK_UP"},{"type":{"names":["number"]},"description":"<p>DOWN on the LEFT STICK. Default action: Scroll/Pan.</p>","name":"LEFT_STICK_DOWN"},{"type":{"names":["number"]},"description":"<p>CLICK on the LEFT STICK. Default action: Hide/show bottom toolbar.</p>","name":"LEFT_STICK_CLICK"},{"type":{"names":["number"]},"description":"<p>LEFT on the RIGHT STICK. Default action: Zoom.</p>","name":"RIGHT_STICK_LEFT"},{"type":{"names":["number"]},"description":"<p>RIGHT on the RIGHT STICK. Default action: Zoom.</p>","name":"RIGHT_STICK_RIGHT"},{"type":{"names":["number"]},"description":"<p>UP on the RIGHT STICK. Default action: Zoom.</p>","name":"RIGHT_STICK_UP"},{"type":{"names":["number"]},"description":"<p>DOWN on the RIGHT STICK. Default action: Zoom.</p>","name":"RIGHT_STICK_DOWN"},{"type":{"names":["number"]},"description":"<p>CLICK on the RIGHT STICK. Default actionn: Toggle zoom in/out on center of screen.</p>","name":"RIGHT_STICK_CLICK"},{"type":{"names":["number"]},"description":"<p>&quot;TV&quot; button.</p>","name":"TV"},{"type":{"names":["number"]},"description":"<p>&quot;A&quot; button. Send the &quot;Enter&quot; key (keyCode 13).</p>","name":"A"},{"type":{"names":["number"]},"description":"<p>&quot;B&quot; button. Default action: Back to previous page (hold B: Close current tab).</p>","name":"B"},{"type":{"names":["number"]},"description":"<p>&quot;X&quot; button. Default action: Toggle curtain mode.</p>","name":"X"},{"type":{"names":["number"]},"description":"<p>&quot;Y&quot; button. Default action: View bookmarks.</p>","name":"Y"},{"type":{"names":["number"]},"description":"<p>LEFT button on the control pad. Default action: Select links / form fields.</p>","name":"LEFT"},{"type":{"names":["number"]},"description":"<p>RIGHT button on the control pad. Default action: Select links / form fields.</p>","name":"RIGHT"},{"type":{"names":["number"]},"description":"<p>UP button on the control pad. Default action: Select links / form fields.</p>","name":"UP"},{"type":{"names":["number"]},"description":"<p>DOWN button on the control pad. Default action: Select links / form fields.</p>","name":"DOWN"},{"type":{"names":["number"]},"description":"<p>&quot;ZL&quot; button. Default action: Switch to previous tab (hold ZL+ZR: Tilt scrolling).</p>","name":"ZL"},{"type":{"names":["number"]},"description":"<p>&quot;ZR&quot; button. Default action: Switch to next tab (hold ZL+ZR: Tilt scrolling).</p>","name":"ZR"},{"type":{"names":["number"]},"description":"<p>&quot;L&quot; button. Default action: Back to previous page.</p>","name":"L"},{"type":{"names":["number"]},"description":"<p>&quot;R&quot; button. Default action: Forward to next page.</p>","name":"R"},{"type":{"names":["number"]},"description":"<p>&quot;START&quot; button.</p>","name":"START"},{"type":{"names":["number"]},"description":"<p>Alias for {@link CB_Controllers_Proprietary.WII_U.GAMEPAD_BUTTONS.START}.</p>","name":"PLUS"},{"type":{"names":["number"]},"description":"<p>&quot;SELECT&quot; button.</p>","name":"SELECT"},{"type":{"names":["number"]},"description":"<p>Alias for {@link CB_Controllers_Proprietary.WII_U.GAMEPAD_BUTTONS.SELECT}.</p>","name":"MINUS"},{"type":{"names":["number"]},"description":"<p>HOME button. Default action: Quit browser.</p>","name":"HOME"}],"scope":"static","longname":"CB_Controllers_Proprietary.WII_U.GAMEPAD_BUTTONS"},{"comment":"/**\r\n\t * Object which keeps the values for the Nintendo Wii U remote's buttons (bitmasks).\r\n\t * @memberof CB_Controllers_Proprietary.WII_U\r\n\t * @name REMOTE_BUTTONS\r\n\t * @constant\r\n\t * @type {Object}\r\n\t * @default\r\n\t * @property {number} UP - UP button.\r\n\t * @property {number} DOWN - DOWN button.\r\n\t * @property {number} LEFT - LEFT button.\r\n\t * @property {number} RIGHT - RIGHT button.\r\n\t * @property {number} A - \"A\" button.\r\n\t * @property {number} B - \"B\" button.\r\n\t * @property {number} ONE - \"1\" button.\r\n\t * @property {number} _1 - Alias for {@link CB_Controllers_Proprietary.WII_U.REMOTE_BUTTONS.ONE}.\r\n\t * @property {number} 1 - Alias for {@link CB_Controllers_Proprietary.WII_U.REMOTE_BUTTONS.ONE}.\r\n\t * @property {number} TWO - \"2\" button.\r\n\t * @property {number} _2 - Alias for {@link CB_Controllers_Proprietary.WII_U.REMOTE_BUTTONS.TWO}.\r\n\t * @property {number} 2 - Alias for {@link CB_Controllers_Proprietary.WII_U.REMOTE_BUTTONS.TWO}.\r\n\t * @property {number} PLUS - PLUS (\"+\") button.\r\n\t * @property {number} MINUS - MINUS (\"-\") button.\r\n\t * @property {number} HOME - HOME button.\r\n\t */","meta":{"filename":"CB_Controllers_Proprietary_WII_U.js","lineno":110,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\input\\controllers","code":{}},"description":"<p>Object which keeps the values for the Nintendo Wii U remote's buttons (bitmasks).</p>","memberof":"CB_Controllers_Proprietary.WII_U","name":"REMOTE_BUTTONS","kind":"constant","type":{"names":["Object"]},"properties":[{"type":{"names":["number"]},"description":"<p>UP button.</p>","name":"UP"},{"type":{"names":["number"]},"description":"<p>DOWN button.</p>","name":"DOWN"},{"type":{"names":["number"]},"description":"<p>LEFT button.</p>","name":"LEFT"},{"type":{"names":["number"]},"description":"<p>RIGHT button.</p>","name":"RIGHT"},{"type":{"names":["number"]},"description":"<p>&quot;A&quot; button.</p>","name":"A"},{"type":{"names":["number"]},"description":"<p>&quot;B&quot; button.</p>","name":"B"},{"type":{"names":["number"]},"description":"<p>&quot;1&quot; button.</p>","name":"ONE"},{"type":{"names":["number"]},"description":"<p>Alias for {@link CB_Controllers_Proprietary.WII_U.REMOTE_BUTTONS.ONE}.</p>","name":"_1"},{"type":{"names":["number"]},"description":"<p>Alias for {@link CB_Controllers_Proprietary.WII_U.REMOTE_BUTTONS.ONE}.</p>","name":"1"},{"type":{"names":["number"]},"description":"<p>&quot;2&quot; button.</p>","name":"TWO"},{"type":{"names":["number"]},"description":"<p>Alias for {@link CB_Controllers_Proprietary.WII_U.REMOTE_BUTTONS.TWO}.</p>","name":"_2"},{"type":{"names":["number"]},"description":"<p>Alias for {@link CB_Controllers_Proprietary.WII_U.REMOTE_BUTTONS.TWO}.</p>","name":"2"},{"type":{"names":["number"]},"description":"<p>PLUS (&quot;+&quot;) button.</p>","name":"PLUS"},{"type":{"names":["number"]},"description":"<p>MINUS (&quot;-&quot;) button.</p>","name":"MINUS"},{"type":{"names":["number"]},"description":"<p>HOME button.</p>","name":"HOME"}],"scope":"static","longname":"CB_Controllers_Proprietary.WII_U.REMOTE_BUTTONS"},{"comment":"/**\r\n\t * Normalizes the given gamepad status object, adding missing properties.\r\n\t * @function\r\n\t * @param {object} gamepadStatusObject - The gamepad status object that we want to normalize.\r\n\t * @returns {Object} Returns the given gamepad status object but normalized, adding missing properties.\r\n\t */","meta":{"range":[17561,21190],"filename":"CB_Controllers_Proprietary_WII_U.js","lineno":293,"columnno":2,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\input\\controllers","code":{"id":"astnode100098576","name":"CB_Controllers_Proprietary.WII_U.normalizeGamepad","type":"FunctionExpression","paramnames":["statusObject"]},"vars":{"statusObject":"CB_Controllers_Proprietary.WII_U.normalizeGamepad~statusObject","statusObject.index":"CB_Controllers_Proprietary.WII_U.normalizeGamepad~statusObject.index","statusObject.id":"CB_Controllers_Proprietary.WII_U.normalizeGamepad~statusObject.id","statusObject.connected":"CB_Controllers_Proprietary.WII_U.normalizeGamepad~statusObject.connected","statusObject.timestamp":"CB_Controllers_Proprietary.WII_U.normalizeGamepad~statusObject.timestamp","statusObject.buttons":"CB_Controllers_Proprietary.WII_U.normalizeGamepad~statusObject.buttons","buttonName":"CB_Controllers_Proprietary.WII_U.normalizeGamepad~buttonName","statusObject.buttons[undefined]":"CB_Controllers_Proprietary.WII_U.normalizeGamepad~statusObject.buttons[undefined]","statusObject.buttons[undefined].pressed":"CB_Controllers_Proprietary.WII_U.normalizeGamepad~statusObject.buttons[undefined].pressed","statusObject.buttons[undefined].touched":"CB_Controllers_Proprietary.WII_U.normalizeGamepad~statusObject.buttons[undefined].touched","statusObject.buttons[undefined].value":"CB_Controllers_Proprietary.WII_U.normalizeGamepad~statusObject.buttons[undefined].value","statusObject.axes":"CB_Controllers_Proprietary.WII_U.normalizeGamepad~statusObject.axes","statusObject.axes[0]":"CB_Controllers_Proprietary.WII_U.normalizeGamepad~statusObject.axes[0]","statusObject.axes[1]":"CB_Controllers_Proprietary.WII_U.normalizeGamepad~statusObject.axes[1]","statusObject.axes[2]":"CB_Controllers_Proprietary.WII_U.normalizeGamepad~statusObject.axes[2]","statusObject.buttons.LEFT_STICK_LEFT.value":"CB_Controllers_Proprietary.WII_U.normalizeGamepad~statusObject.buttons.LEFT_STICK_LEFT.value","statusObject.buttons.LEFT_STICK_RIGHT.value":"CB_Controllers_Proprietary.WII_U.normalizeGamepad~statusObject.buttons.LEFT_STICK_RIGHT.value","statusObject.axes[3]":"CB_Controllers_Proprietary.WII_U.normalizeGamepad~statusObject.axes[3]","statusObject.buttons.LEFT_STICK_UP.value":"CB_Controllers_Proprietary.WII_U.normalizeGamepad~statusObject.buttons.LEFT_STICK_UP.value","statusObject.buttons.LEFT_STICK_DOWN.value":"CB_Controllers_Proprietary.WII_U.normalizeGamepad~statusObject.buttons.LEFT_STICK_DOWN.value","statusObject.axes[4]":"CB_Controllers_Proprietary.WII_U.normalizeGamepad~statusObject.axes[4]","statusObject.buttons.RIGHT_STICK_LEFT.value":"CB_Controllers_Proprietary.WII_U.normalizeGamepad~statusObject.buttons.RIGHT_STICK_LEFT.value","statusObject.buttons.RIGHT_STICK_RIGHT.value":"CB_Controllers_Proprietary.WII_U.normalizeGamepad~statusObject.buttons.RIGHT_STICK_RIGHT.value","statusObject.axes[5]":"CB_Controllers_Proprietary.WII_U.normalizeGamepad~statusObject.axes[5]","statusObject.buttons.RIGHT_STICK_UP.value":"CB_Controllers_Proprietary.WII_U.normalizeGamepad~statusObject.buttons.RIGHT_STICK_UP.value","statusObject.buttons.RIGHT_STICK_DOWN.value":"CB_Controllers_Proprietary.WII_U.normalizeGamepad~statusObject.buttons.RIGHT_STICK_DOWN.value","statusObject.mapping":"CB_Controllers_Proprietary.WII_U.normalizeGamepad~statusObject.mapping","statusObject.vibrationActuator":"CB_Controllers_Proprietary.WII_U.normalizeGamepad~statusObject.vibrationActuator"}},"description":"<p>Normalizes the given gamepad status object, adding missing properties.</p>","kind":"function","params":[{"type":{"names":["object"]},"description":"<p>The gamepad status object that we want to normalize.</p>","name":"gamepadStatusObject"}],"returns":[{"type":{"names":["Object"]},"description":"<p>Returns the given gamepad status object but normalized, adding missing properties.</p>"}],"name":"normalizeGamepad","longname":"CB_Controllers_Proprietary.WII_U.normalizeGamepad","memberof":"CB_Controllers_Proprietary.WII_U","scope":"static"},{"comment":"/**\r\n\t * Normalizes the given remote status object, adding missing properties.\r\n\t * @function\r\n\t * @param {object} gamepadStatusObject - The remote status object that we want to normalize.\r\n\t * @param {integer} [n=0] - Number of the remote whose status we want to get, from 0 to 7 (both numbers included, 8 in total). It will be used as its identifier.\r\n\t * @returns {Object} Returns the given remote status object but normalized, adding missing properties.\r\n\t */","meta":{"range":[21670,23689],"filename":"CB_Controllers_Proprietary_WII_U.js","lineno":370,"columnno":2,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\input\\controllers","code":{"id":"astnode100099193","name":"CB_Controllers_Proprietary.WII_U.normalizeRemote","type":"FunctionExpression","paramnames":["statusObject","n"]},"vars":{"statusObject":"CB_Controllers_Proprietary.WII_U.normalizeRemote~statusObject","statusObject.index":"CB_Controllers_Proprietary.WII_U.normalizeRemote~statusObject.index","statusObject.id":"CB_Controllers_Proprietary.WII_U.normalizeRemote~statusObject.id","statusObject.connected":"CB_Controllers_Proprietary.WII_U.normalizeRemote~statusObject.connected","statusObject.timestamp":"CB_Controllers_Proprietary.WII_U.normalizeRemote~statusObject.timestamp","statusObject.buttons":"CB_Controllers_Proprietary.WII_U.normalizeRemote~statusObject.buttons","buttonName":"CB_Controllers_Proprietary.WII_U.normalizeRemote~buttonName","statusObject.buttons[undefined]":"CB_Controllers_Proprietary.WII_U.normalizeRemote~statusObject.buttons[undefined]","statusObject.buttons[undefined].pressed":"CB_Controllers_Proprietary.WII_U.normalizeRemote~statusObject.buttons[undefined].pressed","statusObject.buttons[undefined].touched":"CB_Controllers_Proprietary.WII_U.normalizeRemote~statusObject.buttons[undefined].touched","statusObject.buttons[undefined].value":"CB_Controllers_Proprietary.WII_U.normalizeRemote~statusObject.buttons[undefined].value","statusObject.axes":"CB_Controllers_Proprietary.WII_U.normalizeRemote~statusObject.axes","statusObject.axes[0]":"CB_Controllers_Proprietary.WII_U.normalizeRemote~statusObject.axes[0]","statusObject.axes[1]":"CB_Controllers_Proprietary.WII_U.normalizeRemote~statusObject.axes[1]","statusObject.mapping":"CB_Controllers_Proprietary.WII_U.normalizeRemote~statusObject.mapping","statusObject.vibrationActuator":"CB_Controllers_Proprietary.WII_U.normalizeRemote~statusObject.vibrationActuator"}},"description":"<p>Normalizes the given remote status object, adding missing properties.</p>","kind":"function","params":[{"type":{"names":["object"]},"description":"<p>The remote status object that we want to normalize.</p>","name":"gamepadStatusObject"},{"type":{"names":["integer"]},"optional":true,"defaultvalue":0,"description":"<p>Number of the remote whose status we want to get, from 0 to 7 (both numbers included, 8 in total). It will be used as its identifier.</p>","name":"n"}],"returns":[{"type":{"names":["Object"]},"description":"<p>Returns the given remote status object but normalized, adding missing properties.</p>"}],"name":"normalizeRemote","longname":"CB_Controllers_Proprietary.WII_U.normalizeRemote","memberof":"CB_Controllers_Proprietary.WII_U","scope":"static"},{"comment":"/**\r\n\t * Returns an object with the current status of each button of the gamepad. Already calls {@link CB_Controllers_Proprietary.WII_U.normalizeGamepad} automatically.\r\n\t * @function\r\n\t * @returns {Object} Returns an object with the current status of each button of the gamepad.\r\n\t */","meta":{"range":[23987,24233],"filename":"CB_Controllers_Proprietary_WII_U.js","lineno":417,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\input\\controllers","code":{"id":"astnode100099496","name":"CB_Controllers_Proprietary.WII_U.getGamePadStatus","type":"FunctionExpression","paramnames":[]},"vars":{"CB_Controllers_Proprietary.WII_U.gamepadLastStatus":"CB_Controllers_Proprietary.WII_U.gamepadLastStatus"}},"description":"<p>Returns an object with the current status of each button of the gamepad. Already calls {@link CB_Controllers_Proprietary.WII_U.normalizeGamepad} automatically.</p>","kind":"function","returns":[{"type":{"names":["Object"]},"description":"<p>Returns an object with the current status of each button of the gamepad.</p>"}],"name":"getGamePadStatus","longname":"CB_Controllers_Proprietary.WII_U.getGamePadStatus","memberof":"CB_Controllers_Proprietary.WII_U","scope":"static"},{"comment":"/**\r\n\t * Returns an object with the current status of each button of the desired remote. Already calls {@link CB_Controllers_Proprietary.WII_U.normalizeRemote} automatically.\r\n\t * @function\r\n\t * @param {integer} [n=0] - Number of the remote whose status we want to get, from 0 to 7 (both numbers included, 8 in total).\r\n\t * @returns {Object} Returns an object with the current status of each button of the desired remote.\r\n\t * @todo Check documentation to see whether the first index should be 0 or 1 and maximum 7 or 8.\r\n\t */","meta":{"range":[24774,25227],"filename":"CB_Controllers_Proprietary_WII_U.js","lineno":430,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\input\\controllers","code":{"id":"astnode100099528","name":"CB_Controllers_Proprietary.WII_U.getRemoteStatus","type":"FunctionExpression","paramnames":["n"]},"vars":{"n":"CB_Controllers_Proprietary.WII_U.getRemoteStatus~n","CB_Controllers_Proprietary.WII_U.remoteLastStatus[undefined]":"CB_Controllers_Proprietary.WII_U.remoteLastStatus[undefined]"}},"description":"<p>Returns an object with the current status of each button of the desired remote. Already calls {@link CB_Controllers_Proprietary.WII_U.normalizeRemote} automatically.</p>","kind":"function","params":[{"type":{"names":["integer"]},"optional":true,"defaultvalue":0,"description":"<p>Number of the remote whose status we want to get, from 0 to 7 (both numbers included, 8 in total).</p>","name":"n"}],"returns":[{"type":{"names":["Object"]},"description":"<p>Returns an object with the current status of each button of the desired remote.</p>"}],"todo":["Check documentation to see whether the first index should be 0 or 1 and maximum 7 or 8."],"name":"getRemoteStatus","longname":"CB_Controllers_Proprietary.WII_U.getRemoteStatus","memberof":"CB_Controllers_Proprietary.WII_U","scope":"static"},{"comment":"/**\r\n\t * Returns an object with the gamepad and all remotes simulating the [GamePad API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Gamepad_API}. Uses the {@link CB_Controllers_Proprietary.WII_U.getRemoteStatus} and {@link CB_Controllers_Proprietary.WII_U.getRemoteStatus} internally so the objects will be normalized already.\r\n\t * @function\r\n\t * @returns {Object} Returns an object with two properties: \"gamepads\" and \"remotes\". Each of those two properties will have an object as value whose names will be the index of the device and the value an object with the status of that device. In the case of the gamepad (which is unique), there will only be one index (\"0\", zero). In the case of the remotes, it will contain the status objects of all the remotes. The number of remotes is 8 (index from \"0\" to \"7\"). Simulating the [GamePad API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Gamepad_API}. Those status objects which are not using the real API will have a property called \"usingPrototype\" set to true.\r\n\t * @todo Check the documentation to find out the maximum number of remotes allowed and find out whether the first index should be 0 or 1 and last one 7 or 8.\r\n\t */","meta":{"range":[26439,27279],"filename":"CB_Controllers_Proprietary_WII_U.js","lineno":444,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\input\\controllers","code":{"id":"astnode100099597","name":"CB_Controllers_Proprietary.WII_U.getGamePads","type":"FunctionExpression","paramnames":[]}},"description":"<p>Returns an object with the gamepad and all remotes simulating the [GamePad API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Gamepad_API}. Uses the {@link CB_Controllers_Proprietary.WII_U.getRemoteStatus} and {@link CB_Controllers_Proprietary.WII_U.getRemoteStatus} internally so the objects will be normalized already.</p>","kind":"function","returns":[{"type":{"names":["Object"]},"description":"<p>Returns an object with two properties: &quot;gamepads&quot; and &quot;remotes&quot;. Each of those two properties will have an object as value whose names will be the index of the device and the value an object with the status of that device. In the case of the gamepad (which is unique), there will only be one index (&quot;0&quot;, zero). In the case of the remotes, it will contain the status objects of all the remotes. The number of remotes is 8 (index from &quot;0&quot; to &quot;7&quot;). Simulating the [GamePad API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Gamepad_API}. Those status objects which are not using the real API will have a property called &quot;usingPrototype&quot; set to true.</p>"}],"todo":["Check the documentation to find out the maximum number of remotes allowed and find out whether the first index should be 0 or 1 and last one 7 or 8."],"name":"getGamePads","longname":"CB_Controllers_Proprietary.WII_U.getGamePads","memberof":"CB_Controllers_Proprietary.WII_U","scope":"static"},{"comment":"/**\r\n * @file Management for things related with the net. Contains the {@link CB_Net} static class.\r\n * @author Joan Alba Maldonado <workindalian@gmail.com>\r\n */","meta":{"filename":"CB_Net.js","lineno":1,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\net","code":{}},"name":"CrossBase/net/CB_Net.js","kind":"file","description":"<p>Management for things related with the net. Contains the {@link CB_Net} static class.</p>","preserveName":true,"author":["Joan Alba Maldonado <workindalian@gmail.com>"],"longname":"CrossBase/net/CB_Net.js","scope":"global"},{"comment":"/**\r\n * Static class to manage things related to the net. It will return itself if it is tried to be instantiated.\r\n * @namespace CB_Net\r\n */","meta":{"filename":"CB_Net.js","lineno":7,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\net","code":{}},"description":"<p>Static class to manage things related to the net. It will return itself if it is tried to be instantiated.</p>","kind":"namespace","name":"CB_Net","longname":"CB_Net","scope":"global"},{"comment":"/**\r\n\t * Alias for {@link CB_Net.URIValueEncode}.\r\n\t * @function CB_Net.URLValueEncode\r\n\t * @see {@link CB_Net.URIValueEncode}\r\n\t */","meta":{"filename":"CB_Net.js","lineno":30,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\net","code":{}},"description":"<p>Alias for {@link CB_Net.URIValueEncode}.</p>","kind":"function","name":"URLValueEncode","see":["{@link CB_Net.URIValueEncode}"],"memberof":"CB_Net","longname":"CB_Net.URLValueEncode","scope":"static"},{"comment":"/**\r\n\t * Encodes a given URI value. Uses the native [encodeURIComponent]{@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURIComponent} function internally if available or fallbacks to the native [escape]{@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/escape} function otherwise.\r\n\t * @function\r\n\t * @param {string|number} value - The value that we want to encode. Normally, it should be either a string or a number.\r\n\t * @returns {string}\r\n\t * @todo Think about using another thing since [escape]{@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/escape} maybe is not a good fallback. Probably a polyfill to simulate the [encodeURIComponent]{@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURIComponent} function.\r\n\t */","meta":{"range":[1750,2092],"filename":"CB_Net.js","lineno":42,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\net","code":{"id":"astnode100099727","name":"CB_Net.URIValueEncode","type":"AssignmentExpression","value":"CB_Net.URLValueEncode","paramnames":[]}},"description":"<p>Encodes a given URI value. Uses the native [encodeURIComponent]{@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURIComponent} function internally if available or fallbacks to the native [escape]{@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/escape} function otherwise.</p>","kind":"function","params":[{"type":{"names":["string","number"]},"description":"<p>The value that we want to encode. Normally, it should be either a string or a number.</p>","name":"value"}],"returns":[{"type":{"names":["string"]}}],"todo":["Think about using another thing since [escape]{@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/escape} maybe is not a good fallback. Probably a polyfill to simulate the [encodeURIComponent]{@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURIComponent} function."],"name":"URIValueEncode","longname":"CB_Net.URIValueEncode","memberof":"CB_Net","scope":"static"},{"comment":"/**\r\n\t * Alias for {@link CB_Net.URIValueDecode}.\r\n\t * @function CB_Net.URLValueDecode\r\n\t * @see {@link CB_Net.URIValueDecode}\r\n\t */","meta":{"filename":"CB_Net.js","lineno":49,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\net","code":{}},"description":"<p>Alias for {@link CB_Net.URIValueDecode}.</p>","kind":"function","name":"URLValueDecode","see":["{@link CB_Net.URIValueDecode}"],"memberof":"CB_Net","longname":"CB_Net.URLValueDecode","scope":"static"},{"comment":"/**\r\n\t * Decodes a given URI value. Uses the native [decodeURIComponent]{@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/decodeURIComponent} function internally if available or fallbacks to the native [unescape]{@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/unescape} function otherwise.\r\n\t * @function\r\n\t * @param {string|number} value - The value that we want to decode. Normally, it should be either a string or a number.\r\n\t * @returns {string}\r\n\t * @todo Think about using another thing since [unescape]{@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/unescape} maybe is not a good fallback. Probably a polyfill to simulate the [decodeURIComponent]{@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/decodeURIComponent} function.\r\n\t */","meta":{"range":[3137,3483],"filename":"CB_Net.js","lineno":61,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\net","code":{"id":"astnode100099754","name":"CB_Net.URIValueDecode","type":"AssignmentExpression","value":"CB_Net.URLValueDecode","paramnames":[]}},"description":"<p>Decodes a given URI value. Uses the native [decodeURIComponent]{@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/decodeURIComponent} function internally if available or fallbacks to the native [unescape]{@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/unescape} function otherwise.</p>","kind":"function","params":[{"type":{"names":["string","number"]},"description":"<p>The value that we want to decode. Normally, it should be either a string or a number.</p>","name":"value"}],"returns":[{"type":{"names":["string"]}}],"todo":["Think about using another thing since [unescape]{@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/unescape} maybe is not a good fallback. Probably a polyfill to simulate the [decodeURIComponent]{@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/decodeURIComponent} function."],"name":"URIValueDecode","longname":"CB_Net.URIValueDecode","memberof":"CB_Net","scope":"static"},{"comment":"/**\r\n\t * Alias for {@link CB_Net.URIEncode}.\r\n\t * @function CB_Net.URLEncode\r\n\t * @see {@link CB_Net.URIEncode}\r\n\t */","meta":{"filename":"CB_Net.js","lineno":68,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\net","code":{}},"description":"<p>Alias for {@link CB_Net.URIEncode}.</p>","kind":"function","name":"URLEncode","see":["{@link CB_Net.URIEncode}"],"memberof":"CB_Net","longname":"CB_Net.URLEncode","scope":"static"},{"comment":"/**\r\n\t * Encodes a given URI. Uses the native [encodeURI]{@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURI} function internally if available or fallbacks to the native [escape]{@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/escape} function otherwise.\r\n\t * @function\r\n\t * @param {string|number} URI - The URI that we want to encode. Normally, it should be either a string or a number.\r\n\t * @returns {string}\r\n\t * @todo Think about using another thing since [escape]{@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/escape} maybe is not a good fallback. Probably a polyfill to simulate the [encodeURI]{@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURI} function.\r\n\t */","meta":{"range":[4459,4758],"filename":"CB_Net.js","lineno":80,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\net","code":{"id":"astnode100099781","name":"CB_Net.URIEncode","type":"AssignmentExpression","value":"CB_Net.URLEncode","paramnames":[]}},"description":"<p>Encodes a given URI. Uses the native [encodeURI]{@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURI} function internally if available or fallbacks to the native [escape]{@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/escape} function otherwise.</p>","kind":"function","params":[{"type":{"names":["string","number"]},"description":"<p>The URI that we want to encode. Normally, it should be either a string or a number.</p>","name":"URI"}],"returns":[{"type":{"names":["string"]}}],"todo":["Think about using another thing since [escape]{@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/escape} maybe is not a good fallback. Probably a polyfill to simulate the [encodeURI]{@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURI} function."],"name":"URIEncode","longname":"CB_Net.URIEncode","memberof":"CB_Net","scope":"static"},{"comment":"/**\r\n\t * Alias for {@link CB_Net.URIDecode}.\r\n\t * @function CB_Net.URLDecode\r\n\t * @see {@link CB_Net.URIDecode}\r\n\t */","meta":{"filename":"CB_Net.js","lineno":87,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\net","code":{}},"description":"<p>Alias for {@link CB_Net.URIDecode}.</p>","kind":"function","name":"URLDecode","see":["{@link CB_Net.URIDecode}"],"memberof":"CB_Net","longname":"CB_Net.URLDecode","scope":"static"},{"comment":"/**\r\n\t * Encodes a given URI. Uses the native [decodeURI]{@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/decodeURI} function internally if available or fallbacks to the native [unescape]{@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/unescape} function otherwise.\r\n\t * @function\r\n\t * @param {string|number} URI - The URI that we want to decode. Normally, it should be either a string or a number.\r\n\t * @returns {string}\r\n\t * @todo Think about using another thing since [unescape]{@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/unescape} maybe is not a good fallback. Probably a polyfill to simulate the [decodeURI]{@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/decodeURI} function.\r\n\t */","meta":{"range":[5742,6045],"filename":"CB_Net.js","lineno":99,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\net","code":{"id":"astnode100099808","name":"CB_Net.URIDecode","type":"AssignmentExpression","value":"CB_Net.URLDecode","paramnames":[]}},"description":"<p>Encodes a given URI. Uses the native [decodeURI]{@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/decodeURI} function internally if available or fallbacks to the native [unescape]{@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/unescape} function otherwise.</p>","kind":"function","params":[{"type":{"names":["string","number"]},"description":"<p>The URI that we want to decode. Normally, it should be either a string or a number.</p>","name":"URI"}],"returns":[{"type":{"names":["string"]}}],"todo":["Think about using another thing since [unescape]{@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/unescape} maybe is not a good fallback. Probably a polyfill to simulate the [decodeURI]{@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/decodeURI} function."],"name":"URIDecode","longname":"CB_Net.URIDecode","memberof":"CB_Net","scope":"static"},{"comment":"/**\r\n\t * Gets all the \"GET\" (query) parameters (names and their values) from a given URI or from the current URL.\r\n\t\t<br />\r\n\t\tFor example, if the URI provided is \"http://whatever.com/index.html?parameter1=value1&amp;parameter2=value2#hash_parameter1=hash_value1&amp;hash_parameter2=hash_value2\", it will return \"parameter1=value1&amp;parameter2=value2\" (using the default options).\r\n\t * @function\r\n\t * @param {string} [URI=[window.location]{@link https://developer.mozilla.org/en-US/docs/Web/API/Window/location}.href] - The URI that we want to work with. If not provided, it will try to use the current URL (by using [window.location]{@link https://developer.mozilla.org/en-US/docs/Web/API/Window/location}.href).\r\n\t * @param {array} [exclude] - A numeric array containing the name of the parameters that we want to exclude in the returned string. It will exclude them even if they are contained in the given \"includeOnly\" parameter (if any).\r\n\t * @param {array} [includeOnly] - A numeric array containing the name of the parameters that we want to include in the returned string. If provided, it will only include these ones to the returned string (unless they are included in the \"exclude\" parameter).\r\n\t * @param {boolean} [includeIfNotExists=false] - If it is set to true and an array is given as the \"includeOnly\" parameter, it will add the parameters in the \"includeOnly\" array (with empty values) in the returned string even when they did not exist in the original URI provided.\r\n\t * @param {boolean} [trim=true] - Defines whether we want to trim the spaces around the values or not.\r\n\t * @param {string} [firstDelimiter='?'] - The string that indicates where the parameters start. If it is not provided, it will be \"?\" as default. If not provided and \"lastDelimiter\" is not provided either, it will be \"?\" and \"lastDelimiter\" will be \"#\".\r\n\t * @param {string} [lastDelimiter=undefined|'#'] - The string that indicates where the parameters end. If not provided and \"firstDelimiter\" is provided, it will stop at the end of the given URI. If it is not provided and \"firstDelimiter\" is not provided either, \"firstDelimiter\" will be \"?\" and \"lastDelimiter\" will be \"#\".\r\n\t * @param {string} [concatenator='&'] - The string that joints the different parameters.\r\n\t * @param {string} [nameValueSeparator='='] - The string that is the separator for the parameters and their values.\r\n\t * @returns {string} An empty string will be returned if no parameters can be found.\r\n\t */","meta":{"range":[8542,11323],"filename":"CB_Net.js","lineno":122,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\net","code":{"id":"astnode100099835","name":"CB_Net.getURIParameters","type":"FunctionExpression","paramnames":["URI","exclude","includeOnly","includeIfNotExists","trim","firstDelimiter","lastDelimiter","concatenator","nameValueSeparator"]},"vars":{"concatenator":"CB_Net.getURIParameters~concatenator","nameValueSeparator":"CB_Net.getURIParameters~nameValueSeparator","firstDelimiter":"CB_Net.getURIParameters~firstDelimiter","lastDelimiter":"CB_Net.getURIParameters~lastDelimiter","URI":"CB_Net.getURIParameters~URI","filteredURI":"CB_Net.getURIParameters~filteredURI","trim":"CB_Net.getURIParameters~trim","x":"CB_Net.getURIParameters~x","includeOnlyLength":"CB_Net.getURIParameters~includeOnlyLength","excludePending":"CB_Net.getURIParameters~excludePending","parametersArray":"CB_Net.getURIParameters~parametersArray","parameterArray":"CB_Net.getURIParameters~parameterArray","parametersArrayLength":"CB_Net.getURIParameters~parametersArrayLength"}},"description":"<p>Gets all the &quot;GET&quot; (query) parameters (names and their values) from a given URI or from the current URL.<br> <br /><br> For example, if the URI provided is &quot;http://whatever.com/index.html?parameter1=value1&amp;parameter2=value2#hash_parameter1=hash_value1&amp;hash_parameter2=hash_value2&quot;, it will return &quot;parameter1=value1&amp;parameter2=value2&quot; (using the default options).</p>","kind":"function","params":[{"type":{"names":["string"]},"optional":true,"defaultvalue":"[window.location]{@link https://developer.mozilla.org/en-US/docs/Web/API/Window/location}.href","description":"<p>The URI that we want to work with. If not provided, it will try to use the current URL (by using [window.location]{@link https://developer.mozilla.org/en-US/docs/Web/API/Window/location}.href).</p>","name":"URI"},{"type":{"names":["array"]},"optional":true,"description":"<p>A numeric array containing the name of the parameters that we want to exclude in the returned string. It will exclude them even if they are contained in the given &quot;includeOnly&quot; parameter (if any).</p>","name":"exclude"},{"type":{"names":["array"]},"optional":true,"description":"<p>A numeric array containing the name of the parameters that we want to include in the returned string. If provided, it will only include these ones to the returned string (unless they are included in the &quot;exclude&quot; parameter).</p>","name":"includeOnly"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If it is set to true and an array is given as the &quot;includeOnly&quot; parameter, it will add the parameters in the &quot;includeOnly&quot; array (with empty values) in the returned string even when they did not exist in the original URI provided.</p>","name":"includeIfNotExists"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":true,"description":"<p>Defines whether we want to trim the spaces around the values or not.</p>","name":"trim"},{"type":{"names":["string"]},"optional":true,"defaultvalue":"'?'","description":"<p>The string that indicates where the parameters start. If it is not provided, it will be &quot;?&quot; as default. If not provided and &quot;lastDelimiter&quot; is not provided either, it will be &quot;?&quot; and &quot;lastDelimiter&quot; will be &quot;#&quot;.</p>","name":"firstDelimiter"},{"type":{"names":["string"]},"optional":true,"defaultvalue":"undefined|'#'","description":"<p>The string that indicates where the parameters end. If not provided and &quot;firstDelimiter&quot; is provided, it will stop at the end of the given URI. If it is not provided and &quot;firstDelimiter&quot; is not provided either, &quot;firstDelimiter&quot; will be &quot;?&quot; and &quot;lastDelimiter&quot; will be &quot;#&quot;.</p>","name":"lastDelimiter"},{"type":{"names":["string"]},"optional":true,"defaultvalue":"'&'","description":"<p>The string that joints the different parameters.</p>","name":"concatenator"},{"type":{"names":["string"]},"optional":true,"defaultvalue":"'='","description":"<p>The string that is the separator for the parameters and their values.</p>","name":"nameValueSeparator"}],"returns":[{"type":{"names":["string"]},"description":"<p>An empty string will be returned if no parameters can be found.</p>"}],"name":"getURIParameters","longname":"CB_Net.getURIParameters","memberof":"CB_Net","scope":"static"},{"comment":"/**\r\n\t * Gets all the hash parameters (names and their values) from a given URI or from the current URL.\r\n\t\t<br />\r\n\t\tFor example, if the URI provided is \"http://whatever.com/index.html?parameter1=value1&amp;parameter2=value2#hash_parameter1=hash_value1&amp;hash_parameter2=hash_value2\", it will return\r\n\t\t\"hash_parameter1=hash_value1&amp;hash_parameter2=hash_value2\" (using the default options).\r\n\t * @function\r\n\t * @param {string} [URI=[window.location]{@link https://developer.mozilla.org/en-US/docs/Web/API/Window/location}.href] - The URI that we want to work with. If not provided, it will try to use the current URL (by using [window.location]{@link https://developer.mozilla.org/en-US/docs/Web/API/Window/location}.href).\r\n\t * @param {array} [exclude] - A numeric array containing the name of the parameters that we want to exclude in the returned string. It will exclude them even if they are contained in the given \"includeOnly\" parameter (if any).\r\n\t * @param {array} [includeOnly] - A numeric array containing the name of the parameters that we want to include in the returned string. If provided, it will only include these ones to the returned string (unless they are included in the \"exclude\" parameter).\r\n\t * @param {boolean} [includeIfNotExists=false] - If it is set to true and an array is given as the \"includeOnly\" parameter, it will add the parameters in the \"includeOnly\" array (with empty values) in the returned string even when they did not exist in the original URI provided.\r\n\t * @param {boolean} [trim=true] - It will use this option when it calls the {@link CB_Net.getURIParameters} function internally.\r\n\t * @returns {string} An empty string will be returned if no parameters can be found.\r\n\t */","meta":{"range":[13066,13255],"filename":"CB_Net.js","lineno":215,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\net","code":{"id":"astnode100100243","name":"CB_Net.getHashParameters","type":"FunctionExpression","paramnames":["URI","exclude","includeOnly","includeIfNotExists","trim"]}},"description":"<p>Gets all the hash parameters (names and their values) from a given URI or from the current URL.<br> <br /><br> For example, if the URI provided is &quot;http://whatever.com/index.html?parameter1=value1&amp;parameter2=value2#hash_parameter1=hash_value1&amp;hash_parameter2=hash_value2&quot;, it will return<br> &quot;hash_parameter1=hash_value1&amp;hash_parameter2=hash_value2&quot; (using the default options).</p>","kind":"function","params":[{"type":{"names":["string"]},"optional":true,"defaultvalue":"[window.location]{@link https://developer.mozilla.org/en-US/docs/Web/API/Window/location}.href","description":"<p>The URI that we want to work with. If not provided, it will try to use the current URL (by using [window.location]{@link https://developer.mozilla.org/en-US/docs/Web/API/Window/location}.href).</p>","name":"URI"},{"type":{"names":["array"]},"optional":true,"description":"<p>A numeric array containing the name of the parameters that we want to exclude in the returned string. It will exclude them even if they are contained in the given &quot;includeOnly&quot; parameter (if any).</p>","name":"exclude"},{"type":{"names":["array"]},"optional":true,"description":"<p>A numeric array containing the name of the parameters that we want to include in the returned string. If provided, it will only include these ones to the returned string (unless they are included in the &quot;exclude&quot; parameter).</p>","name":"includeOnly"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If it is set to true and an array is given as the &quot;includeOnly&quot; parameter, it will add the parameters in the &quot;includeOnly&quot; array (with empty values) in the returned string even when they did not exist in the original URI provided.</p>","name":"includeIfNotExists"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":true,"description":"<p>It will use this option when it calls the {@link CB_Net.getURIParameters} function internally.</p>","name":"trim"}],"returns":[{"type":{"names":["string"]},"description":"<p>An empty string will be returned if no parameters can be found.</p>"}],"name":"getHashParameters","longname":"CB_Net.getHashParameters","memberof":"CB_Net","scope":"static"},{"comment":"/**\r\n\t * Gets the value of a specific URI parameter (query or hash), respecting GET/URL rules by default, from the current URL or a desired one (with the given delimiters).\r\n\t\t<br />\r\n\t\tFor example, if the URI provided is \"http://whatever.com/index.html?parameter1=value1&amp;parameter2=value2#hash_parameter1=hash_value1&amp;hash_parameter2=hash_value2\" and the index given is \"parameter1\", it will return \"value1\" (using the default options).\r\n\t * @function\r\n\t * @param {string} index - The name of the parameter whose value we want to get.\r\n\t * @param {boolean} [trim=true] - It will trim the value (using {@link CB_trim} internally) before returning it.\r\n\t * @param {string} [URI=[window.location]{@link https://developer.mozilla.org/en-US/docs/Web/API/Window/location}.href] - The URI that we want to work with. If not provided, it will try to use the current URL (by using [window.location]{@link https://developer.mozilla.org/en-US/docs/Web/API/Window/location}.href).\r\n\t * @param {string} [firstDelimiter='?'] - The string that indicates where the parameters start. If it is not provided, it will be \"?\" as default. If not provided and \"lastDelimiter\" is not provided either, it will be \"?\" and \"lastDelimiter\" will be \"#\".\r\n\t * @param {string} [lastDelimiter=undefined|'#'] - The string that indicates where the parameters end. If not provided and \"firstDelimiter\" is provided, it will stop at the end of the given URI. If it is not provided and \"firstDelimiter\" is not provided either, \"firstDelimiter\" will be \"?\" and \"lastDelimiter\" will be \"#\".\r\n\t * @param {string} [concatenator='&'] - The string that joints the different parameters.\r\n\t * @param {string} [nameValueSeparator='='] - The string that is the separator for the parameters and their values.\r\n\t * @returns {string} An empty string will be returned if the value of the given parameter cannot be found.\r\n\t */","meta":{"range":[15155,16730],"filename":"CB_Net.js","lineno":235,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\net","code":{"id":"astnode100100266","name":"CB_Net.getParameter","type":"FunctionExpression","paramnames":["index","trim","URI","firstDelimiter","lastDelimiter","concatenator","nameValueSeparator"]},"vars":{"trim":"CB_Net.getParameter~trim","index":"CB_Net.getParameter~index","concatenator":"CB_Net.getParameter~concatenator","nameValueSeparator":"CB_Net.getParameter~nameValueSeparator","firstDelimiter":"CB_Net.getParameter~firstDelimiter","lastDelimiter":"CB_Net.getParameter~lastDelimiter","URI":"CB_Net.getParameter~URI","value":"CB_Net.getParameter~value","URIUpperCase":"CB_Net.getParameter~URIUpperCase","indexOfFound":"CB_Net.getParameter~indexOfFound"}},"description":"<p>Gets the value of a specific URI parameter (query or hash), respecting GET/URL rules by default, from the current URL or a desired one (with the given delimiters).<br> <br /><br> For example, if the URI provided is &quot;http://whatever.com/index.html?parameter1=value1&amp;parameter2=value2#hash_parameter1=hash_value1&amp;hash_parameter2=hash_value2&quot; and the index given is &quot;parameter1&quot;, it will return &quot;value1&quot; (using the default options).</p>","kind":"function","params":[{"type":{"names":["string"]},"description":"<p>The name of the parameter whose value we want to get.</p>","name":"index"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":true,"description":"<p>It will trim the value (using {@link CB_trim} internally) before returning it.</p>","name":"trim"},{"type":{"names":["string"]},"optional":true,"defaultvalue":"[window.location]{@link https://developer.mozilla.org/en-US/docs/Web/API/Window/location}.href","description":"<p>The URI that we want to work with. If not provided, it will try to use the current URL (by using [window.location]{@link https://developer.mozilla.org/en-US/docs/Web/API/Window/location}.href).</p>","name":"URI"},{"type":{"names":["string"]},"optional":true,"defaultvalue":"'?'","description":"<p>The string that indicates where the parameters start. If it is not provided, it will be &quot;?&quot; as default. If not provided and &quot;lastDelimiter&quot; is not provided either, it will be &quot;?&quot; and &quot;lastDelimiter&quot; will be &quot;#&quot;.</p>","name":"firstDelimiter"},{"type":{"names":["string"]},"optional":true,"defaultvalue":"undefined|'#'","description":"<p>The string that indicates where the parameters end. If not provided and &quot;firstDelimiter&quot; is provided, it will stop at the end of the given URI. If it is not provided and &quot;firstDelimiter&quot; is not provided either, &quot;firstDelimiter&quot; will be &quot;?&quot; and &quot;lastDelimiter&quot; will be &quot;#&quot;.</p>","name":"lastDelimiter"},{"type":{"names":["string"]},"optional":true,"defaultvalue":"'&'","description":"<p>The string that joints the different parameters.</p>","name":"concatenator"},{"type":{"names":["string"]},"optional":true,"defaultvalue":"'='","description":"<p>The string that is the separator for the parameters and their values.</p>","name":"nameValueSeparator"}],"returns":[{"type":{"names":["string"]},"description":"<p>An empty string will be returned if the value of the given parameter cannot be found.</p>"}],"name":"getParameter","longname":"CB_Net.getParameter","memberof":"CB_Net","scope":"static"},{"comment":"/**\r\n\t * Gets the value of a specific URI \"GET\" parameter (query) from the current URL or a desired URI.\r\n\t\t<br />\r\n\t\tFor example, if the URI provided is \"http://whatever.com/index.html?parameter1=value1&amp;parameter2=value2#hash_parameter1=hash_value1&amp;hash_parameter2=hash_value2\" and the index given is \"parameter1\", it will return \"value1\" (using the default options).\r\n\t * @function\r\n\t * @param {string} index - The name of the parameter whose value we want to get.\r\n\t * @param {boolean} [trim=true] - It will trim the value (using {@link CB_Net.getParameter} internally) before returning it.\r\n\t * @param {string} [URI=[window.location]{@link https://developer.mozilla.org/en-US/docs/Web/API/Window/location}.href] - The URI that we want to work with. If not provided, it will try to use the current URL (by using [window.location]{@link https://developer.mozilla.org/en-US/docs/Web/API/Window/location}.href).\r\n\t * @returns {string} An empty string will be returned if the value of the given parameter cannot be found.\r\n\t */","meta":{"range":[17779,17893],"filename":"CB_Net.js","lineno":293,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\net","code":{"id":"astnode100100543","name":"CB_Net.getURIValue","type":"FunctionExpression","paramnames":["index","trim","URI"]}},"description":"<p>Gets the value of a specific URI &quot;GET&quot; parameter (query) from the current URL or a desired URI.<br> <br /><br> For example, if the URI provided is &quot;http://whatever.com/index.html?parameter1=value1&amp;parameter2=value2#hash_parameter1=hash_value1&amp;hash_parameter2=hash_value2&quot; and the index given is &quot;parameter1&quot;, it will return &quot;value1&quot; (using the default options).</p>","kind":"function","params":[{"type":{"names":["string"]},"description":"<p>The name of the parameter whose value we want to get.</p>","name":"index"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":true,"description":"<p>It will trim the value (using {@link CB_Net.getParameter} internally) before returning it.</p>","name":"trim"},{"type":{"names":["string"]},"optional":true,"defaultvalue":"[window.location]{@link https://developer.mozilla.org/en-US/docs/Web/API/Window/location}.href","description":"<p>The URI that we want to work with. If not provided, it will try to use the current URL (by using [window.location]{@link https://developer.mozilla.org/en-US/docs/Web/API/Window/location}.href).</p>","name":"URI"}],"returns":[{"type":{"names":["string"]},"description":"<p>An empty string will be returned if the value of the given parameter cannot be found.</p>"}],"name":"getURIValue","longname":"CB_Net.getURIValue","memberof":"CB_Net","scope":"static"},{"comment":"/**\r\n\t * Gets the value of a specific hash (string after \"#\") parameter from the current URL or a desired URI.\r\n\t\t<br />\r\n\t\tFor example, if the URI provided is \"http://whatever.com/index.html?parameter1=value1&amp;parameter2=value2#hash_parameter1=hash_value1&amp;hash_parameter2=hash_value2\" and the index given is \"hash_parameter1\",\r\n\t\tit will return \"hash_value1\" (using the default options).\r\n\t * @function\r\n\t * @param {string} index - The name of the parameter whose value we want to get.\r\n\t * @param {boolean} [trim=true] - It will trim the value (using {@link CB_Net.getParameter} internally) before returning it.\r\n\t * @param {string} [URI=[window.location]{@link https://developer.mozilla.org/en-US/docs/Web/API/Window/location}.href] - The URI that we want to work with. If not provided, it will try to use the current URL (by using [window.location]{@link https://developer.mozilla.org/en-US/docs/Web/API/Window/location}.href).\r\n\t * @returns {string} An empty string will be returned if the value of the given parameter cannot be found.\r\n\t */","meta":{"range":[18961,19071],"filename":"CB_Net.js","lineno":310,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\net","code":{"id":"astnode100100563","name":"CB_Net.getHashValue","type":"FunctionExpression","paramnames":["index","trim","URI"]}},"description":"<p>Gets the value of a specific hash (string after &quot;#&quot;) parameter from the current URL or a desired URI.<br> <br /><br> For example, if the URI provided is &quot;http://whatever.com/index.html?parameter1=value1&amp;parameter2=value2#hash_parameter1=hash_value1&amp;hash_parameter2=hash_value2&quot; and the index given is &quot;hash_parameter1&quot;,<br> it will return &quot;hash_value1&quot; (using the default options).</p>","kind":"function","params":[{"type":{"names":["string"]},"description":"<p>The name of the parameter whose value we want to get.</p>","name":"index"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":true,"description":"<p>It will trim the value (using {@link CB_Net.getParameter} internally) before returning it.</p>","name":"trim"},{"type":{"names":["string"]},"optional":true,"defaultvalue":"[window.location]{@link https://developer.mozilla.org/en-US/docs/Web/API/Window/location}.href","description":"<p>The URI that we want to work with. If not provided, it will try to use the current URL (by using [window.location]{@link https://developer.mozilla.org/en-US/docs/Web/API/Window/location}.href).</p>","name":"URI"}],"returns":[{"type":{"names":["string"]},"description":"<p>An empty string will be returned if the value of the given parameter cannot be found.</p>"}],"name":"getHashValue","longname":"CB_Net.getHashValue","memberof":"CB_Net","scope":"static"},{"comment":"/**\r\n\t * Alias for {@link CB_Net.combineURIParameters}.\r\n\t * @function CB_Net.combineURLParameters\r\n\t * @see {@link CB_Net.combineURIParameters}\r\n\t */","meta":{"filename":"CB_Net.js","lineno":316,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\net","code":{}},"description":"<p>Alias for {@link CB_Net.combineURIParameters}.</p>","kind":"function","name":"combineURLParameters","see":["{@link CB_Net.combineURIParameters}"],"memberof":"CB_Net","longname":"CB_Net.combineURLParameters","scope":"static"},{"comment":"/**\r\n\t * Alias for {@link CB_combineURIParameters}.\r\n\t * @function CB_Net.combineURIParameters\r\n\t * @see {@link CB_combineURIParameters}\r\n\t */","meta":{"filename":"CB_Net.js","lineno":321,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\net","code":{}},"description":"<p>Alias for {@link CB_combineURIParameters}.</p>","kind":"function","name":"combineURIParameters","see":["{@link CB_combineURIParameters}"],"memberof":"CB_Net","longname":"CB_Net.combineURIParameters","scope":"static"},{"comment":"/**\r\n * @file [Fetch API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API} management. Contains the {@link CB_Net.Fetch} static class.\r\n * @author Joan Alba Maldonado <workindalian@gmail.com>\r\n */","meta":{"filename":"CB_Net_Fetch.js","lineno":1,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\net\\fetch","code":{}},"name":"CrossBase/net/fetch/CB_Net_Fetch.js","kind":"file","description":"<p>[Fetch API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API} management. Contains the {@link CB_Net.Fetch} static class.</p>","preserveName":true,"author":["Joan Alba Maldonado <workindalian@gmail.com>"],"longname":"CrossBase/net/fetch/CB_Net_Fetch.js","scope":"global"},{"comment":"/**\r\n * Static class to manage things related to the [Fetch API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API}. It will return itself if it is tried to be instantiated.\r\n * @namespace\r\n */","meta":{"range":[519,569],"filename":"CB_Net_Fetch.js","lineno":14,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\net\\fetch","code":{"id":"astnode100100615","name":"CB_Net.Fetch","type":"FunctionExpression","paramnames":[]}},"description":"<p>Static class to manage things related to the [Fetch API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API}. It will return itself if it is tried to be instantiated.</p>","kind":"namespace","name":"Fetch","longname":"CB_Net.Fetch","memberof":"CB_Net","scope":"static"},{"comment":"/**\r\n\t * Function that points to the [fetch]{@link https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/fetch} method. If the [Fetch API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API} is not supported natively, the [fetch]{@link https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/fetch} function will be a polyfill.\r\n\t * @function\r\n\t * @param {string|Request} resource - First parameter of the [fetch]{@link https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/fetch} method.\r\n\t * @param {Object} [init] - Second parameter of the [fetch]{@link https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/fetch} method.\r\n\t * @returns {Promise}\r\n\t */","meta":{"range":[1687,1770],"filename":"CB_Net_Fetch.js","lineno":40,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\net\\fetch","code":{"id":"astnode100100667","name":"CB_Net.Fetch.get","type":"FunctionExpression","paramnames":[]}},"description":"<p>Function that points to the [fetch]{@link https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/fetch} method. If the [Fetch API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API} is not supported natively, the [fetch]{@link https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/fetch} function will be a polyfill.</p>","kind":"function","params":[{"type":{"names":["string","Request"]},"description":"<p>First parameter of the [fetch]{@link https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/fetch} method.</p>","name":"resource"},{"type":{"names":["Object"]},"optional":true,"description":"<p>Second parameter of the [fetch]{@link https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/fetch} method.</p>","name":"init"}],"returns":[{"type":{"names":["Promise"]}}],"name":"get","longname":"CB_Net.Fetch.get","memberof":"CB_Net.Fetch","scope":"static"},{"comment":"/**\r\n * @file [REST]{@link https://en.wikipedia.org/wiki/Representational_state_transfer} client, services and related management. Contains the {@link CB_Net.REST} static class.\r\n * @author Joan Alba Maldonado <workindalian@gmail.com>\r\n */","meta":{"filename":"CB_Net_REST.js","lineno":1,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\net\\REST","code":{}},"name":"CrossBase/net/REST/CB_Net_REST.js","kind":"file","description":"<p>[REST]{@link https://en.wikipedia.org/wiki/Representational_state_transfer} client, services and related management. Contains the {@link CB_Net.REST} static class.</p>","preserveName":true,"author":["Joan Alba Maldonado <workindalian@gmail.com>"],"longname":"CrossBase/net/REST/CB_Net_REST.js","scope":"global"},{"comment":"/**\r\n * Static class to manage [REST]{@link https://en.wikipedia.org/wiki/Representational_state_transfer} services and related. It will return itself if it is tried to be instantiated.\r\n * @namespace\r\n * @todo Think about accepting an onAbort function as option (with also default and permanent).\r\n */","meta":{"range":[635,683],"filename":"CB_Net_REST.js","lineno":13,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\net\\REST","code":{"id":"astnode100100700","name":"CB_Net.REST","type":"FunctionExpression","paramnames":[]}},"description":"<p>Static class to manage [REST]{@link https://en.wikipedia.org/wiki/Representational_state_transfer} services and related. It will return itself if it is tried to be instantiated.</p>","kind":"namespace","todo":["Think about accepting an onAbort function as option (with also default and permanent)."],"name":"REST","longname":"CB_Net.REST","memberof":"CB_Net","scope":"static"},{"comment":"/**\r\n\t * Callback returning an object that will be used for parsing the [REST]{@link https://en.wikipedia.org/wiki/Representational_state_transfer} route. The object returned should follow the same rules as the \"JSONObject\" parameter of the {@link CB_renderString} function.\r\n\t * @callback CB_Net.REST.actionProcess_ROUTE_WILDCARD_DATA\r\n\t * @param {string} actionName - The name of the [REST]{@link https://en.wikipedia.org/wiki/Representational_state_transfer} action being performed. It should be the name of an index defined in the {@link CB_Net.REST.actions} object whose value should be a {@link CB_Net.REST.actionProcess_ACTIONS} object.\r\n\t * @param {*} additionalData - Any additional data associated to the [REST]{@link https://en.wikipedia.org/wiki/Representational_state_transfer} action being performed (belongs to the \"additionalData\" parameter used when the {@link CB_Net.REST.actionProcess} function was called).\r\n\t * @returns {Object|null} It should return an object containing the wildcards that will be used to parse the [REST]{@link https://en.wikipedia.org/wiki/Representational_state_transfer} route of the action being performed. Return null in the case that we do not want to modify anything. The object returned (if any) will be used as the \"JSONObject\" parameter of the {@link CB_renderString} function (the first parameter will be the route which should be a string) when it is called by {@link CB_Net.REST.actionProcess} internally.\r\n\t */","meta":{"filename":"CB_Net_REST.js","lineno":57,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\net\\REST","code":{}},"description":"<p>Callback returning an object that will be used for parsing the [REST]{@link https://en.wikipedia.org/wiki/Representational_state_transfer} route. The object returned should follow the same rules as the &quot;JSONObject&quot; parameter of the {@link CB_renderString} function.</p>","kind":"typedef","name":"actionProcess_ROUTE_WILDCARD_DATA","type":{"names":["function"]},"params":[{"type":{"names":["string"]},"description":"<p>The name of the [REST]{@link https://en.wikipedia.org/wiki/Representational_state_transfer} action being performed. It should be the name of an index defined in the {@link CB_Net.REST.actions} object whose value should be a {@link CB_Net.REST.actionProcess_ACTIONS} object.</p>","name":"actionName"},{"type":{"names":["*"]},"description":"<p>Any additional data associated to the [REST]{@link https://en.wikipedia.org/wiki/Representational_state_transfer} action being performed (belongs to the &quot;additionalData&quot; parameter used when the {@link CB_Net.REST.actionProcess} function was called).</p>","name":"additionalData"}],"returns":[{"type":{"names":["Object","null"]},"description":"<p>It should return an object containing the wildcards that will be used to parse the [REST]{@link https://en.wikipedia.org/wiki/Representational_state_transfer} route of the action being performed. Return null in the case that we do not want to modify anything. The object returned (if any) will be used as the &quot;JSONObject&quot; parameter of the {@link CB_renderString} function (the first parameter will be the route which should be a string) when it is called by {@link CB_Net.REST.actionProcess} internally.</p>"}],"memberof":"CB_Net.REST","longname":"CB_Net.REST.actionProcess_ROUTE_WILDCARD_DATA","scope":"static"},{"comment":"/**\r\n\t * Callback returning an object containing the [HTTP headers]{@link https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers} which will be used as the \"headers\" parameter when the {@link CB_Net.XHR.callREST} function is called internally by {@link CB_Net.REST.actionProcess}.\r\n\t * @callback CB_Net.REST.actionProcess_HEADERS\r\n\t * @param {string} actionName - The name of the [REST]{@link https://en.wikipedia.org/wiki/Representational_state_transfer} action being performed. It should be the name of an index defined in the {@link CB_Net.REST.actions} object whose value should be a {@link CB_Net.REST.actionProcess_ACTIONS} object.\r\n\t * @param {*} additionalData - Any additional data associated to the [REST]{@link https://en.wikipedia.org/wiki/Representational_state_transfer} action being performed (belongs to the \"additionalData\" parameter used when the {@link CB_Net.REST.actionProcess} function was called).\r\n\t * @returns {CB_Net.XHR.HEADERS|null} It should return an object containing the [HTTP headers]{@link https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers}. Return null in the case that we do not want to add anything. The object returned (if any) will be used as the \"headers\" parameter of the {@link CB_Net.XHR.callREST} function when it is called by {@link CB_Net.REST.actionProcess} internally.\r\n\t */","meta":{"filename":"CB_Net_REST.js","lineno":128,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\net\\REST","code":{}},"description":"<p>Callback returning an object containing the [HTTP headers]{@link https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers} which will be used as the &quot;headers&quot; parameter when the {@link CB_Net.XHR.callREST} function is called internally by {@link CB_Net.REST.actionProcess}.</p>","kind":"typedef","name":"actionProcess_HEADERS","type":{"names":["function"]},"params":[{"type":{"names":["string"]},"description":"<p>The name of the [REST]{@link https://en.wikipedia.org/wiki/Representational_state_transfer} action being performed. It should be the name of an index defined in the {@link CB_Net.REST.actions} object whose value should be a {@link CB_Net.REST.actionProcess_ACTIONS} object.</p>","name":"actionName"},{"type":{"names":["*"]},"description":"<p>Any additional data associated to the [REST]{@link https://en.wikipedia.org/wiki/Representational_state_transfer} action being performed (belongs to the &quot;additionalData&quot; parameter used when the {@link CB_Net.REST.actionProcess} function was called).</p>","name":"additionalData"}],"returns":[{"type":{"names":["CB_Net.XHR.HEADERS","null"]},"description":"<p>It should return an object containing the [HTTP headers]{@link https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers}. Return null in the case that we do not want to add anything. The object returned (if any) will be used as the &quot;headers&quot; parameter of the {@link CB_Net.XHR.callREST} function when it is called by {@link CB_Net.REST.actionProcess} internally.</p>"}],"memberof":"CB_Net.REST","longname":"CB_Net.REST.actionProcess_HEADERS","scope":"static"},{"comment":"/**\r\n\t * Callback returning a string containing the URL (GET) data which will be used as the \"dataURL\" parameter when the {@link CB_Net.XHR.callREST} function is called internally by {@link CB_Net.REST.actionProcess}.\r\n\t * @callback CB_Net.REST.actionProcess_DATA_URL\r\n\t * @param {string} actionName - The name of the [REST]{@link https://en.wikipedia.org/wiki/Representational_state_transfer} action being performed. It should be the name of an index defined in the {@link CB_Net.REST.actions} object whose value should be a {@link CB_Net.REST.actionProcess_ACTIONS} object.\r\n\t * @param {*} additionalData - Any additional data associated to the [REST]{@link https://en.wikipedia.org/wiki/Representational_state_transfer} action being performed (belongs to the \"additionalData\" parameter used when the {@link CB_Net.REST.actionProcess} function was called).\r\n\t * @returns {string} It should return a string containing the URL (GET) data. Return an empty string in the case that we do not want to add anything. The string returned (if any) will be used as the \"dataURL\" parameter of the {@link CB_Net.XHR.callREST} function when it is called by {@link CB_Net.REST.actionProcess} internally.\r\n\t */","meta":{"filename":"CB_Net_REST.js","lineno":186,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\net\\REST","code":{}},"description":"<p>Callback returning a string containing the URL (GET) data which will be used as the &quot;dataURL&quot; parameter when the {@link CB_Net.XHR.callREST} function is called internally by {@link CB_Net.REST.actionProcess}.</p>","kind":"typedef","name":"actionProcess_DATA_URL","type":{"names":["function"]},"params":[{"type":{"names":["string"]},"description":"<p>The name of the [REST]{@link https://en.wikipedia.org/wiki/Representational_state_transfer} action being performed. It should be the name of an index defined in the {@link CB_Net.REST.actions} object whose value should be a {@link CB_Net.REST.actionProcess_ACTIONS} object.</p>","name":"actionName"},{"type":{"names":["*"]},"description":"<p>Any additional data associated to the [REST]{@link https://en.wikipedia.org/wiki/Representational_state_transfer} action being performed (belongs to the &quot;additionalData&quot; parameter used when the {@link CB_Net.REST.actionProcess} function was called).</p>","name":"additionalData"}],"returns":[{"type":{"names":["string"]},"description":"<p>It should return a string containing the URL (GET) data. Return an empty string in the case that we do not want to add anything. The string returned (if any) will be used as the &quot;dataURL&quot; parameter of the {@link CB_Net.XHR.callREST} function when it is called by {@link CB_Net.REST.actionProcess} internally.</p>"}],"memberof":"CB_Net.REST","longname":"CB_Net.REST.actionProcess_DATA_URL","scope":"static"},{"comment":"/**\r\n\t * Callback returning the data (string or object) which will be used as the \"data\" parameter when the {@link CB_Net.XHR.callREST} function is called internally by {@link CB_Net.REST.actionProcess}. The values returned by all functions that are mean to return the data should always return the same type of data (all strinngs or all objects) since {@link CB_Net.REST.actionProcess} will use the {@link CB_combineAutomatically} function to combine them.\r\n\t * @callback CB_Net.REST.actionProcess_DATA\r\n\t * @param {string} actionName - The name of the [REST]{@link https://en.wikipedia.org/wiki/Representational_state_transfer} action being performed. It should be the name of an index defined in the {@link CB_Net.REST.actions} object whose value should be a {@link CB_Net.REST.actionProcess_ACTIONS} object.\r\n\t * @param {*} additionalData - Any additional data associated to the [REST]{@link https://en.wikipedia.org/wiki/Representational_state_transfer} action being performed (belongs to the \"additionalData\" parameter used when the {@link CB_Net.REST.actionProcess} function was called).\r\n\t * @returns {string|Object} It should return a string or object containing the data. Return null or an empty string (recommended) in the case that we do not want to add anything. The value returned (if any) will be used as the \"data\" parameter of the {@link CB_Net.XHR.callREST} function when it is called by {@link CB_Net.REST.actionProcess} internally.\r\n\t */","meta":{"filename":"CB_Net_REST.js","lineno":221,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\net\\REST","code":{}},"description":"<p>Callback returning the data (string or object) which will be used as the &quot;data&quot; parameter when the {@link CB_Net.XHR.callREST} function is called internally by {@link CB_Net.REST.actionProcess}. The values returned by all functions that are mean to return the data should always return the same type of data (all strinngs or all objects) since {@link CB_Net.REST.actionProcess} will use the {@link CB_combineAutomatically} function to combine them.</p>","kind":"typedef","name":"actionProcess_DATA","type":{"names":["function"]},"params":[{"type":{"names":["string"]},"description":"<p>The name of the [REST]{@link https://en.wikipedia.org/wiki/Representational_state_transfer} action being performed. It should be the name of an index defined in the {@link CB_Net.REST.actions} object whose value should be a {@link CB_Net.REST.actionProcess_ACTIONS} object.</p>","name":"actionName"},{"type":{"names":["*"]},"description":"<p>Any additional data associated to the [REST]{@link https://en.wikipedia.org/wiki/Representational_state_transfer} action being performed (belongs to the &quot;additionalData&quot; parameter used when the {@link CB_Net.REST.actionProcess} function was called).</p>","name":"additionalData"}],"returns":[{"type":{"names":["string","Object"]},"description":"<p>It should return a string or object containing the data. Return null or an empty string (recommended) in the case that we do not want to add anything. The value returned (if any) will be used as the &quot;data&quot; parameter of the {@link CB_Net.XHR.callREST} function when it is called by {@link CB_Net.REST.actionProcess} internally.</p>"}],"memberof":"CB_Net.REST","longname":"CB_Net.REST.actionProcess_DATA","scope":"static"},{"comment":"/**\r\n\t * Callback that will be run before performing a [REST]{@link https://en.wikipedia.org/wiki/Representational_state_transfer} action and must return a boolean defining whether we want to continue performing the action (returning true) or not (returning false).\r\n\t * @callback CB_Net.REST.actionProcess_CALLBACK_BEFORE\r\n\t * @param {string} actionName - The name of the [REST]{@link https://en.wikipedia.org/wiki/Representational_state_transfer} action being performed. It should be the name of an index defined in the {@link CB_Net.REST.actions} object whose value should be a {@link CB_Net.REST.actionProcess_ACTIONS} object.\r\n\t * @param {*} additionalData - Any additional data associated to the [REST]{@link https://en.wikipedia.org/wiki/Representational_state_transfer} action being performed (belongs to the \"additionalData\" parameter used when the {@link CB_Net.REST.actionProcess} function was called).\r\n\t * @returns {boolean} It should return true in the case that we want to continue performing the current [REST]{@link https://en.wikipedia.org/wiki/Representational_state_transfer} action or false otherwise.\r\n\t */","meta":{"filename":"CB_Net_REST.js","lineno":274,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\net\\REST","code":{}},"description":"<p>Callback that will be run before performing a [REST]{@link https://en.wikipedia.org/wiki/Representational_state_transfer} action and must return a boolean defining whether we want to continue performing the action (returning true) or not (returning false).</p>","kind":"typedef","name":"actionProcess_CALLBACK_BEFORE","type":{"names":["function"]},"params":[{"type":{"names":["string"]},"description":"<p>The name of the [REST]{@link https://en.wikipedia.org/wiki/Representational_state_transfer} action being performed. It should be the name of an index defined in the {@link CB_Net.REST.actions} object whose value should be a {@link CB_Net.REST.actionProcess_ACTIONS} object.</p>","name":"actionName"},{"type":{"names":["*"]},"description":"<p>Any additional data associated to the [REST]{@link https://en.wikipedia.org/wiki/Representational_state_transfer} action being performed (belongs to the &quot;additionalData&quot; parameter used when the {@link CB_Net.REST.actionProcess} function was called).</p>","name":"additionalData"}],"returns":[{"type":{"names":["boolean"]},"description":"<p>It should return true in the case that we want to continue performing the current [REST]{@link https://en.wikipedia.org/wiki/Representational_state_transfer} action or false otherwise.</p>"}],"memberof":"CB_Net.REST","longname":"CB_Net.REST.actionProcess_CALLBACK_BEFORE","scope":"static"},{"comment":"/**\r\n\t * Callback that will be run when the [REST]{@link https://en.wikipedia.org/wiki/Representational_state_transfer} action has been performed successfully.\r\n\t * @callback CB_Net.REST.actionProcess_CALLBACK_OK\r\n\t * @param {string} actionName - The name of the [REST]{@link https://en.wikipedia.org/wiki/Representational_state_transfer} action being performed. It should be the name of an index defined in the {@link CB_Net.REST.actions} object whose value should be a {@link CB_Net.REST.actionProcess_ACTIONS} object.\r\n\t * @param {Object} [XHR] - The [XHR]{@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/XMLHttpRequest} object that has been used to perform the [REST]{@link https://en.wikipedia.org/wiki/Representational_state_transfer} action.\r\n\t * @param {CB_Net.REST.actionProcess_CALLBACK_ERROR} callbackError - The error callback function associated to the [REST]{@link https://en.wikipedia.org/wiki/Representational_state_transfer} action being performed, just in case we want to call it.\r\n\t * @param {*} additionalData - Any additional data associated to the [REST]{@link https://en.wikipedia.org/wiki/Representational_state_transfer} action being performed (belongs to the \"additionalData\" parameter used when the {@link CB_Net.REST.actionProcess} function was called).\r\n\t */","meta":{"filename":"CB_Net_REST.js","lineno":310,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\net\\REST","code":{}},"description":"<p>Callback that will be run when the [REST]{@link https://en.wikipedia.org/wiki/Representational_state_transfer} action has been performed successfully.</p>","kind":"typedef","name":"actionProcess_CALLBACK_OK","type":{"names":["function"]},"params":[{"type":{"names":["string"]},"description":"<p>The name of the [REST]{@link https://en.wikipedia.org/wiki/Representational_state_transfer} action being performed. It should be the name of an index defined in the {@link CB_Net.REST.actions} object whose value should be a {@link CB_Net.REST.actionProcess_ACTIONS} object.</p>","name":"actionName"},{"type":{"names":["Object"]},"optional":true,"description":"<p>The [XHR]{@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/XMLHttpRequest} object that has been used to perform the [REST]{@link https://en.wikipedia.org/wiki/Representational_state_transfer} action.</p>","name":"XHR"},{"type":{"names":["CB_Net.REST.actionProcess_CALLBACK_ERROR"]},"description":"<p>The error callback function associated to the [REST]{@link https://en.wikipedia.org/wiki/Representational_state_transfer} action being performed, just in case we want to call it.</p>","name":"callbackError"},{"type":{"names":["*"]},"description":"<p>Any additional data associated to the [REST]{@link https://en.wikipedia.org/wiki/Representational_state_transfer} action being performed (belongs to the &quot;additionalData&quot; parameter used when the {@link CB_Net.REST.actionProcess} function was called).</p>","name":"additionalData"}],"memberof":"CB_Net.REST","longname":"CB_Net.REST.actionProcess_CALLBACK_OK","scope":"static"},{"comment":"/**\r\n\t * Callback that will be run when the [REST]{@link https://en.wikipedia.org/wiki/Representational_state_transfer} action has been performed successfully.\r\n\t * @callback CB_Net.REST.actionProcess_CALLBACK_ERROR\r\n\t * @param {string} actionName - The name of the [REST]{@link https://en.wikipedia.org/wiki/Representational_state_transfer} action being performed. It should be the name of an index defined in the {@link CB_Net.REST.actions} object whose value should be a {@link CB_Net.REST.actionProcess_ACTIONS} object.\r\n\t * @param {Object} [XHR] - The [XHR]{@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/XMLHttpRequest} object that has been used to perform the [REST]{@link https://en.wikipedia.org/wiki/Representational_state_transfer} action.\r\n\t * @param {*} additionalData - Any additional data associated to the [REST]{@link https://en.wikipedia.org/wiki/Representational_state_transfer} action being performed (belongs to the \"additionalData\" parameter used when the {@link CB_Net.REST.actionProcess} function was called).\r\n\t */","meta":{"filename":"CB_Net_REST.js","lineno":346,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\net\\REST","code":{}},"description":"<p>Callback that will be run when the [REST]{@link https://en.wikipedia.org/wiki/Representational_state_transfer} action has been performed successfully.</p>","kind":"typedef","name":"actionProcess_CALLBACK_ERROR","type":{"names":["function"]},"params":[{"type":{"names":["string"]},"description":"<p>The name of the [REST]{@link https://en.wikipedia.org/wiki/Representational_state_transfer} action being performed. It should be the name of an index defined in the {@link CB_Net.REST.actions} object whose value should be a {@link CB_Net.REST.actionProcess_ACTIONS} object.</p>","name":"actionName"},{"type":{"names":["Object"]},"optional":true,"description":"<p>The [XHR]{@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/XMLHttpRequest} object that has been used to perform the [REST]{@link https://en.wikipedia.org/wiki/Representational_state_transfer} action.</p>","name":"XHR"},{"type":{"names":["*"]},"description":"<p>Any additional data associated to the [REST]{@link https://en.wikipedia.org/wiki/Representational_state_transfer} action being performed (belongs to the &quot;additionalData&quot; parameter used when the {@link CB_Net.REST.actionProcess} function was called).</p>","name":"additionalData"}],"memberof":"CB_Net.REST","longname":"CB_Net.REST.actionProcess_CALLBACK_ERROR","scope":"static"},{"comment":"/**\r\n\t * Object that represents a [REST]{@link https://en.wikipedia.org/wiki/Representational_state_transfer} action.\r\n\t * @memberof CB_Net.REST\r\n\t * @typedef {Object} CB_Net.REST.actionProcess_ACTIONS\r\n\t * @property {string} route - The [REST]{@link https://en.wikipedia.org/wiki/Representational_state_transfer} route (path). Belongs to the \"route\" parameter of the {@link CB_Net.XHR.callREST} function when it is called internally. It is mandatory.\r\n\t * @property {CB_Net.REST.actionProcess_CALLBACK_BEFORE} [callbackBefore={@link CB_Net.REST.callbackBefore_DEFAULT}] - Callback run before performing the [REST]{@link https://en.wikipedia.org/wiki/Representational_state_transfer} action which will decide whether to continue with it or not.\r\n\t * @property {boolean} [avoidProxy={@link CB_Net.REST.avoidProxy_DEFAULT}] - Belongs to the \"avoidProxy\" parameter of the {@link CB_Net.XHR.callREST} function when it is called internally.\r\n\t * @property {CB_Net.REST.actionProcess_ROUTE_WILDCARD_DATA} [routeWildcardData={@link CB_Net.REST.routeWildcardData_DEFAULT}] - Callback returning an object that will be used for parsing the [REST]{@link https://en.wikipedia.org/wiki/Representational_state_transfer} route. The object returned should follow the same rules as the \"JSONObject\" parameter of the {@link CB_renderString} function.\r\n\t * @property {CB_Net.REST.actionProcess_DATA_URL} [dataURL={@link CB_Net.REST.dataURL_DEFAULT}] - Belongs to the \"dataURL\" parameter of the {@link CB_Net.XHR.callREST} function when it is called internally.\r\n\t * @property {CB_Net.REST.actionProcess_DATA} [data={@link CB_Net.REST.data_DEFAULT}] - Belongs to the \"data\" parameter of the {@link CB_Net.XHR.callREST} function when it is called internally.\r\n\t * @property {CB_Net.REST.actionProcess_HEADERS} [headers={@link CB_Net.REST.headers_DEFAULT}] - Belongs to the \"headers\" parameter of the {@link CB_Net.XHR.callREST} function when it is called internally.\r\n\t * @property {array} [allowedSuccessStatuses={@link CB_Net.REST.allowedSuccessStatuses_DEFAULT}] - Belongs to the \"allowedSuccessStatuses\" parameter of the {@link CB_Net.XHR.callREST} function when it is called internally.\r\n\t * @property {CB_Net.REST.actionProcess_CALLBACK_ERROR} [callbackError={@link CB_Net.REST.callbackError_DEFAULT}] - Callback run when the [REST]{@link https://en.wikipedia.org/wiki/Representational_state_transfer} action has not been performed successfully.\r\n\t * @property {CB_Net.REST.actionProcess_CALLBACK_OK} [callbackOk={@link CB_Net.REST.callbackOk_DEFAULT}] - Callback run when the [REST]{@link https://en.wikipedia.org/wiki/Representational_state_transfer} action has been performed successfully.\r\n\t * @property {string} [serverURL={@link CB_Net.REST.SERVER_URL_DEFAULT}] - Belongs to the \"serverURL\" parameter of the {@link CB_Net.XHR.callREST} function when it is called internally.\r\n\t * @property {string} [method={@link CB_Net.REST.method_DEFAULT}] - Belongs to the \"method\" parameter of the {@link CB_Net.XHR.callREST} function when it is called internally.\r\n\t * @property {string} [responseType={@link CB_Net.REST.responseType_DEFAULT}] - Belongs to the \"responseType\" parameter of the {@link CB_Net.XHR.callREST} function when it is called internally and will be sent even it is null. If it is undefined, it will use the value of {@link CB_Net.REST.responseType_DEFAULT} instead.\r\n\t * @property {boolean} [forceJSON={@link CB_Net.REST.forceJSON_DEFAULT}] - Belongs to the \"forceJSON\" parameter of the {@link CB_Net.XHR.callREST} function when it is called internally and will be sent even it is null. If it is undefined, it will use the value of {@link CB_Net.REST.forceJSON_DEFAULT} instead.\r\n\t * @property {boolean} [getHeaders={@link CB_Net.REST.getHeaders_DEFAULT}] - Belongs to the \"getHeaders\" parameter of the {@link CB_Net.XHR.callREST} function when it is called internally and will be sent even it is null. If it is undefined, it will use the value of {@link CB_Net.REST.getHeaders_DEFAULT} instead.\r\n\t * @property {boolean} [getHeadersOneDimension={@link CB_Net.REST.getHeadersOneDimension_DEFAULT}] - Belongs to the \"getHeadersOneDimension\" parameter of the {@link CB_Net.XHR.callREST} function when it is called internally and will be sent even it is null. If it is undefined, it will use the value of {@link CB_Net.REST.getHeadersOneDimension_DEFAULT} instead.\r\n\t * @property {boolean} [getHeadersOneDimensionValues={@link CB_Net.REST.getHeadersOneDimensionValues_DEFAULT}] - Belongs to the \"getHeadersOneDimensionValues\" parameter of the {@link CB_Net.XHR.callREST} function when it is called internally and will be sent even it is null. If it is undefined, it will use the value of {@link CB_Net.REST.getHeadersOneDimensionValues_DEFAULT} instead.\r\n\t * @property {boolean} [transparentStatus={@link CB_Net.REST.transparentStatus_DEFAULT}] - Belongs to the \"transparentStatus\" parameter of the {@link CB_Net.XHR.callREST} function when it is called internally and will be sent even it is null. If it is undefined, it will use the value of {@link CB_Net.REST.transparentStatus_DEFAULT} instead.\r\n\t * @property {boolean} [transparentHeaders={@link CB_Net.REST.transparentHeaders_DEFAULT}] - Belongs to the \"transparentHeaders\" parameter of the {@link CB_Net.XHR.callREST} function when it is called internally and will be sent even it is null. If it is undefined, it will use the value of {@link CB_Net.REST.transparentHeaders_DEFAULT} instead.\r\n\t */","meta":{"filename":"CB_Net_REST.js","lineno":381,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\net\\REST","code":{}},"description":"<p>Object that represents a [REST]{@link https://en.wikipedia.org/wiki/Representational_state_transfer} action.</p>","memberof":"CB_Net.REST","kind":"typedef","name":"actionProcess_ACTIONS","type":{"names":["Object"]},"properties":[{"type":{"names":["string"]},"description":"<p>The [REST]{@link https://en.wikipedia.org/wiki/Representational_state_transfer} route (path). Belongs to the &quot;route&quot; parameter of the {@link CB_Net.XHR.callREST} function when it is called internally. It is mandatory.</p>","name":"route"},{"type":{"names":["CB_Net.REST.actionProcess_CALLBACK_BEFORE"]},"optional":true,"defaultvalue":"{@link CB_Net.REST.callbackBefore_DEFAULT}","description":"<p>Callback run before performing the [REST]{@link https://en.wikipedia.org/wiki/Representational_state_transfer} action which will decide whether to continue with it or not.</p>","name":"callbackBefore"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":"{@link CB_Net.REST.avoidProxy_DEFAULT}","description":"<p>Belongs to the &quot;avoidProxy&quot; parameter of the {@link CB_Net.XHR.callREST} function when it is called internally.</p>","name":"avoidProxy"},{"type":{"names":["CB_Net.REST.actionProcess_ROUTE_WILDCARD_DATA"]},"optional":true,"defaultvalue":"{@link CB_Net.REST.routeWildcardData_DEFAULT}","description":"<p>Callback returning an object that will be used for parsing the [REST]{@link https://en.wikipedia.org/wiki/Representational_state_transfer} route. The object returned should follow the same rules as the &quot;JSONObject&quot; parameter of the {@link CB_renderString} function.</p>","name":"routeWildcardData"},{"type":{"names":["CB_Net.REST.actionProcess_DATA_URL"]},"optional":true,"defaultvalue":"{@link CB_Net.REST.dataURL_DEFAULT}","description":"<p>Belongs to the &quot;dataURL&quot; parameter of the {@link CB_Net.XHR.callREST} function when it is called internally.</p>","name":"dataURL"},{"type":{"names":["CB_Net.REST.actionProcess_DATA"]},"optional":true,"defaultvalue":"{@link CB_Net.REST.data_DEFAULT}","description":"<p>Belongs to the &quot;data&quot; parameter of the {@link CB_Net.XHR.callREST} function when it is called internally.</p>","name":"data"},{"type":{"names":["CB_Net.REST.actionProcess_HEADERS"]},"optional":true,"defaultvalue":"{@link CB_Net.REST.headers_DEFAULT}","description":"<p>Belongs to the &quot;headers&quot; parameter of the {@link CB_Net.XHR.callREST} function when it is called internally.</p>","name":"headers"},{"type":{"names":["array"]},"optional":true,"defaultvalue":"{@link CB_Net.REST.allowedSuccessStatuses_DEFAULT}","description":"<p>Belongs to the &quot;allowedSuccessStatuses&quot; parameter of the {@link CB_Net.XHR.callREST} function when it is called internally.</p>","name":"allowedSuccessStatuses"},{"type":{"names":["CB_Net.REST.actionProcess_CALLBACK_ERROR"]},"optional":true,"defaultvalue":"{@link CB_Net.REST.callbackError_DEFAULT}","description":"<p>Callback run when the [REST]{@link https://en.wikipedia.org/wiki/Representational_state_transfer} action has not been performed successfully.</p>","name":"callbackError"},{"type":{"names":["CB_Net.REST.actionProcess_CALLBACK_OK"]},"optional":true,"defaultvalue":"{@link CB_Net.REST.callbackOk_DEFAULT}","description":"<p>Callback run when the [REST]{@link https://en.wikipedia.org/wiki/Representational_state_transfer} action has been performed successfully.</p>","name":"callbackOk"},{"type":{"names":["string"]},"optional":true,"defaultvalue":"{@link CB_Net.REST.SERVER_URL_DEFAULT}","description":"<p>Belongs to the &quot;serverURL&quot; parameter of the {@link CB_Net.XHR.callREST} function when it is called internally.</p>","name":"serverURL"},{"type":{"names":["string"]},"optional":true,"defaultvalue":"{@link CB_Net.REST.method_DEFAULT}","description":"<p>Belongs to the &quot;method&quot; parameter of the {@link CB_Net.XHR.callREST} function when it is called internally.</p>","name":"method"},{"type":{"names":["string"]},"optional":true,"defaultvalue":"{@link CB_Net.REST.responseType_DEFAULT}","description":"<p>Belongs to the &quot;responseType&quot; parameter of the {@link CB_Net.XHR.callREST} function when it is called internally and will be sent even it is null. If it is undefined, it will use the value of {@link CB_Net.REST.responseType_DEFAULT} instead.</p>","name":"responseType"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":"{@link CB_Net.REST.forceJSON_DEFAULT}","description":"<p>Belongs to the &quot;forceJSON&quot; parameter of the {@link CB_Net.XHR.callREST} function when it is called internally and will be sent even it is null. If it is undefined, it will use the value of {@link CB_Net.REST.forceJSON_DEFAULT} instead.</p>","name":"forceJSON"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":"{@link CB_Net.REST.getHeaders_DEFAULT}","description":"<p>Belongs to the &quot;getHeaders&quot; parameter of the {@link CB_Net.XHR.callREST} function when it is called internally and will be sent even it is null. If it is undefined, it will use the value of {@link CB_Net.REST.getHeaders_DEFAULT} instead.</p>","name":"getHeaders"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":"{@link CB_Net.REST.getHeadersOneDimension_DEFAULT}","description":"<p>Belongs to the &quot;getHeadersOneDimension&quot; parameter of the {@link CB_Net.XHR.callREST} function when it is called internally and will be sent even it is null. If it is undefined, it will use the value of {@link CB_Net.REST.getHeadersOneDimension_DEFAULT} instead.</p>","name":"getHeadersOneDimension"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":"{@link CB_Net.REST.getHeadersOneDimensionValues_DEFAULT}","description":"<p>Belongs to the &quot;getHeadersOneDimensionValues&quot; parameter of the {@link CB_Net.XHR.callREST} function when it is called internally and will be sent even it is null. If it is undefined, it will use the value of {@link CB_Net.REST.getHeadersOneDimensionValues_DEFAULT} instead.</p>","name":"getHeadersOneDimensionValues"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":"{@link CB_Net.REST.transparentStatus_DEFAULT}","description":"<p>Belongs to the &quot;transparentStatus&quot; parameter of the {@link CB_Net.XHR.callREST} function when it is called internally and will be sent even it is null. If it is undefined, it will use the value of {@link CB_Net.REST.transparentStatus_DEFAULT} instead.</p>","name":"transparentStatus"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":"{@link CB_Net.REST.transparentHeaders_DEFAULT}","description":"<p>Belongs to the &quot;transparentHeaders&quot; parameter of the {@link CB_Net.XHR.callREST} function when it is called internally and will be sent even it is null. If it is undefined, it will use the value of {@link CB_Net.REST.transparentHeaders_DEFAULT} instead.</p>","name":"transparentHeaders"}],"longname":"CB_Net.REST.actionProcess_ACTIONS","scope":"static"},{"comment":"/**\r\n\t * Processes a desired [REST]{@link https://en.wikipedia.org/wiki/Representational_state_transfer} action (which must be previously defined in the {@link CB_Net.REST.actions} object) by its name.\r\n\t\t<br />\r\n\t\tNOTE: Edit the \"CB_proxy.config.php\" file to configure the default proxy (set by default in the value of the {@link CB_Configuration.CrossBase.CB_Net_XHR_PROXY_URL} property). Apart from configuring it, adding some security measures is highly recommended.\r\n\t\tHave in mind that, for safety reasons, the default proxy only allows to request the URLs defined in the \"$allowedURLs\" array in the \"CB_proxy.config.php\" file. Just edit it to allow other URLs.\r\n\t * @function\r\n\t * @param {string} actionName - The name of the [REST]{@link https://en.wikipedia.org/wiki/Representational_state_transfer} action that we want to perform. It should be the name of an index defined in the {@link CB_Net.REST.actions} object whose value should be a {@link CB_Net.REST.actionProcess_ACTIONS} object.\r\n\t * @param {*} [additionalData] - Any additional data desired. It will be passed as a parameter when different callbacks are called internally, as their \"additionalData\" parameter.\r\n\t * @param {Object} [XHR] - Used for the \"XHR\" parameter of the {@link CB_Net.XHR.callREST} function when it is called internally.\r\n\t * @param {string} [serverURL] - Used for the \"serverURL\" parameter of the {@link CB_Net.XHR.callREST} function when it is called internally. If provided, the value defined in the \"serverURL\" parameter of the [REST]{@link https://en.wikipedia.org/wiki/Representational_state_transfer} action being performed (if any) will be ignored.\r\n\t * @param {boolean} [avoidProxy] - Used for the \"avoidProxy\" parameter of the {@link CB_Net.XHR.callREST} function when it is called internally. If provided, the value defined in the \"avoidProxy\" parameter of the [REST]{@link https://en.wikipedia.org/wiki/Representational_state_transfer} action being performed (if any) and the default one defined in {@link CB_Net.REST.avoidProxy_DEFAULT} (if any) will be both ignored.\r\n\t * @returns {Object|null} Returns null if the {@link CB_Net.XHR.callREST} function is not called at all (because [XHR]{@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/XMLHttpRequest} is not supported or the [REST]{@link https://en.wikipedia.org/wiki/Representational_state_transfer} action object cannot be found or the route is not well defined or the \"callbackBefore\" returns false, etc.). Otherwise, returns the same that the {@link CB_Net.XHR.callREST} function returns (called internally).\r\n\t */","meta":{"range":[33171,42270],"filename":"CB_Net_REST.js","lineno":444,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\net\\REST","code":{"id":"astnode100101045","name":"CB_Net.REST.actionProcess","type":"FunctionExpression","paramnames":["actionName","additionalData","XHR","serverURL","avoidProxy"]},"vars":{"callbackBeforeReturn":"CB_Net.REST.actionProcess~callbackBeforeReturn","serverURL":"CB_Net.REST.actionProcess~serverURL","avoidProxy":"CB_Net.REST.actionProcess~avoidProxy","route":"CB_Net.REST.actionProcess~route","wildcardData":"CB_Net.REST.actionProcess~wildcardData","dataURL":"CB_Net.REST.actionProcess~dataURL","dataURLPermanent":"CB_Net.REST.actionProcess~dataURLPermanent","data":"CB_Net.REST.actionProcess~data","headers":"CB_Net.REST.actionProcess~headers","allowedSuccessStatuses":"CB_Net.REST.actionProcess~allowedSuccessStatuses","callbackError":"CB_Net.REST.actionProcess~callbackError","":null,"callbackErrorWrapper":"CB_Net.REST.actionProcess~callbackErrorWrapper","callbackOkWrapper":"CB_Net.REST.actionProcess~callbackOkWrapper"}},"description":"<p>Processes a desired [REST]{@link https://en.wikipedia.org/wiki/Representational_state_transfer} action (which must be previously defined in the {@link CB_Net.REST.actions} object) by its name.<br> <br /><br> NOTE: Edit the &quot;CB_proxy.config.php&quot; file to configure the default proxy (set by default in the value of the {@link CB_Configuration.CrossBase.CB_Net_XHR_PROXY_URL} property). Apart from configuring it, adding some security measures is highly recommended.<br> Have in mind that, for safety reasons, the default proxy only allows to request the URLs defined in the &quot;$allowedURLs&quot; array in the &quot;CB_proxy.config.php&quot; file. Just edit it to allow other URLs.</p>","kind":"function","params":[{"type":{"names":["string"]},"description":"<p>The name of the [REST]{@link https://en.wikipedia.org/wiki/Representational_state_transfer} action that we want to perform. It should be the name of an index defined in the {@link CB_Net.REST.actions} object whose value should be a {@link CB_Net.REST.actionProcess_ACTIONS} object.</p>","name":"actionName"},{"type":{"names":["*"]},"optional":true,"description":"<p>Any additional data desired. It will be passed as a parameter when different callbacks are called internally, as their &quot;additionalData&quot; parameter.</p>","name":"additionalData"},{"type":{"names":["Object"]},"optional":true,"description":"<p>Used for the &quot;XHR&quot; parameter of the {@link CB_Net.XHR.callREST} function when it is called internally.</p>","name":"XHR"},{"type":{"names":["string"]},"optional":true,"description":"<p>Used for the &quot;serverURL&quot; parameter of the {@link CB_Net.XHR.callREST} function when it is called internally. If provided, the value defined in the &quot;serverURL&quot; parameter of the [REST]{@link https://en.wikipedia.org/wiki/Representational_state_transfer} action being performed (if any) will be ignored.</p>","name":"serverURL"},{"type":{"names":["boolean"]},"optional":true,"description":"<p>Used for the &quot;avoidProxy&quot; parameter of the {@link CB_Net.XHR.callREST} function when it is called internally. If provided, the value defined in the &quot;avoidProxy&quot; parameter of the [REST]{@link https://en.wikipedia.org/wiki/Representational_state_transfer} action being performed (if any) and the default one defined in {@link CB_Net.REST.avoidProxy_DEFAULT} (if any) will be both ignored.</p>","name":"avoidProxy"}],"returns":[{"type":{"names":["Object","null"]},"description":"<p>Returns null if the {@link CB_Net.XHR.callREST} function is not called at all (because [XHR]{@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/XMLHttpRequest} is not supported or the [REST]{@link https://en.wikipedia.org/wiki/Representational_state_transfer} action object cannot be found or the route is not well defined or the &quot;callbackBefore&quot; returns false, etc.). Otherwise, returns the same that the {@link CB_Net.XHR.callREST} function returns (called internally).</p>"}],"name":"actionProcess","longname":"CB_Net.REST.actionProcess","memberof":"CB_Net.REST","scope":"static"},{"comment":"/**\r\n\t * Cancels a [REST]{@link https://en.wikipedia.org/wiki/Representational_state_transfer} action (by its [AJAX]{@link https://en.wikipedia.org/wiki/Ajax_(programming)}/[XHR]{@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/XMLHttpRequest} request associated) by executing the \"abort\" method of the given [XHR]{@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/XMLHttpRequest} object (if available) and sets its \"aborted\" property to true if succeeds. When a [REST]{@link https://en.wikipedia.org/wiki/Representational_state_transfer} action is aborted, the callbackOk functions associated (if any) will not be called (unless they have been called already).\r\n\t * @function\r\n\t * @param {Object} XHR - The [XHR]{@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/XMLHttpRequest} object that we want to abort.\r\n\t * @returns {boolean} Returns true if the \"abort\" method of the given [XHR]{@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/XMLHttpRequest} object could be called and the \"aborted\" property was set to true. Otherwise, returns false.\r\n\t */","meta":{"range":[43418,43617],"filename":"CB_Net_REST.js","lineno":601,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\net\\REST","code":{"id":"astnode100102280","name":"CB_Net.REST.actionAbort","type":"FunctionExpression","paramnames":["XHR"]},"vars":{"XHR.aborted":"XHR.aborted"}},"description":"<p>Cancels a [REST]{@link https://en.wikipedia.org/wiki/Representational_state_transfer} action (by its [AJAX]{@link https://en.wikipedia.org/wiki/Ajax_(programming)}/[XHR]{@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/XMLHttpRequest} request associated) by executing the &quot;abort&quot; method of the given [XHR]{@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/XMLHttpRequest} object (if available) and sets its &quot;aborted&quot; property to true if succeeds. When a [REST]{@link https://en.wikipedia.org/wiki/Representational_state_transfer} action is aborted, the callbackOk functions associated (if any) will not be called (unless they have been called already).</p>","kind":"function","params":[{"type":{"names":["Object"]},"description":"<p>The [XHR]{@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/XMLHttpRequest} object that we want to abort.</p>","name":"XHR"}],"returns":[{"type":{"names":["boolean"]},"description":"<p>Returns true if the &quot;abort&quot; method of the given [XHR]{@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/XMLHttpRequest} object could be called and the &quot;aborted&quot; property was set to true. Otherwise, returns false.</p>"}],"name":"actionAbort","longname":"CB_Net.REST.actionAbort","memberof":"CB_Net.REST","scope":"static"},{"comment":"/**\r\n\t * Tries to revert the abortion of a [REST]{@link https://en.wikipedia.org/wiki/Representational_state_transfer} action (by its [AJAX]{@link https://en.wikipedia.org/wiki/Ajax_(programming)}/[XHR]{@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/XMLHttpRequest} request associated) by setting the \"aborted\" property of the given [XHR]{@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/XMLHttpRequest} object to false. If this function is called before the \"callbackOk\" functions associated to the [REST]{@link https://en.wikipedia.org/wiki/Representational_state_transfer} action (if any) are called, they could finally be called perhaps (depending on each case, could be different). Have in mind that, after calling {@link CB_Net.REST.actionAbort}, the \"abort\" method of the [XHR]{@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/XMLHttpRequest} object was probably called already (if available).\r\n\t * @function\r\n\t * @param {Object} XHR - The [XHR]{@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/XMLHttpRequest} object whose abortion we want to cancel.\r\n\t * @returns {boolean} Returns true if the \"aborted\" property was set to false. Otherwise, returns false.\r\n\t */","meta":{"range":[44887,45044],"filename":"CB_Net_REST.js","lineno":614,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\net\\REST","code":{"id":"astnode100102322","name":"CB_Net.REST.actionAbortCancel","type":"FunctionExpression","paramnames":["XHR"]},"vars":{"XHR.aborted":"XHR.aborted"}},"description":"<p>Tries to revert the abortion of a [REST]{@link https://en.wikipedia.org/wiki/Representational_state_transfer} action (by its [AJAX]{@link https://en.wikipedia.org/wiki/Ajax_(programming)}/[XHR]{@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/XMLHttpRequest} request associated) by setting the &quot;aborted&quot; property of the given [XHR]{@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/XMLHttpRequest} object to false. If this function is called before the &quot;callbackOk&quot; functions associated to the [REST]{@link https://en.wikipedia.org/wiki/Representational_state_transfer} action (if any) are called, they could finally be called perhaps (depending on each case, could be different). Have in mind that, after calling {@link CB_Net.REST.actionAbort}, the &quot;abort&quot; method of the [XHR]{@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/XMLHttpRequest} object was probably called already (if available).</p>","kind":"function","params":[{"type":{"names":["Object"]},"description":"<p>The [XHR]{@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/XMLHttpRequest} object whose abortion we want to cancel.</p>","name":"XHR"}],"returns":[{"type":{"names":["boolean"]},"description":"<p>Returns true if the &quot;aborted&quot; property was set to false. Otherwise, returns false.</p>"}],"name":"actionAbortCancel","longname":"CB_Net.REST.actionAbortCancel","memberof":"CB_Net.REST","scope":"static"},{"comment":"/**\r\n\t * Returns whether a [REST]{@link https://en.wikipedia.org/wiki/Representational_state_transfer} action is aborted or not (by its [AJAX]{@link https://en.wikipedia.org/wiki/Ajax_(programming)}/[XHR]{@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/XMLHttpRequest} request associated).\r\n\t * @function\r\n\t * @param {Object} XHR - The [XHR]{@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/XMLHttpRequest} object that we want to check.\r\n\t * @returns {boolean} Returns true if the \"aborted\" property is set to true. Otherwise, returns false.\r\n\t */","meta":{"range":[45647,45776],"filename":"CB_Net_REST.js","lineno":627,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\net\\REST","code":{"id":"astnode100102352","name":"CB_Net.REST.actionIsAborted","type":"FunctionExpression","paramnames":["XHR"]}},"description":"<p>Returns whether a [REST]{@link https://en.wikipedia.org/wiki/Representational_state_transfer} action is aborted or not (by its [AJAX]{@link https://en.wikipedia.org/wiki/Ajax_(programming)}/[XHR]{@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/XMLHttpRequest} request associated).</p>","kind":"function","params":[{"type":{"names":["Object"]},"description":"<p>The [XHR]{@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/XMLHttpRequest} object that we want to check.</p>","name":"XHR"}],"returns":[{"type":{"names":["boolean"]},"description":"<p>Returns true if the &quot;aborted&quot; property is set to true. Otherwise, returns false.</p>"}],"name":"actionIsAborted","longname":"CB_Net.REST.actionIsAborted","memberof":"CB_Net.REST","scope":"static"},{"comment":"/**\r\n * @file Sockets and related management. Contains the {@link CB_Net.Sockets} static class.\r\n * @author Joan Alba Maldonado <workindalian@gmail.com>\r\n */","meta":{"filename":"CB_Net_Sockets.js","lineno":1,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\net\\sockets","code":{}},"name":"CrossBase/net/sockets/CB_Net_Sockets.js","kind":"file","description":"<p>Sockets and related management. Contains the {@link CB_Net.Sockets} static class.</p>","preserveName":true,"author":["Joan Alba Maldonado <workindalian@gmail.com>"],"longname":"CrossBase/net/sockets/CB_Net_Sockets.js","scope":"global"},{"comment":"/**\r\n * Static class to manage sockets and related. It will return itself if it is tried to be instantiated. It uses [SockJS-client]{@link https://github.com/sockjs/sockjs-client}.\r\n * @namespace\r\n */","meta":{"range":[454,508],"filename":"CB_Net_Sockets.js","lineno":13,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\net\\sockets","code":{"id":"astnode100102392","name":"CB_Net.Sockets","type":"FunctionExpression","paramnames":[]}},"description":"<p>Static class to manage sockets and related. It will return itself if it is tried to be instantiated. It uses [SockJS-client]{@link https://github.com/sockjs/sockjs-client}.</p>","kind":"namespace","name":"Sockets","longname":"CB_Net.Sockets","memberof":"CB_Net","scope":"static"},{"comment":"/**\r\n\t Property that contains the functions and properties related with the [SockJS client]{@link https://github.com/sockjs/sockjs-client} library.\r\n\t * @namespace CB_Net.Sockets.SockJS\r\n\t */","meta":{"filename":"CB_Net_Sockets.js","lineno":17,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\net\\sockets","code":{}},"description":"<p>Property that contains the functions and properties related with the [SockJS client]{@link https://github.com/sockjs/sockjs-client} library.</p>","kind":"namespace","name":"SockJS","memberof":"CB_Net.Sockets","longname":"CB_Net.Sockets.SockJS","scope":"static"},{"comment":"/**\r\n\t * Alias for {@link CB_Net.Sockets.SockJS.listen}.\r\n\t * @function CB_Net.Sockets.SockJS.open\r\n\t * @see {@link CB_Net.Sockets.SockJS.listen}\r\n\t */","meta":{"filename":"CB_Net_Sockets.js","lineno":47,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\net\\sockets","code":{}},"description":"<p>Alias for {@link CB_Net.Sockets.SockJS.listen}.</p>","kind":"function","name":"open","see":["{@link CB_Net.Sockets.SockJS.listen}"],"memberof":"CB_Net.Sockets.SockJS","longname":"CB_Net.Sockets.SockJS.open","scope":"static"},{"comment":"/**\r\n\t * Creates the websockets object and sets the listeners. Using the [SockJS client]{@link https://github.com/sockjs/sockjs-client} library internally.\r\n\t * @function\r\n\t * @param {string} serverURL - The URL of the SockJS server. This will be used as the first parameter when it calls the constructor of SockJS internally. Following the same rules as in the [SockJS client]{@link https://github.com/sockjs/sockjs-client} library documentation (the parameter is called \"url\").\r\n\t * @param {function} [onOpen] - Function for the event \"onopen\" used by the SockJS object. Following the same rules as in the [SockJS client]{@link https://github.com/sockjs/sockjs-client} library documentation.\r\n\t * @param {function} [onClose] - Function for the event \"onclose\" used by the SockJS object. Following the same rules as in the [SockJS client]{@link https://github.com/sockjs/sockjs-client} library documentation.\r\n\t * @param {function} [onMessage] - Function for the event \"onmessage\" used by the SockJS object. Following the same rules as in the [SockJS client]{@link https://github.com/sockjs/sockjs-client} library documentation.\r\n\t * @param {function} [onError] - Function for the event \"onerror\" used by the SockJS object. Following the same rules as in the [SockJS client]{@link https://github.com/sockjs/sockjs-client} library documentation.\r\n\t * @param {Object} [options] - The desired options for the SockJS object. This will be used as the third parameter when it calls the constructor of SockJS internally. Following the same rules as in the [SockJS client]{@link https://github.com/sockjs/sockjs-client} library documentation (the parameter is called \"options\").\r\n\t * @param {array} [protocols] - This will be used as the second parameter when it calls the constructor of SockJS internally. Following the same rules as in the [SockJS client]{@link https://github.com/sockjs/sockjs-client} library documentation (the parameter is called \"_reserved\").\r\n\t * @returns {Object|null} Returns a SockJS object. Read the [SockJS client]{@link https://github.com/sockjs/sockjs-client} library documentation for more information. In the case of error, returns null.\r\n\t */","meta":{"range":[3705,5080],"filename":"CB_Net_Sockets.js","lineno":64,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\net\\sockets","code":{"id":"astnode100102462","name":"CB_Net.Sockets.SockJS.listen","type":"FunctionExpression","paramnames":["serverURL","onOpen","onClose","onMessage","onError","options","protocols"]},"vars":{"websocket":"CB_Net.Sockets.SockJS.listen~websocket","websocket.onopen":"CB_Net.Sockets.SockJS.listen~websocket.onopen","websocket.onclose":"CB_Net.Sockets.SockJS.listen~websocket.onclose","websocket.onmessage":"CB_Net.Sockets.SockJS.listen~websocket.onmessage","websocket.onerror":"CB_Net.Sockets.SockJS.listen~websocket.onerror","CB_Net.Sockets.SockJS.websocketLast":"CB_Net.Sockets.SockJS.websocketLast"}},"description":"<p>Creates the websockets object and sets the listeners. Using the [SockJS client]{@link https://github.com/sockjs/sockjs-client} library internally.</p>","kind":"function","params":[{"type":{"names":["string"]},"description":"<p>The URL of the SockJS server. This will be used as the first parameter when it calls the constructor of SockJS internally. Following the same rules as in the [SockJS client]{@link https://github.com/sockjs/sockjs-client} library documentation (the parameter is called &quot;url&quot;).</p>","name":"serverURL"},{"type":{"names":["function"]},"optional":true,"description":"<p>Function for the event &quot;onopen&quot; used by the SockJS object. Following the same rules as in the [SockJS client]{@link https://github.com/sockjs/sockjs-client} library documentation.</p>","name":"onOpen"},{"type":{"names":["function"]},"optional":true,"description":"<p>Function for the event &quot;onclose&quot; used by the SockJS object. Following the same rules as in the [SockJS client]{@link https://github.com/sockjs/sockjs-client} library documentation.</p>","name":"onClose"},{"type":{"names":["function"]},"optional":true,"description":"<p>Function for the event &quot;onmessage&quot; used by the SockJS object. Following the same rules as in the [SockJS client]{@link https://github.com/sockjs/sockjs-client} library documentation.</p>","name":"onMessage"},{"type":{"names":["function"]},"optional":true,"description":"<p>Function for the event &quot;onerror&quot; used by the SockJS object. Following the same rules as in the [SockJS client]{@link https://github.com/sockjs/sockjs-client} library documentation.</p>","name":"onError"},{"type":{"names":["Object"]},"optional":true,"description":"<p>The desired options for the SockJS object. This will be used as the third parameter when it calls the constructor of SockJS internally. Following the same rules as in the [SockJS client]{@link https://github.com/sockjs/sockjs-client} library documentation (the parameter is called &quot;options&quot;).</p>","name":"options"},{"type":{"names":["array"]},"optional":true,"description":"<p>This will be used as the second parameter when it calls the constructor of SockJS internally. Following the same rules as in the [SockJS client]{@link https://github.com/sockjs/sockjs-client} library documentation (the parameter is called &quot;_reserved&quot;).</p>","name":"protocols"}],"returns":[{"type":{"names":["Object","null"]},"description":"<p>Returns a SockJS object. Read the [SockJS client]{@link https://github.com/sockjs/sockjs-client} library documentation for more information. In the case of error, returns null.</p>"}],"name":"listen","longname":"CB_Net.Sockets.SockJS.listen","memberof":"CB_Net.Sockets.SockJS","scope":"static"},{"comment":"/**\r\n\t * Sends a websockets message. Using the [SockJS client]{@link https://github.com/sockjs/sockjs-client} library internally.\r\n\t * @function\r\n\t * @param {string} message - The message that we want to send. This will be used as the first and unique parameter when it calls the \"send\" function of the SockJS object internally. Following the same rules as in the [SockJS client]{@link https://github.com/sockjs/sockjs-client} library documentation.\r\n\t * @param {function} [websocket={@link CB_Net.Sockets.SockJS.websocketLast}] - The SockJS object that we want to use. If not provided, it will try to use the last one created (if any) which is stored in {@link CB_Net.Sockets.SockJS.websocketLast}.\r\n\t * @param {function} [onError] - Function for the event \"onerror\" used by the SockJS object. If provided, it will replace the previous one (if any). Following the same rules as in the [SockJS client]{@link https://github.com/sockjs/sockjs-client} library documentation.\r\n\t * @returns {undefined|false} Returns undefined (the same as the \"send\" function of the SockJS object) if the SockJS has been used or false otherwise.\r\n\t */","meta":{"range":[6226,7057],"filename":"CB_Net_Sockets.js","lineno":101,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\net\\sockets","code":{"id":"astnode100102597","name":"CB_Net.Sockets.SockJS.send","type":"FunctionExpression","paramnames":["message","websocket","onError"]},"vars":{"websocket":"CB_Net.Sockets.SockJS.send~websocket","websocket.onerror":"CB_Net.Sockets.SockJS.send~websocket.onerror","returnValue":"CB_Net.Sockets.SockJS.send~returnValue"}},"description":"<p>Sends a websockets message. Using the [SockJS client]{@link https://github.com/sockjs/sockjs-client} library internally.</p>","kind":"function","params":[{"type":{"names":["string"]},"description":"<p>The message that we want to send. This will be used as the first and unique parameter when it calls the &quot;send&quot; function of the SockJS object internally. Following the same rules as in the [SockJS client]{@link https://github.com/sockjs/sockjs-client} library documentation.</p>","name":"message"},{"type":{"names":["function"]},"optional":true,"defaultvalue":"{@link CB_Net.Sockets.SockJS.websocketLast}","description":"<p>The SockJS object that we want to use. If not provided, it will try to use the last one created (if any) which is stored in {@link CB_Net.Sockets.SockJS.websocketLast}.</p>","name":"websocket"},{"type":{"names":["function"]},"optional":true,"description":"<p>Function for the event &quot;onerror&quot; used by the SockJS object. If provided, it will replace the previous one (if any). Following the same rules as in the [SockJS client]{@link https://github.com/sockjs/sockjs-client} library documentation.</p>","name":"onError"}],"returns":[{"type":{"names":["undefined","false"]},"description":"<p>Returns undefined (the same as the &quot;send&quot; function of the SockJS object) if the SockJS has been used or false otherwise.</p>"}],"name":"send","longname":"CB_Net.Sockets.SockJS.send","memberof":"CB_Net.Sockets.SockJS","scope":"static"},{"comment":"/**\r\n\t * Tries to close the websockets connection. Using the [SockJS client]{@link https://github.com/sockjs/sockjs-client} library internally.\r\n\t * @function\r\n\t * @param {function} [websocket={@link CB_Net.Sockets.SockJS.websocketLast}] - The SockJS object that we want to use. If not provided, it will try to use the last one created (if any) which is stored in {@link CB_Net.Sockets.SockJS.websocketLast}.\r\n\t * @param {function} [onError] - Function for the event \"onerror\" used by the SockJS object. If provided, it will replace the previous one (if any). Following the same rules as in the [SockJS client]{@link https://github.com/sockjs/sockjs-client} library documentation.\r\n\t * @returns {undefined|false} Returns undefined (the same as the \"close\" function of the SockJS object) if the SockJS has been used or false otherwise.\r\n\t */","meta":{"range":[7912,8839],"filename":"CB_Net_Sockets.js","lineno":134,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\net\\sockets","code":{"id":"astnode100102702","name":"CB_Net.Sockets.SockJS.close","type":"FunctionExpression","paramnames":["websocket","onError"]},"vars":{"websocket":"CB_Net.Sockets.SockJS.close~websocket","websocket.onerror":"CB_Net.Sockets.SockJS.close~websocket.onerror","returnValue":"CB_Net.Sockets.SockJS.close~returnValue","CB_Net.Sockets.SockJS.websocketLast":"CB_Net.Sockets.SockJS.websocketLast"}},"description":"<p>Tries to close the websockets connection. Using the [SockJS client]{@link https://github.com/sockjs/sockjs-client} library internally.</p>","kind":"function","params":[{"type":{"names":["function"]},"optional":true,"defaultvalue":"{@link CB_Net.Sockets.SockJS.websocketLast}","description":"<p>The SockJS object that we want to use. If not provided, it will try to use the last one created (if any) which is stored in {@link CB_Net.Sockets.SockJS.websocketLast}.</p>","name":"websocket"},{"type":{"names":["function"]},"optional":true,"description":"<p>Function for the event &quot;onerror&quot; used by the SockJS object. If provided, it will replace the previous one (if any). Following the same rules as in the [SockJS client]{@link https://github.com/sockjs/sockjs-client} library documentation.</p>","name":"onError"}],"returns":[{"type":{"names":["undefined","false"]},"description":"<p>Returns undefined (the same as the &quot;close&quot; function of the SockJS object) if the SockJS has been used or false otherwise.</p>"}],"name":"close","longname":"CB_Net.Sockets.SockJS.close","memberof":"CB_Net.Sockets.SockJS","scope":"static"},{"comment":"/**\r\n * @file [XMLHttpRequest]{@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/XMLHttpRequest} ([XHR]{@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/XMLHttpRequest}, [AJAX]{@link https://en.wikipedia.org/wiki/Ajax_(programming)}) and related management. Contains the {@link CB_Net.XHR} static class.\r\n * @author Joan Alba Maldonado <workindalian@gmail.com>\r\n */","meta":{"filename":"CB_Net_XHR.js","lineno":1,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\net\\XHR","code":{}},"name":"CrossBase/net/XHR/CB_Net_XHR.js","kind":"file","description":"<p>[XMLHttpRequest]{@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/XMLHttpRequest} ([XHR]{@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/XMLHttpRequest}, [AJAX]{@link https://en.wikipedia.org/wiki/Ajax_(programming)}) and related management. Contains the {@link CB_Net.XHR} static class.</p>","preserveName":true,"author":["Joan Alba Maldonado <workindalian@gmail.com>"],"longname":"CrossBase/net/XHR/CB_Net_XHR.js","scope":"global"},{"comment":"/**\r\n * Static class to manage [XMLHttpRequest]{@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/XMLHttpRequest} ([XHR]{@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/XMLHttpRequest}, [AJAX]{@link https://en.wikipedia.org/wiki/Ajax_(programming)}) and related. It will return itself if it is tried to be instantiated.\r\n * @namespace\r\n * @todo Think about providing an easy way to abort XHR (AJAX) calls.\r\n */","meta":{"range":[955,1001],"filename":"CB_Net_XHR.js","lineno":14,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\net\\XHR","code":{"id":"astnode100102841","name":"CB_Net.XHR","type":"FunctionExpression","paramnames":[]}},"description":"<p>Static class to manage [XMLHttpRequest]{@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/XMLHttpRequest} ([XHR]{@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/XMLHttpRequest}, [AJAX]{@link https://en.wikipedia.org/wiki/Ajax_(programming)}) and related. It will return itself if it is tried to be instantiated.</p>","kind":"namespace","todo":["Think about providing an easy way to abort XHR (AJAX) calls."],"name":"XHR","longname":"CB_Net.XHR","memberof":"CB_Net","scope":"static"},{"comment":"/**\r\n\t * Returns whether [AJAX]{@link https://en.wikipedia.org/wiki/Ajax_(programming)} ([XHR]{@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/XMLHttpRequest}) is available or not.\r\n\t * @function\r\n\t * @returns {boolean} Returns true if [XHR]{@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/XMLHttpRequest} ([AJAX]{@link https://en.wikipedia.org/wiki/Ajax_(programming)}) objects can be used.\r\n\t */","meta":{"range":[1840,2107],"filename":"CB_Net_XHR.js","lineno":39,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\net\\XHR","code":{"id":"astnode100102901","name":"CB_Net.XHR.supported","type":"FunctionExpression","paramnames":[]},"vars":{"CB_Net.XHR._supportedReturnCache":"CB_Net.XHR._supportedReturnCache"}},"description":"<p>Returns whether [AJAX]{@link https://en.wikipedia.org/wiki/Ajax_(programming)} ([XHR]{@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/XMLHttpRequest}) is available or not.</p>","kind":"function","returns":[{"type":{"names":["boolean"]},"description":"<p>Returns true if [XHR]{@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/XMLHttpRequest} ([AJAX]{@link https://en.wikipedia.org/wiki/Ajax_(programming)}) objects can be used.</p>"}],"name":"supported","longname":"CB_Net.XHR.supported","memberof":"CB_Net.XHR","scope":"static"},{"comment":"/**\r\n\t * Returns a new [AJAX]{@link https://en.wikipedia.org/wiki/Ajax_(programming)} ([XHR]{@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/XMLHttpRequest}) object, if possible.\r\n\t * @function\r\n\t * @returns {Object|null} Returns a new [AJAX]{@link https://en.wikipedia.org/wiki/Ajax_(programming)} ([XHR]{@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/XMLHttpRequest}) object if it has been possible to create it or null otherwise.\r\n\t */","meta":{"range":[3144,4026],"filename":"CB_Net_XHR.js","lineno":59,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\net\\XHR","code":{"id":"astnode100102967","name":"CB_Net.XHR.get","type":"FunctionExpression","paramnames":[]},"vars":{"XHR":"CB_Net.XHR.get~XHR","x":"CB_Net.XHR.get~x","getXmlHttpVersionsIELength":"CB_Net.XHR.get~getXmlHttpVersionsIELength","CB_Net.XHR._getXmlHttpVersionsIELastIndexWorked":"CB_Net.XHR._getXmlHttpVersionsIELastIndexWorked"}},"description":"<p>Returns a new [AJAX]{@link https://en.wikipedia.org/wiki/Ajax_(programming)} ([XHR]{@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/XMLHttpRequest}) object, if possible.</p>","kind":"function","returns":[{"type":{"names":["Object","null"]},"description":"<p>Returns a new [AJAX]{@link https://en.wikipedia.org/wiki/Ajax_(programming)} ([XHR]{@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/XMLHttpRequest}) object if it has been possible to create it or null otherwise.</p>"}],"name":"get","longname":"CB_Net.XHR.get","memberof":"CB_Net.XHR","scope":"static"},{"comment":"/**\r\n\t * Object containing the [HTTP headers]{@link https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers} and their values.\r\n\t * @memberof CB_Net.XHR\r\n\t * @typedef {Object} CB_Net.XHR.HEADERS\r\n\t * @property {Object} HTTPHeaderName - Each property name is an [HTTP header]{@link https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers} and its value is the desired one for this header.\r\n\t * @example { \"Content-Type\" : \"text/plain; charset=x-user-defined\", \"Cache-Control\" : \"no-cache\", \"Pragma\" : \"no-cache\" }\r\n\t */","meta":{"filename":"CB_Net_XHR.js","lineno":91,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\net\\XHR","code":{}},"description":"<p>Object containing the [HTTP headers]{@link https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers} and their values.</p>","memberof":"CB_Net.XHR","kind":"typedef","name":"HEADERS","type":{"names":["Object"]},"properties":[{"type":{"names":["Object"]},"description":"<p>Each property name is an [HTTP header]{@link https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers} and its value is the desired one for this header.</p>","name":"HTTPHeaderName"}],"examples":["{ \"Content-Type\" : \"text/plain; charset=x-user-defined\", \"Cache-Control\" : \"no-cache\", \"Pragma\" : \"no-cache\" }"],"longname":"CB_Net.XHR.HEADERS","scope":"static"},{"comment":"/**\r\n\t * Performs an [AJAX]{@link https://en.wikipedia.org/wiki/Ajax_(programming)} ([XHR]{@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/XMLHttpRequest}) call.\r\n\t * @function\r\n\t * @param {string} URL - The URL that we want to call. It can also contain URL (GET) parameters.\r\n\t * @param {string} [method='POST'] - The [HTTP method]{@link https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods} that will be used to perform the call (GET, POST, PUT, DELETE, etc.).\r\n\t * @param {string|Object} [data] - The data that we want to send. If a string is given and \"GET\" method is being used, it will assume they are GET (URL) parameters and will be attached at the end of the URL given. If something which is not a string is given, it will assume it is a [JSON]{@link https://en.wikipedia.org/wiki/JSON} object and will try to convert it into a string (using the [JSON.stringify]{@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify} function internally) before sending it.\r\n\t * @param {CB_Net.XHR.HEADERS} [headers] - Object containing the [HTTP header]{@link https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers} names and their values that we want to send (used internally by the [setRequestHeader]{@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/setRequestHeader} method of the [XHR object]{@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/XMLHttpRequest}).\r\n\t * @param {string} [responseType] - If provided, it will be used for the [responseType]{@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/responseType} property of the [XHR object]{@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/XMLHttpRequest} (if available).\r\n\t * @param {string} [mimeType] - [MIME type]{@link https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Complete_list_of_MIME_types} that will be used to override the default one returned by the server. Only used when the client supports the [overrideMimeType]{@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/overrideMimeType} method of the [XHR object]{@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/XMLHttpRequest}.\r\n\t * @param {function} [callbackFunction] - Function that will be used for the [onreadystatechange]{@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/onreadystatechange} property of the [XHR object]{@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/XMLHttpRequest}. The unique parameter that it will receive is the [XHR object]{@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/XMLHttpRequest} used by the request. If provided, the \"callbackFunctionOK\" and \"callbackFunctionError\" parameters will not be used even they were also provided.\r\n\t * @param {function} [callbackFunctionOK] - Function that will be called by an internally-created function used in the [onreadystatechange]{@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/onreadystatechange} property of the [XHR object]{@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/XMLHttpRequest} when the [readyState]{@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/readyState} property is 4 and the [status]{@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/status} property is included in the \"allowedSuccessStatuses\" desired. The first parameter it will receive is the [XHR object]{@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/XMLHttpRequest} used by the request and the second one will be the \"callbackFunctionError\" function provided (if any). It will not be used if the parameter \"callbackFunction\" is provided.\r\n\t * @param {function} [callbackFunctionError] - Function that will be called by an internally-created function used in the [onreadystatechange]{@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/onreadystatechange} property of the [XHR object]{@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/XMLHttpRequest} when the [readyState]{@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/readyState} property is 4 and the [status]{@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/status} property is not included in the \"allowedSuccessStatuses\" desired. The first parameter it will receive is the [XHR object]{@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/XMLHttpRequest} used by the request and the second one will be the \"callbackFunctionOk\" function provided (if any). It will not be used if the parameter \"callbackFunction\" is provided.\r\n\t * @param {integer|array} [allowedSuccessStatuses=200] - An integer or a numeric array with a list of integers with the status or statuses that will be considered as a success call by the \"callbackFunctionOK\" function (only when it is used) when the response comes.\r\n\t * @param {boolean} [asynchronous=true] - Defines whether to make a request asynchronously or not. It will be used for the third parameter of the method [open]{@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/open} of the [XHR object]{@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/XMLHttpRequest}.\r\n\t * @param {Object} [XHR] - The [XHR object]{@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/XMLHttpRequest} that we want to use for the call. If not provided, it will try to create a new one internally.\r\n\t * @returns {Object|null} Returns null if the URL provided was empty or the [AJAX]{@link https://en.wikipedia.org/wiki/Ajax_(programming)} ([XHR]{@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/XMLHttpRequest}) object provided is not a valid object or it could not be created a new one internally. Otherwise, it returns the [AJAX]{@link https://en.wikipedia.org/wiki/Ajax_(programming)} ([XHR]{@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/XMLHttpRequest}) object used to try to perform the call (even that maybe it failed or will fail later).\r\n\t * @todo Think about providing a way to choose whether we want the \"data\" provided to be added to the URL when the \"GET\" method is used or not.\r\n\t * @todo Describe better what kind of [XHR object]{@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/XMLHttpRequest} will the different callbacks receive, as in some cases (as when using [REST]{@link https://en.wikipedia.org/wiki/Representational_state_transfer}) they can contain some special properties with [HTTP headers]{@link https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers}, etc.\r\n\t */","meta":{"range":[11333,16805],"filename":"CB_Net_XHR.js","lineno":119,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\net\\XHR","code":{"id":"astnode100103068","name":"CB_Net.XHR.call","type":"FunctionExpression","paramnames":["URL","method","data","headers","responseType","mimeType","callbackFunction","callbackFunctionOK","callbackFunctionError","allowedSuccessStatuses","asynchronous","XHR"]},"vars":{"failFunction":"CB_Net.XHR.call~failFunction","":null,"URL":"CB_Net.XHR.call~URL","method":"CB_Net.XHR.call~method","headers":"CB_Net.XHR.call~headers","mimeType":"CB_Net.XHR.call~mimeType","responseType":"CB_Net.XHR.call~responseType","asynchronous":"CB_Net.XHR.call~asynchronous","allowedSuccessStatuses":"CB_Net.XHR.call~allowedSuccessStatuses","XHR":"CB_Net.XHR.call~XHR","data":"CB_Net.XHR.call~data","originalXHR":"CB_Net.XHR.call~originalXHR","fakeXHR":"CB_Net.XHR.call~fakeXHR","XHR.readyState":"CB_Net.XHR.call~XHR.readyState","XHR.status":"CB_Net.XHR.call~XHR.status","XHR.errorMessage":"CB_Net.XHR.call~XHR.errorMessage","headerName":"CB_Net.XHR.call~headerName","XHR.responseType":"CB_Net.XHR.call~XHR.responseType","XHR.onreadystatechange":"CB_Net.XHR.call~XHR.onreadystatechange"}},"description":"<p>Performs an [AJAX]{@link https://en.wikipedia.org/wiki/Ajax_(programming)} ([XHR]{@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/XMLHttpRequest}) call.</p>","kind":"function","params":[{"type":{"names":["string"]},"description":"<p>The URL that we want to call. It can also contain URL (GET) parameters.</p>","name":"URL"},{"type":{"names":["string"]},"optional":true,"defaultvalue":"'POST'","description":"<p>The [HTTP method]{@link https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods} that will be used to perform the call (GET, POST, PUT, DELETE, etc.).</p>","name":"method"},{"type":{"names":["string","Object"]},"optional":true,"description":"<p>The data that we want to send. If a string is given and &quot;GET&quot; method is being used, it will assume they are GET (URL) parameters and will be attached at the end of the URL given. If something which is not a string is given, it will assume it is a [JSON]{@link https://en.wikipedia.org/wiki/JSON} object and will try to convert it into a string (using the [JSON.stringify]{@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify} function internally) before sending it.</p>","name":"data"},{"type":{"names":["CB_Net.XHR.HEADERS"]},"optional":true,"description":"<p>Object containing the [HTTP header]{@link https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers} names and their values that we want to send (used internally by the [setRequestHeader]{@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/setRequestHeader} method of the [XHR object]{@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/XMLHttpRequest}).</p>","name":"headers"},{"type":{"names":["string"]},"optional":true,"description":"<p>If provided, it will be used for the [responseType]{@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/responseType} property of the [XHR object]{@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/XMLHttpRequest} (if available).</p>","name":"responseType"},{"type":{"names":["string"]},"optional":true,"description":"<p>[MIME type]{@link https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Complete_list_of_MIME_types} that will be used to override the default one returned by the server. Only used when the client supports the [overrideMimeType]{@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/overrideMimeType} method of the [XHR object]{@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/XMLHttpRequest}.</p>","name":"mimeType"},{"type":{"names":["function"]},"optional":true,"description":"<p>Function that will be used for the [onreadystatechange]{@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/onreadystatechange} property of the [XHR object]{@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/XMLHttpRequest}. The unique parameter that it will receive is the [XHR object]{@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/XMLHttpRequest} used by the request. If provided, the &quot;callbackFunctionOK&quot; and &quot;callbackFunctionError&quot; parameters will not be used even they were also provided.</p>","name":"callbackFunction"},{"type":{"names":["function"]},"optional":true,"description":"<p>Function that will be called by an internally-created function used in the [onreadystatechange]{@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/onreadystatechange} property of the [XHR object]{@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/XMLHttpRequest} when the [readyState]{@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/readyState} property is 4 and the [status]{@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/status} property is included in the &quot;allowedSuccessStatuses&quot; desired. The first parameter it will receive is the [XHR object]{@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/XMLHttpRequest} used by the request and the second one will be the &quot;callbackFunctionError&quot; function provided (if any). It will not be used if the parameter &quot;callbackFunction&quot; is provided.</p>","name":"callbackFunctionOK"},{"type":{"names":["function"]},"optional":true,"description":"<p>Function that will be called by an internally-created function used in the [onreadystatechange]{@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/onreadystatechange} property of the [XHR object]{@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/XMLHttpRequest} when the [readyState]{@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/readyState} property is 4 and the [status]{@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/status} property is not included in the &quot;allowedSuccessStatuses&quot; desired. The first parameter it will receive is the [XHR object]{@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/XMLHttpRequest} used by the request and the second one will be the &quot;callbackFunctionOk&quot; function provided (if any). It will not be used if the parameter &quot;callbackFunction&quot; is provided.</p>","name":"callbackFunctionError"},{"type":{"names":["integer","array"]},"optional":true,"defaultvalue":200,"description":"<p>An integer or a numeric array with a list of integers with the status or statuses that will be considered as a success call by the &quot;callbackFunctionOK&quot; function (only when it is used) when the response comes.</p>","name":"allowedSuccessStatuses"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":true,"description":"<p>Defines whether to make a request asynchronously or not. It will be used for the third parameter of the method [open]{@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/open} of the [XHR object]{@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/XMLHttpRequest}.</p>","name":"asynchronous"},{"type":{"names":["Object"]},"optional":true,"description":"<p>The [XHR object]{@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/XMLHttpRequest} that we want to use for the call. If not provided, it will try to create a new one internally.</p>","name":"XHR"}],"returns":[{"type":{"names":["Object","null"]},"description":"<p>Returns null if the URL provided was empty or the [AJAX]{@link https://en.wikipedia.org/wiki/Ajax_(programming)} ([XHR]{@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/XMLHttpRequest}) object provided is not a valid object or it could not be created a new one internally. Otherwise, it returns the [AJAX]{@link https://en.wikipedia.org/wiki/Ajax_(programming)} ([XHR]{@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/XMLHttpRequest}) object used to try to perform the call (even that maybe it failed or will fail later).</p>"}],"todo":["Think about providing a way to choose whether we want the \"data\" provided to be added to the URL when the \"GET\" method is used or not.","Describe better what kind of [XHR object]{@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/XMLHttpRequest} will the different callbacks receive, as in some cases (as when using [REST]{@link https://en.wikipedia.org/wiki/Representational_state_transfer}) they can contain some special properties with [HTTP headers]{@link https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers}, etc."],"name":"call","longname":"CB_Net.XHR.call","memberof":"CB_Net.XHR","scope":"static"},{"comment":"/**\r\n\t * Performs a standard [XHR]{@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/XMLHttpRequest} request to send form data by POST (no files). Uses the {@link CB_Net.XHR.call} function internally with \"POST\" method, asynchronously and \"mimeType\" parameter not provided.\r\n\t * @function\r\n\t * @param {string} URL - Used for the \"URL\" parameter of the {@link CB_Net.XHR.call} function when it is called internally.\r\n\t * @param {string|Object} [data] - Used for the \"data\" parameter of the {@link CB_Net.XHR.call} function when it is called internally. \r\n\t * @param {CB_Net.XHR.HEADERS} [headers={ \"Content-Type\" : \"application/x-www-form-urlencoded; charset=\" + charset, \"Cache-Control\" : \"no-cache\", \"Pragma\" : \"no-cache\" }] - Object containing the [HTTP header]{@link https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers} names and their values that we want to send. If not provided, it will use the default one that will include the charset defined by the \"charset\" parameter. An empty object ({}) can be used if we do not want to send any [HTTP headers]{@link https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers} at all. Used for the \"headers\" parameter of the {@link CB_Net.XHR.call} function when it is called internally.\r\n\t * @param {string} [responseType] - Used for the [responseType]{@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/responseType} parameter of the {@link CB_Net.XHR.call} function when it is called internally.\r\n\t * @param {string} [charset='UTF-8'] - The charset for the \"Content-Type\" [HTTP header]{@link https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers} that will be sent by default only when no \"headers\" parameter is provided.\r\n\t * @param {function} [callbackFunction] - Used for the \"callbackFunction\" parameter of the {@link CB_Net.XHR.call} function when it is called internally.\r\n\t * @param {function} [callbackFunctionOK] - Used for the \"callbackFunctionOK\" parameter of the {@link CB_Net.XHR.call} function when it is called internally.\r\n\t * @param {function} [callbackFunctionError] - Used for the \"callbackFunctionError\" parameter of the {@link CB_Net.XHR.call} function when it is called internally.\r\n\t * @param {integer|array} [allowedSuccessStatuses=200] - Used for the \"allowedSuccessStatuses\" parameter of the {@link CB_Net.XHR.call} function when it is called internally.\r\n\t * @param {Object} [XHR] - Used for the \"XHR\" parameter of the {@link CB_Net.XHR.call} function when it is called internally.\r\n\t * @returns {Object|null} Returns the same that the {@link CB_Net.XHR.call} function returns (called internally).\r\n\t */","meta":{"range":[19454,20504],"filename":"CB_Net_XHR.js","lineno":292,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\net\\XHR","code":{"id":"astnode100103518","name":"CB_Net.XHR.callForm","type":"FunctionExpression","paramnames":["URL","data","headers","responseType","charset","callbackFunction","callbackFunctionOK","callbackFunctionError","allowedSuccessStatuses","XHR"]},"vars":{"charset":"CB_Net.XHR.callForm~charset","headers":"CB_Net.XHR.callForm~headers"}},"description":"<p>Performs a standard [XHR]{@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/XMLHttpRequest} request to send form data by POST (no files). Uses the {@link CB_Net.XHR.call} function internally with &quot;POST&quot; method, asynchronously and &quot;mimeType&quot; parameter not provided.</p>","kind":"function","params":[{"type":{"names":["string"]},"description":"<p>Used for the &quot;URL&quot; parameter of the {@link CB_Net.XHR.call} function when it is called internally.</p>","name":"URL"},{"type":{"names":["string","Object"]},"optional":true,"description":"<p>Used for the &quot;data&quot; parameter of the {@link CB_Net.XHR.call} function when it is called internally.</p>","name":"data"},{"type":{"names":["CB_Net.XHR.HEADERS"]},"optional":true,"defaultvalue":"{ \"Content-Type\" : \"application/x-www-form-urlencoded; charset=\" + charset, \"Cache-Control\" : \"no-cache\", \"Pragma\" : \"no-cache\" }","description":"<p>Object containing the [HTTP header]{@link https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers} names and their values that we want to send. If not provided, it will use the default one that will include the charset defined by the &quot;charset&quot; parameter. An empty object ({}) can be used if we do not want to send any [HTTP headers]{@link https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers} at all. Used for the &quot;headers&quot; parameter of the {@link CB_Net.XHR.call} function when it is called internally.</p>","name":"headers"},{"type":{"names":["string"]},"optional":true,"description":"<p>Used for the [responseType]{@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/responseType} parameter of the {@link CB_Net.XHR.call} function when it is called internally.</p>","name":"responseType"},{"type":{"names":["string"]},"optional":true,"defaultvalue":"'UTF-8'","description":"<p>The charset for the &quot;Content-Type&quot; [HTTP header]{@link https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers} that will be sent by default only when no &quot;headers&quot; parameter is provided.</p>","name":"charset"},{"type":{"names":["function"]},"optional":true,"description":"<p>Used for the &quot;callbackFunction&quot; parameter of the {@link CB_Net.XHR.call} function when it is called internally.</p>","name":"callbackFunction"},{"type":{"names":["function"]},"optional":true,"description":"<p>Used for the &quot;callbackFunctionOK&quot; parameter of the {@link CB_Net.XHR.call} function when it is called internally.</p>","name":"callbackFunctionOK"},{"type":{"names":["function"]},"optional":true,"description":"<p>Used for the &quot;callbackFunctionError&quot; parameter of the {@link CB_Net.XHR.call} function when it is called internally.</p>","name":"callbackFunctionError"},{"type":{"names":["integer","array"]},"optional":true,"defaultvalue":200,"description":"<p>Used for the &quot;allowedSuccessStatuses&quot; parameter of the {@link CB_Net.XHR.call} function when it is called internally.</p>","name":"allowedSuccessStatuses"},{"type":{"names":["Object"]},"optional":true,"description":"<p>Used for the &quot;XHR&quot; parameter of the {@link CB_Net.XHR.call} function when it is called internally.</p>","name":"XHR"}],"returns":[{"type":{"names":["Object","null"]},"description":"<p>Returns the same that the {@link CB_Net.XHR.call} function returns (called internally).</p>"}],"name":"callForm","longname":"CB_Net.XHR.callForm","memberof":"CB_Net.XHR","scope":"static"},{"comment":"/**\r\n\t * Performs a standard [XHR]{@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/XMLHttpRequest} request for a binary file. Uses the {@link CB_Net.XHR.call} function internally with \"GET\" method, using \"text/plain; charset=x-user-defined\" for the \"mimeType\" parameter and asynchronously.\r\n\t * @function\r\n\t * @param {string} URL - Used for the \"URL\" parameter of the {@link CB_Net.XHR.call} function when it is called internally.\r\n\t * @param {string|Object} [data] - Used for the \"data\" parameter of the {@link CB_Net.XHR.call} function when it is called internally. \r\n\t * @param {CB_Net.XHR.HEADERS} [headers={ \"Content-Type\" : \"text/plain; charset=x-user-defined\", \"Cache-Control\" : \"no-cache\", \"Pragma\" : \"no-cache\" }] - Object containing the [HTTP header]{@link https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers} names and their values that we want to send. If not provided, it will use the default one. An empty object ({}) can be used if we do not want to send any [HTTP headers]{@link https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers} at all. Used for the \"headers\" parameter of the {@link CB_Net.XHR.call} function when it is called internally.\r\n\t * @param {'arraybuffer'|'blob'|''} [blobOrArrayBuffer='arraybuffer'] - Used for the [responseType]{@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/responseType} parameter of the {@link CB_Net.XHR.call} function when it is called internally. If an empty string is provided, the [responseType]{@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/responseType} parameter will not be modified.\r\n\t * @param {function} [callbackFunction] - Used for the \"callbackFunction\" parameter of the {@link CB_Net.XHR.call} function when it is called internally.\r\n\t * @param {function} [callbackFunctionOK] - Used for the \"callbackFunctionOK\" parameter of the {@link CB_Net.XHR.call} function when it is called internally.\r\n\t * @param {function} [callbackFunctionError] - Used for the \"callbackFunctionError\" parameter of the {@link CB_Net.XHR.call} function when it is called internally.\r\n\t * @param {integer|array} [allowedSuccessStatuses=200] - Used for the \"allowedSuccessStatuses\" parameter of the {@link CB_Net.XHR.call} function when it is called internally.\r\n\t * @param {Object} [XHR] - Used for the \"XHR\" parameter of the {@link CB_Net.XHR.call} function when it is called internally.\r\n\t * @returns {Object|null} Returns the same that the {@link CB_Net.XHR.call} function returns (called internally).\r\n\t */","meta":{"range":[23059,24325],"filename":"CB_Net_XHR.js","lineno":340,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\net\\XHR","code":{"id":"astnode100103598","name":"CB_Net.XHR.callBinary","type":"FunctionExpression","paramnames":["URL","data","headers","blobOrArrayBuffer","callbackFunction","callbackFunctionOK","callbackFunctionError","allowedSuccessStatuses","XHR"]},"vars":{"headers":"CB_Net.XHR.callBinary~headers","blobOrArrayBuffer":"CB_Net.XHR.callBinary~blobOrArrayBuffer"}},"description":"<p>Performs a standard [XHR]{@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/XMLHttpRequest} request for a binary file. Uses the {@link CB_Net.XHR.call} function internally with &quot;GET&quot; method, using &quot;text/plain; charset=x-user-defined&quot; for the &quot;mimeType&quot; parameter and asynchronously.</p>","kind":"function","params":[{"type":{"names":["string"]},"description":"<p>Used for the &quot;URL&quot; parameter of the {@link CB_Net.XHR.call} function when it is called internally.</p>","name":"URL"},{"type":{"names":["string","Object"]},"optional":true,"description":"<p>Used for the &quot;data&quot; parameter of the {@link CB_Net.XHR.call} function when it is called internally.</p>","name":"data"},{"type":{"names":["CB_Net.XHR.HEADERS"]},"optional":true,"defaultvalue":"{ \"Content-Type\" : \"text/plain; charset=x-user-defined\", \"Cache-Control\" : \"no-cache\", \"Pragma\" : \"no-cache\" }","description":"<p>Object containing the [HTTP header]{@link https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers} names and their values that we want to send. If not provided, it will use the default one. An empty object ({}) can be used if we do not want to send any [HTTP headers]{@link https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers} at all. Used for the &quot;headers&quot; parameter of the {@link CB_Net.XHR.call} function when it is called internally.</p>","name":"headers"},{"type":{"names":["'arraybuffer'","'blob'","''"]},"optional":true,"defaultvalue":"'arraybuffer'","description":"<p>Used for the [responseType]{@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/responseType} parameter of the {@link CB_Net.XHR.call} function when it is called internally. If an empty string is provided, the [responseType]{@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/responseType} parameter will not be modified.</p>","name":"blobOrArrayBuffer"},{"type":{"names":["function"]},"optional":true,"description":"<p>Used for the &quot;callbackFunction&quot; parameter of the {@link CB_Net.XHR.call} function when it is called internally.</p>","name":"callbackFunction"},{"type":{"names":["function"]},"optional":true,"description":"<p>Used for the &quot;callbackFunctionOK&quot; parameter of the {@link CB_Net.XHR.call} function when it is called internally.</p>","name":"callbackFunctionOK"},{"type":{"names":["function"]},"optional":true,"description":"<p>Used for the &quot;callbackFunctionError&quot; parameter of the {@link CB_Net.XHR.call} function when it is called internally.</p>","name":"callbackFunctionError"},{"type":{"names":["integer","array"]},"optional":true,"defaultvalue":200,"description":"<p>Used for the &quot;allowedSuccessStatuses&quot; parameter of the {@link CB_Net.XHR.call} function when it is called internally.</p>","name":"allowedSuccessStatuses"},{"type":{"names":["Object"]},"optional":true,"description":"<p>Used for the &quot;XHR&quot; parameter of the {@link CB_Net.XHR.call} function when it is called internally.</p>","name":"XHR"}],"returns":[{"type":{"names":["Object","null"]},"description":"<p>Returns the same that the {@link CB_Net.XHR.call} function returns (called internally).</p>"}],"name":"callBinary","longname":"CB_Net.XHR.callBinary","memberof":"CB_Net.XHR","scope":"static"},{"comment":"/**\r\n\t * Performs an [AJAX]{@link https://en.wikipedia.org/wiki/Ajax_(programming)} ([XHR]{@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/XMLHttpRequest}) call through the proxy (made with [PHP]{@link https://en.wikipedia.org/wiki/PHP} language and using [cURL]{@link https://en.wikipedia.org/wiki/CURL}, so it will need a server which supports that) to avoid [cross-domain request]{@link https://en.wikipedia.org/wiki/Cross-origin_resource_sharing} limitations of [AJAX]{@link https://en.wikipedia.org/wiki/Ajax_(programming)}. Uses the {@link CB_Net.XHR.callForm} function (with \"headers\" and \"charset\" parameters not provided) internally to call the proxy.\r\n\t <br />\r\n\t NOTE: Edit the \"CB_proxy.config.php\" file to configure the default proxy (set by default in the value of the {@link CB_Configuration.CrossBase.CB_Net_XHR_PROXY_URL} property). Apart from configuring it, adding some security measures is highly recommended.\r\n\t Have in mind that, for safety reasons, the default proxy only allows to request the URLs defined in the \"$allowedURLs\" array in the \"CB_proxy.config.php\" file. Just edit it to allow other URLs.\r\n\t * @function\r\n\t * @param {string} URL - The URL that we want the proxy to call for us. It can also contain URL (GET) parameters.\r\n\t * @param {string} [method='POST'] - The [HTTP method]{@link https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods} (GET, POST, PUT, DELETE, etc.) that we want the proxy to use for us when performing the call.\r\n\t * @param {string|Object} [data] - The data that we want to send through the proxy to the final server. If something which is not a string is given, it will assume it is a [JSON]{@link https://en.wikipedia.org/wiki/JSON} object and will try to convert it into a string (using the [JSON.stringify]{@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify} function internally) before sending it.\r\n\t * @param {CB_Net.XHR.HEADERS} [headers] - Object ([JSON]{@link https://en.wikipedia.org/wiki/JSON} format) containing the [HTTP header]{@link https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers} names and their values that we want the proxy to send to the final server. Even if not provided, the proxy could end sending some [HTTP headers]{@link https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers} depending on the [cURL]{@link https://en.wikipedia.org/wiki/CURL} configuration used.\r\n\t * @param {string} [responseType] - Used for the [responseType]{@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/responseType} parameter of the {@link CB_Net.XHR.callForm} function when it is called internally.\r\n\t * @param {boolean} [forceJSON=false] - If it is set to true, the response from the proxy will be a [JSON]{@link https://en.wikipedia.org/wiki/JSON} object with the [status]{@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/status} property containing the [HTTP status]{@link https://developer.mozilla.org/en-US/docs/Web/HTTP/Status} of the reply, the [response]{@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/response} property with the response content itself and the \"headers\" property (only when \"getHeaders\" parameters is set to true) with the [HTTP headers]{@link https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers} of the reply, all belonging to the response from the final server.\r\n\t * @param {boolean} [getHeaders=false] - If it is set to true, the proxy will answer including the [HTTP headers]{@link https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers} from the final server. The [HTTP headers]{@link https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers} will be included in the final response string at the beginning (before the response content) if the \"forceJSON\" parameter is not set to true or in the \"headers\" property of the [JSON]{@link https://en.wikipedia.org/wiki/JSON} object that belongs to the response otherwise.\r\n\t * @param {boolean} [headersForceOneDimension=false] - If it is set to true, the proxy will consider that the [HTTP headers]{@link https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers} of the response from the final server are not multidimensional which means that the final server would never reply the same [HTTP header]{@link https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers} repeated multiple times (with different values, normally) in different chunks separated by double new lines (\"\\r\\n\\r\\n\"). Default value (false) is recommended. Needs \"getHeaders\" set to true.\r\n\t * @param {boolean} [headersForceOneDimensionValues=false] - If it is set to true, the proxy will only consider one value per [HTTP header]{@link https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers} from the response from the final server. Default value (false) is recommended. Needs \"getHeaders\" set to true.\r\n\t * @param {boolean} [transparentStatus=false] - If it is set to true, the proxy will reply us with the same status as the final server in its HTTP response.\r\n\t * @param {boolean} [transparentHeaders=false] - If it is set to true, the proxy will reply us with the same [HTTP headers]{@link https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers} as the final server in its HTTP response.\r\n\t * @param {function} [callbackFunction] - Used for the \"callbackFunction\" parameter of the {@link CB_Net.XHR.callForm} function when it is called internally.\r\n\t * @param {function} [callbackFunctionOK] - Used for the \"callbackFunctionOK\" parameter of the {@link CB_Net.XHR.callForm} function when it is called internally.\r\n\t * @param {function} [callbackFunctionError] - Used for the \"callbackFunctionError\" parameter of the {@link CB_Net.XHR.callForm} function when it is called internally.\r\n\t * @param {integer|array} [allowedSuccessStatuses=200] - Used for the \"allowedSuccessStatuses\" parameter of the {@link CB_Net.XHR.callForm} function when it is called internally.\r\n\t * @param {Object} [XHR] - Used for the \"XHR\" parameter of the {@link CB_Net.XHR.callForm} function when it is called internally.\r\n\t * @returns {Object|null} Returns the same that the {@link CB_Net.XHR.callForm} function returns (called internally).\r\n\t * @todo Document PHP proxy more.\r\n\t */","meta":{"range":[30593,32771],"filename":"CB_Net_XHR.js","lineno":402,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\net\\XHR","code":{"id":"astnode100103687","name":"CB_Net.XHR.callProxy","type":"FunctionExpression","paramnames":["URL","method","data","headers","responseType","forceJSON","getHeaders","headersForceOneDimension","headersForceOneDimensionValues","transparentStatus","transparentHeaders","callbackFunction","callbackFunctionOK","callbackFunctionError","allowedSuccessStatuses","XHR"]},"vars":{"proxyVariables":"CB_Net.XHR.callProxy~proxyVariables","method":"CB_Net.XHR.callProxy~method","data":"CB_Net.XHR.callProxy~data"}},"description":"<p>Performs an [AJAX]{@link https://en.wikipedia.org/wiki/Ajax_(programming)} ([XHR]{@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/XMLHttpRequest}) call through the proxy (made with [PHP]{@link https://en.wikipedia.org/wiki/PHP} language and using [cURL]{@link https://en.wikipedia.org/wiki/CURL}, so it will need a server which supports that) to avoid [cross-domain request]{@link https://en.wikipedia.org/wiki/Cross-origin_resource_sharing} limitations of [AJAX]{@link https://en.wikipedia.org/wiki/Ajax_(programming)}. Uses the {@link CB_Net.XHR.callForm} function (with &quot;headers&quot; and &quot;charset&quot; parameters not provided) internally to call the proxy.<br> <br /><br> NOTE: Edit the &quot;CB_proxy.config.php&quot; file to configure the default proxy (set by default in the value of the {@link CB_Configuration.CrossBase.CB_Net_XHR_PROXY_URL} property). Apart from configuring it, adding some security measures is highly recommended.<br> Have in mind that, for safety reasons, the default proxy only allows to request the URLs defined in the &quot;$allowedURLs&quot; array in the &quot;CB_proxy.config.php&quot; file. Just edit it to allow other URLs.</p>","kind":"function","params":[{"type":{"names":["string"]},"description":"<p>The URL that we want the proxy to call for us. It can also contain URL (GET) parameters.</p>","name":"URL"},{"type":{"names":["string"]},"optional":true,"defaultvalue":"'POST'","description":"<p>The [HTTP method]{@link https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods} (GET, POST, PUT, DELETE, etc.) that we want the proxy to use for us when performing the call.</p>","name":"method"},{"type":{"names":["string","Object"]},"optional":true,"description":"<p>The data that we want to send through the proxy to the final server. If something which is not a string is given, it will assume it is a [JSON]{@link https://en.wikipedia.org/wiki/JSON} object and will try to convert it into a string (using the [JSON.stringify]{@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify} function internally) before sending it.</p>","name":"data"},{"type":{"names":["CB_Net.XHR.HEADERS"]},"optional":true,"description":"<p>Object ([JSON]{@link https://en.wikipedia.org/wiki/JSON} format) containing the [HTTP header]{@link https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers} names and their values that we want the proxy to send to the final server. Even if not provided, the proxy could end sending some [HTTP headers]{@link https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers} depending on the [cURL]{@link https://en.wikipedia.org/wiki/CURL} configuration used.</p>","name":"headers"},{"type":{"names":["string"]},"optional":true,"description":"<p>Used for the [responseType]{@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/responseType} parameter of the {@link CB_Net.XHR.callForm} function when it is called internally.</p>","name":"responseType"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If it is set to true, the response from the proxy will be a [JSON]{@link https://en.wikipedia.org/wiki/JSON} object with the [status]{@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/status} property containing the [HTTP status]{@link https://developer.mozilla.org/en-US/docs/Web/HTTP/Status} of the reply, the [response]{@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/response} property with the response content itself and the &quot;headers&quot; property (only when &quot;getHeaders&quot; parameters is set to true) with the [HTTP headers]{@link https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers} of the reply, all belonging to the response from the final server.</p>","name":"forceJSON"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If it is set to true, the proxy will answer including the [HTTP headers]{@link https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers} from the final server. The [HTTP headers]{@link https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers} will be included in the final response string at the beginning (before the response content) if the &quot;forceJSON&quot; parameter is not set to true or in the &quot;headers&quot; property of the [JSON]{@link https://en.wikipedia.org/wiki/JSON} object that belongs to the response otherwise.</p>","name":"getHeaders"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If it is set to true, the proxy will consider that the [HTTP headers]{@link https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers} of the response from the final server are not multidimensional which means that the final server would never reply the same [HTTP header]{@link https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers} repeated multiple times (with different values, normally) in different chunks separated by double new lines (&quot;\\r\\n\\r\\n&quot;). Default value (false) is recommended. Needs &quot;getHeaders&quot; set to true.</p>","name":"headersForceOneDimension"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If it is set to true, the proxy will only consider one value per [HTTP header]{@link https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers} from the response from the final server. Default value (false) is recommended. Needs &quot;getHeaders&quot; set to true.</p>","name":"headersForceOneDimensionValues"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If it is set to true, the proxy will reply us with the same status as the final server in its HTTP response.</p>","name":"transparentStatus"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If it is set to true, the proxy will reply us with the same [HTTP headers]{@link https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers} as the final server in its HTTP response.</p>","name":"transparentHeaders"},{"type":{"names":["function"]},"optional":true,"description":"<p>Used for the &quot;callbackFunction&quot; parameter of the {@link CB_Net.XHR.callForm} function when it is called internally.</p>","name":"callbackFunction"},{"type":{"names":["function"]},"optional":true,"description":"<p>Used for the &quot;callbackFunctionOK&quot; parameter of the {@link CB_Net.XHR.callForm} function when it is called internally.</p>","name":"callbackFunctionOK"},{"type":{"names":["function"]},"optional":true,"description":"<p>Used for the &quot;callbackFunctionError&quot; parameter of the {@link CB_Net.XHR.callForm} function when it is called internally.</p>","name":"callbackFunctionError"},{"type":{"names":["integer","array"]},"optional":true,"defaultvalue":200,"description":"<p>Used for the &quot;allowedSuccessStatuses&quot; parameter of the {@link CB_Net.XHR.callForm} function when it is called internally.</p>","name":"allowedSuccessStatuses"},{"type":{"names":["Object"]},"optional":true,"description":"<p>Used for the &quot;XHR&quot; parameter of the {@link CB_Net.XHR.callForm} function when it is called internally.</p>","name":"XHR"}],"returns":[{"type":{"names":["Object","null"]},"description":"<p>Returns the same that the {@link CB_Net.XHR.callForm} function returns (called internally).</p>"}],"todo":["Document PHP proxy more."],"name":"callProxy","longname":"CB_Net.XHR.callProxy","memberof":"CB_Net.XHR","scope":"static"},{"comment":"/**\r\n\t * Performs a [REST]{@link https://en.wikipedia.org/wiki/Representational_state_transfer} call to a [REST]{@link https://en.wikipedia.org/wiki/Representational_state_transfer} server. Uses the {@link CB_Net.XHR.callProxy} function (without \"callbackFunction\" parameter provided) internally if we do not want to avoid the proxy or uses the {@link CB_Net.XHR.call} function (asynchronously, with \"mimeType\" and \"callbackFunction\" parameters not provided) otherwise.\r\n\t * @function\r\n\t * @param {string} [serverURL={@link CB_Net.REST.SERVER_URL_DEFAULT}] - The URL of the [REST]{@link https://en.wikipedia.org/wiki/Representational_state_transfer} server that we want to call. It should not contain URL (GET) parameters. It can also contain the [REST]{@link https://en.wikipedia.org/wiki/Representational_state_transfer} path (route), although it is recommended to set it in the \"route\" parameter.\r\n\t * @param {string} [route] - The [REST]{@link https://en.wikipedia.org/wiki/Representational_state_transfer} path (route) we want to request. It can also contain URL (GET) parameters, although it is recommended to set them in the \"dataURL\" parameter.\r\n\t * @param {string} [dataURL] - The URL (GET) data that we want to send.\r\n\t * @param {string} [method='POST'] - Used for the \"method\" parameter for the {@link CB_Net.XHR.callProxy} function or for the {@link CB_Net.XHR.call} function (if no proxy is allowed) when it is called internally.\r\n\t * @param {string|Object} [data] - Used for the \"data\" parameter of the {@link CB_Net.XHR.callProxy} function or of the {@link CB_Net.XHR.call} function (if no proxy is allowed) when it is called internally.\r\n\t * @param {CB_Net.XHR.HEADERS} [headers=undefined|{ \"Content-Type\" : \"application/x-www-form-urlencoded; charset=UTF-8\", \"Cache-Control\" : \"no-cache\", \"Pragma\" : \"no-cache\" }] - Used for the \"headers\" parameter of the {@link CB_Net.XHR.callProxy} function or of the {@link CB_Net.XHR.call} function (if no proxy is allowed) when it is called internally. If not provided and the {@link CB_Net.XHR.call} function is used (if no proxy is allowed), the default value will be: { \"Content-Type\" : \"application/x-www-form-urlencoded; charset=UTF-8\", \"Cache-Control\" : \"no-cache\", \"Pragma\" : \"no-cache\" }\r\n\t * @param {string} [responseType] - Used for the [responseType]{@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/responseType} parameter of the {@link CB_Net.XHR.callProxy} function or of the {@link CB_Net.XHR.call} function (if no proxy is allowed) when it is called internally.\r\n\t * @param {boolean} [avoidProxy=false] - If it is set to true, it will call the {@link CB_Net.XHR.call} internally. Otherwise, it will use the {@link CB_Net.XHR.callProxy} function internally.\r\n\t * @param {boolean} [forceJSON=false] - Used for the \"forceJSON\" parameter of the {@link CB_Net.XHR.callProxy} function (if the proxy is allowed) when it is called internally.\r\n\t * @param {boolean} [getHeaders=false] - Used for the \"getHeaders\" parameter of the {@link CB_Net.XHR.callProxy} function (if the proxy is allowed) when it is called internally.\r\n\t * @param {boolean} [headersForceOneDimension=false] - Used for the \"headersForceOneDimension\" parameter of the {@link CB_Net.XHR.callProxy} function (if the proxy is allowed) when it is called internally.\r\n\t * @param {boolean} [headersForceOneDimensionValues=false] - Used for the \"headersForceOneDimensionValues\" parameter of the {@link CB_Net.XHR.callProxy} function (if the proxy is allowed) when it is called internally.\r\n\t * @param {boolean} [transparentStatus=false] - Used for the \"transparentStatus\" parameter of the {@link CB_Net.XHR.callProxy} function (if the proxy is allowed) when it is called internally.\r\n\t * @param {boolean} [transparentHeaders=false] - Used for the \"transparentHeaders\" parameter of the {@link CB_Net.XHR.callProxy} function (if the proxy is allowed) when it is called internally.\r\n\t * @param {function} [callbackFunctionOK] - Used for the \"callbackFunctionOK\" parameter of the {@link CB_Net.XHR.callProxy} function or of the {@link CB_Net.XHR.call} function (if no proxy is allowed) when it is called internally.\r\n\t * @param {function} [callbackFunctionError] - Used for the \"callbackFunctionError\" parameter of the {@link CB_Net.XHR.callProxy} function or of the {@link CB_Net.XHR.call} function (if no proxy is allowed) when it is called internally.\r\n\t * @param {integer|array} [allowedSuccessStatuses=200] - Used for the \"allowedSuccessStatuses\" parameter of the {@link CB_Net.XHR.callProxy} function or of the {@link CB_Net.XHR.call} function (if no proxy is allowed) when it is called internally.\r\n\t * @param {Object} [XHR] - Used for the \"XHR\" parameter of the {@link CB_Net.XHR.callProxy} function or of the {@link CB_Net.XHR.call} function (if no proxy is allowed) when it is called internally.\r\n\t * @returns {Object|null} When using the proxy is allowed, returns the same that the {@link CB_Net.XHR.callProxy} function returns (called internally). Otherwise, it returns the same that the {@link CB_Net.XHR.call} function returns (called internally).\r\n\t */","meta":{"range":[37911,40101],"filename":"CB_Net_XHR.js","lineno":468,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\net\\XHR","code":{"id":"astnode100103891","name":"CB_Net.XHR.callREST","type":"FunctionExpression","paramnames":["serverURL","route","dataURL","method","data","headers","responseType","avoidProxy","forceJSON","getHeaders","headersForceOneDimension","headersForceOneDimensionValues","transparentStatus","transparentHeaders","callbackFunctionOK","callbackFunctionError","allowedSuccessStatuses","XHR"]},"vars":{"serverURL":"CB_Net.XHR.callREST~serverURL","dataURL":"CB_Net.XHR.callREST~dataURL","headers":"CB_Net.XHR.callREST~headers"}},"description":"<p>Performs a [REST]{@link https://en.wikipedia.org/wiki/Representational_state_transfer} call to a [REST]{@link https://en.wikipedia.org/wiki/Representational_state_transfer} server. Uses the {@link CB_Net.XHR.callProxy} function (without &quot;callbackFunction&quot; parameter provided) internally if we do not want to avoid the proxy or uses the {@link CB_Net.XHR.call} function (asynchronously, with &quot;mimeType&quot; and &quot;callbackFunction&quot; parameters not provided) otherwise.</p>","kind":"function","params":[{"type":{"names":["string"]},"optional":true,"defaultvalue":"{@link CB_Net.REST.SERVER_URL_DEFAULT}","description":"<p>The URL of the [REST]{@link https://en.wikipedia.org/wiki/Representational_state_transfer} server that we want to call. It should not contain URL (GET) parameters. It can also contain the [REST]{@link https://en.wikipedia.org/wiki/Representational_state_transfer} path (route), although it is recommended to set it in the &quot;route&quot; parameter.</p>","name":"serverURL"},{"type":{"names":["string"]},"optional":true,"description":"<p>The [REST]{@link https://en.wikipedia.org/wiki/Representational_state_transfer} path (route) we want to request. It can also contain URL (GET) parameters, although it is recommended to set them in the &quot;dataURL&quot; parameter.</p>","name":"route"},{"type":{"names":["string"]},"optional":true,"description":"<p>The URL (GET) data that we want to send.</p>","name":"dataURL"},{"type":{"names":["string"]},"optional":true,"defaultvalue":"'POST'","description":"<p>Used for the &quot;method&quot; parameter for the {@link CB_Net.XHR.callProxy} function or for the {@link CB_Net.XHR.call} function (if no proxy is allowed) when it is called internally.</p>","name":"method"},{"type":{"names":["string","Object"]},"optional":true,"description":"<p>Used for the &quot;data&quot; parameter of the {@link CB_Net.XHR.callProxy} function or of the {@link CB_Net.XHR.call} function (if no proxy is allowed) when it is called internally.</p>","name":"data"},{"type":{"names":["CB_Net.XHR.HEADERS"]},"optional":true,"defaultvalue":"undefined|{ \"Content-Type\" : \"application/x-www-form-urlencoded; charset=UTF-8\", \"Cache-Control\" : \"no-cache\", \"Pragma\" : \"no-cache\" }","description":"<p>Used for the &quot;headers&quot; parameter of the {@link CB_Net.XHR.callProxy} function or of the {@link CB_Net.XHR.call} function (if no proxy is allowed) when it is called internally. If not provided and the {@link CB_Net.XHR.call} function is used (if no proxy is allowed), the default value will be: { &quot;Content-Type&quot; : &quot;application/x-www-form-urlencoded; charset=UTF-8&quot;, &quot;Cache-Control&quot; : &quot;no-cache&quot;, &quot;Pragma&quot; : &quot;no-cache&quot; }</p>","name":"headers"},{"type":{"names":["string"]},"optional":true,"description":"<p>Used for the [responseType]{@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/responseType} parameter of the {@link CB_Net.XHR.callProxy} function or of the {@link CB_Net.XHR.call} function (if no proxy is allowed) when it is called internally.</p>","name":"responseType"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If it is set to true, it will call the {@link CB_Net.XHR.call} internally. Otherwise, it will use the {@link CB_Net.XHR.callProxy} function internally.</p>","name":"avoidProxy"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>Used for the &quot;forceJSON&quot; parameter of the {@link CB_Net.XHR.callProxy} function (if the proxy is allowed) when it is called internally.</p>","name":"forceJSON"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>Used for the &quot;getHeaders&quot; parameter of the {@link CB_Net.XHR.callProxy} function (if the proxy is allowed) when it is called internally.</p>","name":"getHeaders"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>Used for the &quot;headersForceOneDimension&quot; parameter of the {@link CB_Net.XHR.callProxy} function (if the proxy is allowed) when it is called internally.</p>","name":"headersForceOneDimension"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>Used for the &quot;headersForceOneDimensionValues&quot; parameter of the {@link CB_Net.XHR.callProxy} function (if the proxy is allowed) when it is called internally.</p>","name":"headersForceOneDimensionValues"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>Used for the &quot;transparentStatus&quot; parameter of the {@link CB_Net.XHR.callProxy} function (if the proxy is allowed) when it is called internally.</p>","name":"transparentStatus"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>Used for the &quot;transparentHeaders&quot; parameter of the {@link CB_Net.XHR.callProxy} function (if the proxy is allowed) when it is called internally.</p>","name":"transparentHeaders"},{"type":{"names":["function"]},"optional":true,"description":"<p>Used for the &quot;callbackFunctionOK&quot; parameter of the {@link CB_Net.XHR.callProxy} function or of the {@link CB_Net.XHR.call} function (if no proxy is allowed) when it is called internally.</p>","name":"callbackFunctionOK"},{"type":{"names":["function"]},"optional":true,"description":"<p>Used for the &quot;callbackFunctionError&quot; parameter of the {@link CB_Net.XHR.callProxy} function or of the {@link CB_Net.XHR.call} function (if no proxy is allowed) when it is called internally.</p>","name":"callbackFunctionError"},{"type":{"names":["integer","array"]},"optional":true,"defaultvalue":200,"description":"<p>Used for the &quot;allowedSuccessStatuses&quot; parameter of the {@link CB_Net.XHR.callProxy} function or of the {@link CB_Net.XHR.call} function (if no proxy is allowed) when it is called internally.</p>","name":"allowedSuccessStatuses"},{"type":{"names":["Object"]},"optional":true,"description":"<p>Used for the &quot;XHR&quot; parameter of the {@link CB_Net.XHR.callProxy} function or of the {@link CB_Net.XHR.call} function (if no proxy is allowed) when it is called internally.</p>","name":"XHR"}],"returns":[{"type":{"names":["Object","null"]},"description":"<p>When using the proxy is allowed, returns the same that the {@link CB_Net.XHR.callProxy} function returns (called internally). Otherwise, it returns the same that the {@link CB_Net.XHR.call} function returns (called internally).</p>"}],"name":"callREST","longname":"CB_Net.XHR.callREST","memberof":"CB_Net.XHR","scope":"static"},{"comment":"/**\r\n\t * Returns the [HTTP headers]{@link https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers} (it should be an object) from the [JSON]{@link https://en.wikipedia.org/wiki/JSON} response generated by the \"getSslPage\" function used by the [PHP]{@link https://en.wikipedia.org/wiki/PHP} proxy (\"headers\" property). Useful to parse the response from the {@link CB_Net.XHR.callProxy} (or {@link CB_Net.XHR.callREST} and related) function when it has been called with the \"forceJSON\" parameter set to true.\r\n\t * @function\r\n\t * @param {Object|string} response - The [XHR object]{@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/XMLHttpRequest} which contains the [responseText]{@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/responseText} property or the value of the [responseText]{@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/responseText} property (string) itself which should contain the [JSON]{@link https://en.wikipedia.org/wiki/JSON} response generated by the \"getSslPage\" function used by the [PHP]{@link https://en.wikipedia.org/wiki/PHP} proxy. If a string is provided, tries to parse it as a [JSON]{@link https://en.wikipedia.org/wiki/JSON} object. The \"headers\" property will be tried to be returned from it.\r\n\t * @param {boolean} [sanitize=true] - If it is set to true and the \"headers\" property is not found, it will return an empty object ({}) instead of returning null.\r\n\t * @returns {Object|null} Returns the content of the \"headers\" property if possible (it should be a {@link CB_Net.XHR.HEADERS} object). If it is not possible, it will return null if the parameter \"sanitize\" is set to false or an empty object ({}) otherwise.\r\n\t * @todo Consider adding the parameter \"headerNameFirst\".\r\n\t */","meta":{"range":[41896,42412],"filename":"CB_Net_XHR.js","lineno":545,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\net\\XHR","code":{"id":"astnode100104053","name":"CB_Net.XHR.getResponseHeaders","type":"FunctionExpression","paramnames":["response","sanitize"]},"vars":{"sanitize":"CB_Net.XHR.getResponseHeaders~sanitize","headers":"CB_Net.XHR.getResponseHeaders~headers"}},"description":"<p>Returns the [HTTP headers]{@link https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers} (it should be an object) from the [JSON]{@link https://en.wikipedia.org/wiki/JSON} response generated by the &quot;getSslPage&quot; function used by the [PHP]{@link https://en.wikipedia.org/wiki/PHP} proxy (&quot;headers&quot; property). Useful to parse the response from the {@link CB_Net.XHR.callProxy} (or {@link CB_Net.XHR.callREST} and related) function when it has been called with the &quot;forceJSON&quot; parameter set to true.</p>","kind":"function","params":[{"type":{"names":["Object","string"]},"description":"<p>The [XHR object]{@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/XMLHttpRequest} which contains the [responseText]{@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/responseText} property or the value of the [responseText]{@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/responseText} property (string) itself which should contain the [JSON]{@link https://en.wikipedia.org/wiki/JSON} response generated by the &quot;getSslPage&quot; function used by the [PHP]{@link https://en.wikipedia.org/wiki/PHP} proxy. If a string is provided, tries to parse it as a [JSON]{@link https://en.wikipedia.org/wiki/JSON} object. The &quot;headers&quot; property will be tried to be returned from it.</p>","name":"response"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":true,"description":"<p>If it is set to true and the &quot;headers&quot; property is not found, it will return an empty object ({}) instead of returning null.</p>","name":"sanitize"}],"returns":[{"type":{"names":["Object","null"]},"description":"<p>Returns the content of the &quot;headers&quot; property if possible (it should be a {@link CB_Net.XHR.HEADERS} object). If it is not possible, it will return null if the parameter &quot;sanitize&quot; is set to false or an empty object ({}) otherwise.</p>"}],"todo":["Consider adding the parameter \"headerNameFirst\"."],"name":"getResponseHeaders","longname":"CB_Net.XHR.getResponseHeaders","memberof":"CB_Net.XHR","scope":"static"},{"comment":"/**\r\n\t * Returns the [HTTP status]{@link https://developer.mozilla.org/en-US/docs/Web/HTTP/Status} code from an [XHR object]{@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/XMLHttpRequest} ([status]{@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/status} property) or from the info array generated by the [PHP]{@link https://en.wikipedia.org/wiki/PHP}'s [curl_getinfo]{@link http://php.net/manual/function.curl-getinfo.php} function (\"http_code\" index) or from the [JSON]{@link https://en.wikipedia.org/wiki/JSON} response generated by the \"getSslPage\" function used by the [PHP]{@link https://en.wikipedia.org/wiki/PHP} proxy ([status]{@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/status} property). Useful to parse the response from the {@link CB_Net.XHR.callProxy} (or {@link CB_Net.XHR.callREST} and related) function when it has been called with the \"forceJSON\" parameter set to true.\r\n\t * @function\r\n\t * @param {Object|string} response - The [XHR object]{@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/XMLHttpRequest} which contains the [status]{@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/status} property or the value of the [responseText]{@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/responseText} property (string) itself which should contain the [JSON]{@link https://en.wikipedia.org/wiki/JSON} response generated by the \"getSslPage\" function used by the [PHP]{@link https://en.wikipedia.org/wiki/PHP} proxy. If a string is provided, tries to parse it as a [JSON]{@link https://en.wikipedia.org/wiki/JSON} object. The [status]{@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/status} property will be tried to be returned from it (or the \"http_code\" property as a fallback).\r\n\t * @param {boolean} [sanitize=true] - If it is set to true and neither the \"status\" nor the \"http_code\" property are found (or is not a number), it will return the value of \"statusDefault\" instead of returning null.\r\n\t * @param {boolean} [statusDefault=-1] - Default value to return when the status cannot be found (or is not a number). Only used when the \"sanitize\" parameter is set to true.\r\n\t * @returns {integer|*} Returns the content of the [status]{@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/status} (or \"http_code\") property if possible (it should be an integer). If it is not possible, it will return null if the parameter \"sanitize\" is set to false or the value of \"statusDefault\" otherwise.\r\n\t */","meta":{"range":[45012,45735],"filename":"CB_Net_XHR.js","lineno":562,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\net\\XHR","code":{"id":"astnode100104104","name":"CB_Net.XHR.getStatusCode","type":"FunctionExpression","paramnames":["response","statusDefault","sanitize"]},"vars":{"sanitize":"CB_Net.XHR.getStatusCode~sanitize","statusDefault":"CB_Net.XHR.getStatusCode~statusDefault","statusCode":"CB_Net.XHR.getStatusCode~statusCode"}},"description":"<p>Returns the [HTTP status]{@link https://developer.mozilla.org/en-US/docs/Web/HTTP/Status} code from an [XHR object]{@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/XMLHttpRequest} ([status]{@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/status} property) or from the info array generated by the [PHP]{@link https://en.wikipedia.org/wiki/PHP}'s [curl_getinfo]{@link http://php.net/manual/function.curl-getinfo.php} function (&quot;http_code&quot; index) or from the [JSON]{@link https://en.wikipedia.org/wiki/JSON} response generated by the &quot;getSslPage&quot; function used by the [PHP]{@link https://en.wikipedia.org/wiki/PHP} proxy ([status]{@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/status} property). Useful to parse the response from the {@link CB_Net.XHR.callProxy} (or {@link CB_Net.XHR.callREST} and related) function when it has been called with the &quot;forceJSON&quot; parameter set to true.</p>","kind":"function","params":[{"type":{"names":["Object","string"]},"description":"<p>The [XHR object]{@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/XMLHttpRequest} which contains the [status]{@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/status} property or the value of the [responseText]{@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/responseText} property (string) itself which should contain the [JSON]{@link https://en.wikipedia.org/wiki/JSON} response generated by the &quot;getSslPage&quot; function used by the [PHP]{@link https://en.wikipedia.org/wiki/PHP} proxy. If a string is provided, tries to parse it as a [JSON]{@link https://en.wikipedia.org/wiki/JSON} object. The [status]{@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/status} property will be tried to be returned from it (or the &quot;http_code&quot; property as a fallback).</p>","name":"response"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":true,"description":"<p>If it is set to true and neither the &quot;status&quot; nor the &quot;http_code&quot; property are found (or is not a number), it will return the value of &quot;statusDefault&quot; instead of returning null.</p>","name":"sanitize"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":-1,"description":"<p>Default value to return when the status cannot be found (or is not a number). Only used when the &quot;sanitize&quot; parameter is set to true.</p>","name":"statusDefault"}],"returns":[{"type":{"names":["integer","*"]},"description":"<p>Returns the content of the [status]{@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/status} (or &quot;http_code&quot;) property if possible (it should be an integer). If it is not possible, it will return null if the parameter &quot;sanitize&quot; is set to false or the value of &quot;statusDefault&quot; otherwise.</p>"}],"name":"getStatusCode","longname":"CB_Net.XHR.getStatusCode","memberof":"CB_Net.XHR","scope":"static"},{"comment":"/**\r\n\t * Returns the response content from an [XHR object]{@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/XMLHttpRequest} (from its [responseText]{@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/responseText} property) or from the [JSON]{@link https://en.wikipedia.org/wiki/JSON} response generated by the \"getSslPage\" function used by the [PHP]{@link https://en.wikipedia.org/wiki/PHP} proxy ([response]{@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/response} property). Useful to parse the response from the {@link CB_Net.XHR.callProxy} (or {@link CB_Net.XHR.callREST} and related) function when it has been called with the \"forceJSON\" parameter set to true.\r\n\t * @function\r\n\t * @param {Object|string} response - The [XHR object]{@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/XMLHttpRequest} which contains the [responseText]{@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/responseText} property or the value of the [responseText]{@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/responseText} property (string) itself which should contain the [JSON]{@link https://en.wikipedia.org/wiki/JSON} response generated by the \"getSslPage\" function used by the [PHP]{@link https://en.wikipedia.org/wiki/PHP} proxy. If a string is provided, tries to parse it as a [JSON]{@link https://en.wikipedia.org/wiki/JSON} object. The [responseText]{@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/responseText} property (or the [response]{@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/response} property as a fallback) will be tried to be returned from it.\r\n\t * @param {boolean} [sanitize=true] - If it is set to true and neither the [responseText]{@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/responseText} nor the [response]{@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/response} properties are found, it will return an empty string (\"\") instead of returning null.\r\n\t * @returns {string|null} Returns the content of the [responseText]{@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/responseText} (or [response]{@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/response}) property if possible. If it is not possible, it will return null if the parameter \"sanitize\" is set to false or an empty string (\"\") otherwise.\r\n\t */","meta":{"range":[48232,48934],"filename":"CB_Net_XHR.js","lineno":580,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy\\CrossBase\\net\\XHR","code":{"id":"astnode100104193","name":"CB_Net.XHR.getResponseContent","type":"FunctionExpression","paramnames":["responseOrXHR","sanitize"]},"vars":{"sanitize":"CB_Net.XHR.getResponseContent~sanitize","response":"CB_Net.XHR.getResponseContent~response"}},"description":"<p>Returns the response content from an [XHR object]{@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/XMLHttpRequest} (from its [responseText]{@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/responseText} property) or from the [JSON]{@link https://en.wikipedia.org/wiki/JSON} response generated by the &quot;getSslPage&quot; function used by the [PHP]{@link https://en.wikipedia.org/wiki/PHP} proxy ([response]{@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/response} property). Useful to parse the response from the {@link CB_Net.XHR.callProxy} (or {@link CB_Net.XHR.callREST} and related) function when it has been called with the &quot;forceJSON&quot; parameter set to true.</p>","kind":"function","params":[{"type":{"names":["Object","string"]},"description":"<p>The [XHR object]{@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/XMLHttpRequest} which contains the [responseText]{@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/responseText} property or the value of the [responseText]{@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/responseText} property (string) itself which should contain the [JSON]{@link https://en.wikipedia.org/wiki/JSON} response generated by the &quot;getSslPage&quot; function used by the [PHP]{@link https://en.wikipedia.org/wiki/PHP} proxy. If a string is provided, tries to parse it as a [JSON]{@link https://en.wikipedia.org/wiki/JSON} object. The [responseText]{@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/responseText} property (or the [response]{@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/response} property as a fallback) will be tried to be returned from it.</p>","name":"response"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":true,"description":"<p>If it is set to true and neither the [responseText]{@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/responseText} nor the [response]{@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/response} properties are found, it will return an empty string (&quot;&quot;) instead of returning null.</p>","name":"sanitize"}],"returns":[{"type":{"names":["string","null"]},"description":"<p>Returns the content of the [responseText]{@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/responseText} (or [response]{@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/response}) property if possible. If it is not possible, it will return null if the parameter &quot;sanitize&quot; is set to false or an empty string (&quot;&quot;) otherwise.</p>"}],"name":"getResponseContent","longname":"CB_Net.XHR.getResponseContent","memberof":"CB_Net.XHR","scope":"static"},{"comment":"/**\r\n * @file Main CrossBrowdy file.\r\n * @author Joan Alba Maldonado <workindalian@gmail.com>\r\n * @todo Clear all timeouts before creating them (just in case).\r\n */","meta":{"filename":"CrossBrowdy.js","lineno":3,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy","code":{}},"name":"CrossBrowdy.js","kind":"file","description":"<p>Main CrossBrowdy file.</p>","preserveName":true,"author":["Joan Alba Maldonado <workindalian@gmail.com>"],"todo":["Clear all timeouts before creating them (just in case)."],"longname":"CrossBrowdy.js","scope":"global"},{"comment":"/**\r\n * Keeps the name of the script (the main script will use this name with the \".js\" extension). Case sensitive.\r\n *\t@constant\r\n * @type {string}\r\n * @default\r\n */","meta":{"range":[454,477],"filename":"CrossBrowdy.js","lineno":17,"columnno":4,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy","code":{"id":"astnode100104257","name":"CB_NAME","type":"Literal","value":"CrossBrowdy"}},"description":"<p>Keeps the name of the script (the main script will use this name with the &quot;.js&quot; extension). Case sensitive.</p>","kind":"constant","type":{"names":["string"]},"defaultvalue":"CrossBrowdy","name":"CB_NAME","longname":"CB_NAME","scope":"global","params":[]},{"comment":"/**\r\n * CrossBrowdy version.\r\n *\t@constant\r\n * @type {string}\r\n */","meta":{"range":[555,579],"filename":"CrossBrowdy.js","lineno":24,"columnno":4,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy","code":{"id":"astnode100104261","name":"CB_VERSION","type":"Literal","value":"0.99.95.2"}},"description":"<p>CrossBrowdy version.</p>","kind":"constant","type":{"names":["string"]},"name":"CB_VERSION","longname":"CB_VERSION","scope":"global","params":[]},{"comment":"/**\r\n * Keeps the CrossBrowdy \"this\" context.\r\n *\t@constant\r\n * @type {Object}\r\n */","meta":{"range":[674,688],"filename":"CrossBrowdy.js","lineno":31,"columnno":4,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy","code":{"id":"astnode100104265","name":"CB_this","type":"ThisExpression","value":"this"}},"description":"<p>Keeps the CrossBrowdy &quot;this&quot; context.</p>","kind":"constant","type":{"names":["Object"]},"name":"CB_this","longname":"CB_this","scope":"global","params":[]},{"comment":"/**\r\n * Two-dimensional object defined by the user with the desired options for CrossBrowdy and its modules. The options supported are the ones used by the {@link CB_Configuration} object.\r\n\t<br>\r\n\tFirst-level indexes should belong to the module name (or to \"CrossBrowdy\", for general options) and second-level indexes should belong to the option name.\r\n\t<br>\r\n\tExample:\r\n\t<br>\r\n\t{\r\n\t\tCrossBrowdy:\r\n\t\t{\r\n\t\t\tCB_console_ALLOW_ALERTS: false\r\n\t\t},\r\n\t\tCrossBase:\r\n\t\t{\r\n\t\t\tSLCANVAS_LOAD : true,\r\n\t\t\tFLASHCANVAS_LOAD : true\r\n\t\t}\r\n\t}\r\n \r\n *\t@constant CB_OPTIONS\r\n * @type {Object}\r\n * @default undefined\r\n */","meta":{"filename":"CrossBrowdy.js","lineno":33,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy","code":{}},"description":"<p>Two-dimensional object defined by the user with the desired options for CrossBrowdy and its modules. The options supported are the ones used by the {@link CB_Configuration} object.<br> <br><br> First-level indexes should belong to the module name (or to &quot;CrossBrowdy&quot;, for general options) and second-level indexes should belong to the option name.<br> <br><br> Example:<br> <br><br> {<br> CrossBrowdy:<br> {<br> CB_console_ALLOW_ALERTS: false<br> },<br> CrossBase:<br> {<br> SLCANVAS_LOAD : true,<br> FLASHCANVAS_LOAD : true<br> }<br> }</p>","kind":"constant","name":"CB_OPTIONS","type":{"names":["Object"]},"defaultvalue":"undefined","longname":"CB_OPTIONS","scope":"global"},{"comment":"/**\r\n * Static class to manage the configuration. It will be overwritten with the values defined in {@link CB_OPTIONS} (if any).\r\n\t<br>\r\n\tFirst-level indexes should belong to the module name and second-level indexes should belong to the option name.\r\n\t<br>\r\n\tFollows the same format as {@link CB_OPTIONS}.\r\n * @namespace\r\n*/","meta":{"range":[1629,1650],"filename":"CrossBrowdy.js","lineno":65,"columnno":4,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy","code":{"id":"astnode100104269","name":"CB_Configuration","type":"ObjectExpression","value":"{}"}},"description":"<p>Static class to manage the configuration. It will be overwritten with the values defined in {@link CB_OPTIONS} (if any).<br> <br><br> First-level indexes should belong to the module name and second-level indexes should belong to the option name.<br> <br><br> Follows the same format as {@link CB_OPTIONS}.</p>","kind":"namespace","name":"CB_Configuration","longname":"CB_Configuration","scope":"global","params":[]},{"comment":"/**\r\n Property that contains an object with the options for the main script.\r\n * @namespace CB_Configuration.CrossBrowdy\r\n */","meta":{"filename":"CrossBrowdy.js","lineno":67,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy","code":{}},"description":"<p>Property that contains an object with the options for the main script.</p>","kind":"namespace","name":"CrossBrowdy","memberof":"CB_Configuration","longname":"CB_Configuration.CrossBrowdy","scope":"static"},{"comment":"/**\r\n\t * Default path of the script (path can be changed when {@link CB_init} is called)\r\n\t * @memberof CB_Configuration.CrossBrowdy\r\n\t *\t@constant\r\n\t * @type {string}\r\n\t * @default {@link CB_NAME} + \"/\"\r\n\t */","meta":{"range":[2032,2074],"filename":"CrossBrowdy.js","lineno":80,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy","code":{"id":"astnode100104278","name":"SCRIPT_PATH_DEFAULT","type":"BinaryExpression","value":""}},"description":"<p>Default path of the script (path can be changed when {@link CB_init} is called)</p>","memberof":"CB_Configuration.CrossBrowdy","kind":"constant","type":{"names":["string"]},"defaultvalue":"{@link CB_NAME} + \"/\"","name":"SCRIPT_PATH_DEFAULT","longname":"CB_Configuration.CrossBrowdy.SCRIPT_PATH_DEFAULT","scope":"static"},{"comment":"/**\r\n\t * Defines whether to show the splash screen in the beginning by default or not.\r\n\t * @memberof CB_Configuration.CrossBrowdy\r\n\t *\t@constant\r\n\t * @type {boolean}\r\n\t * @default\r\n\t */","meta":{"range":[2276,2308],"filename":"CrossBrowdy.js","lineno":90,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy","code":{"id":"astnode100104284","name":"SHOW_SPLASH_SCREEN_DEFAULT","type":"Literal","value":true}},"description":"<p>Defines whether to show the splash screen in the beginning by default or not.</p>","memberof":"CB_Configuration.CrossBrowdy","kind":"constant","type":{"names":["boolean"]},"defaultvalue":true,"name":"SHOW_SPLASH_SCREEN_DEFAULT","longname":"CB_Configuration.CrossBrowdy.SHOW_SPLASH_SCREEN_DEFAULT","scope":"static"},{"comment":"/**\r\n\t * Defines whether to register statistics or not. If it is enabled, the URL defined in {@link CB_Configuration.CrossBrowdy.STATS_URL} will be called (by including it as a JavaScript file) as soon as CrossBrowdy gets called (might not be ready yet).\r\n\t * This parameter do not do anything else, just includes your desired URL (defined in {@link CB_Configuration.CrossBrowdy.STATS_URL}) as a JavaScript file when CrossBrowdy is called.\r\n\t * @memberof CB_Configuration.CrossBrowdy\r\n\t *\t@constant\r\n\t * @type {boolean}\r\n\t * @default\r\n\t */","meta":{"range":[2863,2875],"filename":"CrossBrowdy.js","lineno":101,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy","code":{"id":"astnode100104286","name":"STATS","type":"Literal","value":false}},"description":"<p>Defines whether to register statistics or not. If it is enabled, the URL defined in {@link CB_Configuration.CrossBrowdy.STATS_URL} will be called (by including it as a JavaScript file) as soon as CrossBrowdy gets called (might not be ready yet).<br>This parameter do not do anything else, just includes your desired URL (defined in {@link CB_Configuration.CrossBrowdy.STATS_URL}) as a JavaScript file when CrossBrowdy is called.</p>","memberof":"CB_Configuration.CrossBrowdy","kind":"constant","type":{"names":["boolean"]},"defaultvalue":false,"name":"STATS","longname":"CB_Configuration.CrossBrowdy.STATS","scope":"static"},{"comment":"/**\r\n\t * URL to register the statistics if {@link CB_Configuration.CrossBrowdy.STATS} is enabled. When {@link CB_Configuration.CrossBrowdy.STATS} is enabled, this URL will be included as a JavaScript file as soon as CrossBrowdy gets called (might not be ready yet).\r\n\t * The URL will be called (included in the document as a JavaScript file) adding three parameters: \"cb\" parameter with the CrossBrowdy version as the value, \"time\" with a timestamp which belongs to the current time of the client and \"url\" parameter with the current URL visited by the user as the value.\r\n\t * @memberof CB_Configuration.CrossBrowdy\r\n\t *\t@constant\r\n\t * @type {string}\r\n\t * @default\r\n\t */","meta":{"range":[3561,3617],"filename":"CrossBrowdy.js","lineno":112,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy","code":{"id":"astnode100104288","name":"STATS_URL","type":"Literal","value":"https://crossbrowdy.com/_stats/CB_stats.php"}},"description":"<p>URL to register the statistics if {@link CB_Configuration.CrossBrowdy.STATS} is enabled. When {@link CB_Configuration.CrossBrowdy.STATS} is enabled, this URL will be included as a JavaScript file as soon as CrossBrowdy gets called (might not be ready yet).<br>The URL will be called (included in the document as a JavaScript file) adding three parameters: &quot;cb&quot; parameter with the CrossBrowdy version as the value, &quot;time&quot; with a timestamp which belongs to the current time of the client and &quot;url&quot; parameter with the current URL visited by the user as the value.</p>","memberof":"CB_Configuration.CrossBrowdy","kind":"constant","type":{"names":["string"]},"defaultvalue":"https://crossbrowdy.com/_stats/CB_stats.php","name":"STATS_URL","longname":"CB_Configuration.CrossBrowdy.STATS_URL","scope":"static"},{"comment":"/**\r\n\t * Defines whether to allow the use of alert()'s as a fallback when using {@link CB_console} and neither the [console]{@link https://developer.mozilla.org/en-US/docs/Web/API/Console} object nor a DOM element with \"CB_console\" ID are found.\r\n\t * @memberof CB_Configuration.CrossBrowdy\r\n\t *\t@constant\r\n\t * @type {boolean}\r\n\t * @default\r\n\t */","meta":{"range":[3978,4007],"filename":"CrossBrowdy.js","lineno":122,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy","code":{"id":"astnode100104290","name":"CB_console_ALLOW_ALERTS","type":"Literal","value":true}},"description":"<p>Defines whether to allow the use of alert()'s as a fallback when using {@link CB_console} and neither the [console]{@link https://developer.mozilla.org/en-US/docs/Web/API/Console} object nor a DOM element with &quot;CB_console&quot; ID are found.</p>","memberof":"CB_Configuration.CrossBrowdy","kind":"constant","type":{"names":["boolean"]},"defaultvalue":true,"name":"CB_console_ALLOW_ALERTS","longname":"CB_Configuration.CrossBrowdy.CB_console_ALLOW_ALERTS","scope":"static"},{"comment":"/**\r\n\t * Default milliseconds before firing the timeout callback for the {@link CB_includeJSFile} function.\r\n\t * @memberof CB_Configuration.CrossBrowdy\r\n\t *\t@constant\r\n\t * @type {int}\r\n\t * @default\r\n\t */","meta":{"range":[4226,4268],"filename":"CrossBrowdy.js","lineno":132,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy","code":{"id":"astnode100104292","name":"CB_includeJSFile_TIMEOUT_MS_DEFAULT","type":"Literal","value":90000}},"description":"<p>Default milliseconds before firing the timeout callback for the {@link CB_includeJSFile} function.</p>","memberof":"CB_Configuration.CrossBrowdy","kind":"constant","type":{"names":["int"]},"defaultvalue":90000,"name":"CB_includeJSFile_TIMEOUT_MS_DEFAULT","longname":"CB_Configuration.CrossBrowdy.CB_includeJSFile_TIMEOUT_MS_DEFAULT","scope":"static"},{"comment":"/**\r\n * Static class that contains all the modules and the tools to manage them.\r\n * @namespace\r\n */","meta":{"range":[4737,4752],"filename":"CrossBrowdy.js","lineno":156,"columnno":4,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy","code":{"id":"astnode100104305","name":"CB_Modules","type":"ObjectExpression","value":"{}"}},"description":"<p>Static class that contains all the modules and the tools to manage them.</p>","kind":"namespace","name":"CB_Modules","longname":"CB_Modules","scope":"global","params":[]},{"comment":"/**\r\n * Callback that is called before loading a file and should return true if we want to load the file or false otherwise.\r\n * @memberof CB_Modules\r\n * @callback CB_Modules.neededFile_LOAD_CHECKER\r\n * @param {string} filepath - Filepath of the needed file (including the filename).\r\n * @param {CB_Modules.NEEDED_FILE} neededFile - Object that contains the needed file.\r\n * @returns {boolean} - Returns true if we want to load the file or false otherwise.\r\n */","meta":{"filename":"CrossBrowdy.js","lineno":181,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy","code":{}},"description":"<p>Callback that is called before loading a file and should return true if we want to load the file or false otherwise.</p>","memberof":"CB_Modules","kind":"typedef","name":"neededFile_LOAD_CHECKER","type":{"names":["function"]},"params":[{"type":{"names":["string"]},"description":"<p>Filepath of the needed file (including the filename).</p>","name":"filepath"},{"type":{"names":["CB_Modules.NEEDED_FILE"]},"description":"<p>Object that contains the needed file.</p>","name":"neededFile"}],"returns":[{"type":{"names":["boolean"]},"description":"<ul>\n<li>Returns true if we want to load the file or false otherwise.</li>\n</ul>"}],"longname":"CB_Modules.neededFile_LOAD_CHECKER","scope":"static"},{"comment":"/**\r\n * Object that contains a needed file for a module.\r\n * @memberof CB_Modules\r\n * @typedef {Object} CB_Modules.NEEDED_FILE\r\n * @property {boolean} [load=false] - Defines whether to load the file or not.\r\n * @property {boolean} [mandatory=false] - Defines whether the file is mandatory. If the file is not mandatory, its module could be declared as loaded successfully before the file is loaded (and maybe never will).\r\n * @property {boolean} [absolutePath=false] - Defines whether the path of the file is relative to the path of the main script or absolute.\r\n * @property {CB_Modules.neededFile_LOAD_CHECKER} [loadChecker] - Callback that will be called when the file tries to be loaded and should return true if the file needs to be loaded.\r\n * @property {string} [id] - Desired string to identify the file.\r\n * @property {array} [requires] - Array of strings with the IDs of the files that must be loaded before loading this file. The file will not be loaded until the required files are loaded first.\r\n */","meta":{"filename":"CrossBrowdy.js","lineno":190,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy","code":{}},"description":"<p>Object that contains a needed file for a module.</p>","memberof":"CB_Modules","kind":"typedef","name":"NEEDED_FILE","type":{"names":["Object"]},"properties":[{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>Defines whether to load the file or not.</p>","name":"load"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>Defines whether the file is mandatory. If the file is not mandatory, its module could be declared as loaded successfully before the file is loaded (and maybe never will).</p>","name":"mandatory"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>Defines whether the path of the file is relative to the path of the main script or absolute.</p>","name":"absolutePath"},{"type":{"names":["CB_Modules.neededFile_LOAD_CHECKER"]},"optional":true,"description":"<p>Callback that will be called when the file tries to be loaded and should return true if the file needs to be loaded.</p>","name":"loadChecker"},{"type":{"names":["string"]},"optional":true,"description":"<p>Desired string to identify the file.</p>","name":"id"},{"type":{"names":["array"]},"optional":true,"description":"<p>Array of strings with the IDs of the files that must be loaded before loading this file. The file will not be loaded until the required files are loaded first.</p>","name":"requires"}],"longname":"CB_Modules.NEEDED_FILE","scope":"static"},{"comment":"/**\r\n * Object that contains the needed files for a module. Each property will represent a needed file.\r\n * @memberof CB_Modules\r\n * @typedef {Object} CB_Modules.NEEDED_FILES\r\n * @property {CB_Modules.NEEDED_FILE} path_to_the_file - Object that contains a needed file for a module. The property name must be either the path to the file or a variable containing it. Tto use a variable, the name of the property must start with \"VALUEOF_\" and continue with the name of the variable. In the case that the variable is an object, each property must be separated by a dot (\".\").\r\n */","meta":{"filename":"CrossBrowdy.js","lineno":202,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy","code":{}},"description":"<p>Object that contains the needed files for a module. Each property will represent a needed file.</p>","memberof":"CB_Modules","kind":"typedef","name":"NEEDED_FILES","type":{"names":["Object"]},"properties":[{"type":{"names":["CB_Modules.NEEDED_FILE"]},"description":"<p>Object that contains a needed file for a module. The property name must be either the path to the file or a variable containing it. Tto use a variable, the name of the property must start with &quot;VALUEOF_&quot; and continue with the name of the variable. In the case that the variable is an object, each property must be separated by a dot (&quot;.&quot;).</p>","name":"path_to_the_file"}],"longname":"CB_Modules.NEEDED_FILES","scope":"static"},{"comment":"/**\r\n * Object that contains a needed module for a parent module.\r\n * @memberof CB_Modules\r\n * @typedef {Object} CB_Modules.NEEDED_MODULE\r\n * @property {string} name - Name of the module.\r\n * @property {CB_Modules.NEEDED_FILES} neededFiles - Object containing the needed files.\r\n */","meta":{"filename":"CrossBrowdy.js","lineno":210,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy","code":{}},"description":"<p>Object that contains a needed module for a parent module.</p>","memberof":"CB_Modules","kind":"typedef","name":"NEEDED_MODULE","type":{"names":["Object"]},"properties":[{"type":{"names":["string"]},"description":"<p>Name of the module.</p>","name":"name"},{"type":{"names":["CB_Modules.NEEDED_FILES"]},"description":"<p>Object containing the needed files.</p>","name":"neededFiles"}],"longname":"CB_Modules.NEEDED_MODULE","scope":"static"},{"comment":"/**\r\n * Callback for the different events of a module.\r\n * @memberof CB_Modules\r\n * @callback CB_Modules.CALLBACK\r\n * @param {string} scriptPath - The value for the \"scriptPath\" parameter used by {@link CB_init} when it was called.\r\n */","meta":{"filename":"CrossBrowdy.js","lineno":218,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy","code":{}},"description":"<p>Callback for the different events of a module.</p>","memberof":"CB_Modules","kind":"typedef","name":"CALLBACK","type":{"names":["function"]},"params":[{"type":{"names":["string"]},"description":"<p>The value for the &quot;scriptPath&quot; parameter used by {@link CB_init} when it was called.</p>","name":"scriptPath"}],"longname":"CB_Modules.CALLBACK","scope":"static"},{"comment":"/**\r\n * Object that contains a module.\r\n * @memberof CB_Modules\r\n * @typedef {Object} CB_Modules.MODULE\r\n * @property {string} name - Name of the module.\r\n * @property {CB_Modules.STATUSES} status - Module status.\r\n * @property {CB_Modules.CALLBACK} onCall - Callback for when the module is called to be loaded. Being \"this\" the {@link CB_Modules.MODULE} object itself.\r\n * @property {CB_Modules.CALLBACK} onLoad - Callback for when the module loads successfully. Being \"this\" the {@link CB_Modules.MODULE} object itself.\r\n * @property {CB_Modules.CALLBACK} onReady - Callback for when the module is totally ready. Being \"this\" the {@link CB_Modules.MODULE} object itself.\r\n * @property {CB_Modules.CALLBACK} onFail - Callback for when the module fails to load. Being \"this\" the {@link CB_Modules.MODULE} object itself. NOT IMPLEMENTED YET.\r\n * @property {CB_Modules.NEEDED_FILES} neededFiles - Object containing the needed files.\r\n * @property {array} neededModules - Array of {@link CB_Modules.NEEDED_MODULE} objects, containing the needed modules.\r\n * @property {string} credits - Credits of the module.\r\n */","meta":{"filename":"CrossBrowdy.js","lineno":225,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy","code":{}},"description":"<p>Object that contains a module.</p>","memberof":"CB_Modules","kind":"typedef","name":"MODULE","type":{"names":["Object"]},"properties":[{"type":{"names":["string"]},"description":"<p>Name of the module.</p>","name":"name"},{"type":{"names":["CB_Modules.STATUSES"]},"description":"<p>Module status.</p>","name":"status"},{"type":{"names":["CB_Modules.CALLBACK"]},"description":"<p>Callback for when the module is called to be loaded. Being &quot;this&quot; the {@link CB_Modules.MODULE} object itself.</p>","name":"onCall"},{"type":{"names":["CB_Modules.CALLBACK"]},"description":"<p>Callback for when the module loads successfully. Being &quot;this&quot; the {@link CB_Modules.MODULE} object itself.</p>","name":"onLoad"},{"type":{"names":["CB_Modules.CALLBACK"]},"description":"<p>Callback for when the module is totally ready. Being &quot;this&quot; the {@link CB_Modules.MODULE} object itself.</p>","name":"onReady"},{"type":{"names":["CB_Modules.CALLBACK"]},"description":"<p>Callback for when the module fails to load. Being &quot;this&quot; the {@link CB_Modules.MODULE} object itself. NOT IMPLEMENTED YET.</p>","name":"onFail"},{"type":{"names":["CB_Modules.NEEDED_FILES"]},"description":"<p>Object containing the needed files.</p>","name":"neededFiles"},{"type":{"names":["array"]},"description":"<p>Array of {@link CB_Modules.NEEDED_MODULE} objects, containing the needed modules.</p>","name":"neededModules"},{"type":{"names":["string"]},"description":"<p>Credits of the module.</p>","name":"credits"}],"longname":"CB_Modules.MODULE","scope":"static"},{"comment":"/**\r\n * Attaches the given credits to the default ones (to {@link CB_CREDITS_DEFAULT}).\r\n * @function\r\n * @param {string} credits - Path to the JS file.\r\n * @returns {string} Returns the default credits after attaching the given ones.\r\n */","meta":{"range":[12003,12083],"filename":"CrossBrowdy.js","lineno":312,"columnno":1,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy","code":{"id":"astnode100104459","name":"CB_addCredits","type":"FunctionDeclaration","paramnames":["credits"]},"vars":{"CB_CREDITS_DEFAULT":"CB_addCredits~CB_CREDITS_DEFAULT"}},"description":"<p>Attaches the given credits to the default ones (to {@link CB_CREDITS_DEFAULT}).</p>","kind":"function","params":[{"type":{"names":["string"]},"description":"<p>Path to the JS file.</p>","name":"credits"}],"returns":[{"type":{"names":["string"]},"description":"<p>Returns the default credits after attaching the given ones.</p>"}],"name":"CB_addCredits","longname":"CB_addCredits","scope":"global"},{"comment":"/**\r\n * Alias for the \"console\" function which fallbacks to a DOM element with \"CB_console\" id (its CSS \"style\" attribute will be modified if needed, which means that its \"display\" property will be set to \"block\" if it is \"none\" and its \"visibility\" property to \"visible\" regardless its previous value) or even to an alert when it is not available (\"alert\" will only be used as a fallback in the case that the {@link CB_console_ALLOW_ALERTS} parameter is set to true).\r\n * @function\r\n * @param {string} message - Message to display\r\n * @todo When \"console\" is not available and it gets polyfilled, allow more parameters (use \"arguments\").\r\n */","meta":{"range":[12742,12752],"filename":"CrossBrowdy.js","lineno":324,"columnno":4,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy","code":{"id":"astnode100104468","name":"CB_console"}},"description":"<p>Alias for the &quot;console&quot; function which fallbacks to a DOM element with &quot;CB_console&quot; id (its CSS &quot;style&quot; attribute will be modified if needed, which means that its &quot;display&quot; property will be set to &quot;block&quot; if it is &quot;none&quot; and its &quot;visibility&quot; property to &quot;visible&quot; regardless its previous value) or even to an alert when it is not available (&quot;alert&quot; will only be used as a fallback in the case that the {@link CB_console_ALLOW_ALERTS} parameter is set to true).</p>","kind":"function","params":[{"type":{"names":["string"]},"description":"<p>Message to display</p>","name":"message"}],"todo":["When \"console\" is not available and it gets polyfilled, allow more parameters (use \"arguments\")."],"name":"CB_console","longname":"CB_console","scope":"global"},{"comment":"/**\r\n * Callback for when the file is included successfully or fails to load.\r\n * @callback CB_includeJSFile_CALLBACK\r\n * @param {string} filepath - The 'filepath' parameter when {@link CB_includeJSFile} was called (if any).\r\n * @param {CB_includeJSFile_CALLBACK} callbackOk - The 'callbackOk' parameter when {@link CB_includeJSFile} was called (if any).\r\n * @param {CB_includeJSFile_CALLBACK} callbackError - The 'callbackError' parameter when {@link CB_includeJSFile} was called (if any).\r\n * @param {integer} timeoutMs - The 'timeoutMs' parameter when {@link CB_includeJSFile} was called (if any).\r\n * @param {boolean} asynchronously - The 'asynchronously' parameter when {@link CB_includeJSFile} was called (if any).\r\n */","meta":{"filename":"CrossBrowdy.js","lineno":359,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy","code":{}},"description":"<p>Callback for when the file is included successfully or fails to load.</p>","kind":"typedef","name":"CB_includeJSFile_CALLBACK","type":{"names":["function"]},"params":[{"type":{"names":["string"]},"description":"<p>The 'filepath' parameter when {@link CB_includeJSFile} was called (if any).</p>","name":"filepath"},{"type":{"names":["CB_includeJSFile_CALLBACK"]},"description":"<p>The 'callbackOk' parameter when {@link CB_includeJSFile} was called (if any).</p>","name":"callbackOk"},{"type":{"names":["CB_includeJSFile_CALLBACK"]},"description":"<p>The 'callbackError' parameter when {@link CB_includeJSFile} was called (if any).</p>","name":"callbackError"},{"type":{"names":["integer"]},"description":"<p>The 'timeoutMs' parameter when {@link CB_includeJSFile} was called (if any).</p>","name":"timeoutMs"},{"type":{"names":["boolean"]},"description":"<p>The 'asynchronously' parameter when {@link CB_includeJSFile} was called (if any).</p>","name":"asynchronously"}],"longname":"CB_includeJSFile_CALLBACK","scope":"global"},{"comment":"/**\r\n * Includes a JavaScript file to the current document.\r\n * @function\r\n * @param {string} filepath - Path to the JS file.\r\n * @param {CB_includeJSFile_CALLBACK} [callbackOk] - Callback for when the file is included successfully.\r\n * @param {CB_includeJSFile_CALLBACK} [callbackError] - Callback for when there is any error including the file or it cannot be included after the defined timeout.\r\n * @param {integer} [timeoutMs={@link CB_Configuration.CrossBrowdy.CB_includeJSFile_TIMEOUT_MS_DEFAULT}] - Timeout in milliseconds to consider that the inclusion of the file has failed.\r\n * @param {boolean} [asynchronously=true] - Defines whether to load the file asynchronously or not.\r\n * @param {string} [fileId] - Internal usage recommended only.\r\n * @param {array} [fileRequires] - Internal usage recommended only.\r\n * @param {boolean} [notMandatory=false] - Internal usage recommended only. \r\n * @returns {Object|null|false} Returns null when the script file cannot be loaded yet as some required file has still not been loaded. Returns false when neither the 'HEAD' tag nor the document body can be found. Otherwise, returns an object whose two properties are 'scriptElement' (with the [SCRIPT]{@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/script} element just created) and 'timeoutFailure' (with the [setTimeout]{@link https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/setTimeout} ID created to check whether the file cannot be loaded after the given time).\r\n */","meta":{"range":[16022,19841],"filename":"CrossBrowdy.js","lineno":382,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy","code":{"id":"astnode100104613","name":"CB_includeJSFile","type":"FunctionDeclaration","paramnames":["filepath","callbackOk","callbackError","timeoutMs","asynchronously","fileId","fileRequires","notMandatory"]},"vars":{"x":"CB_includeJSFile~x","":null,"timeoutMs":"CB_includeJSFile~timeoutMs","asynchronously":"CB_includeJSFile~asynchronously","CB_filesRequested[undefined]":null,"parentElement":"CB_includeJSFile~parentElement","scriptTag":"CB_includeJSFile~scriptTag","scriptTag.src":"CB_includeJSFile~scriptTag.src","scriptTag.language":"CB_includeJSFile~scriptTag.language","scriptTag.type":"CB_includeJSFile~scriptTag.type","scriptTag.async":"CB_includeJSFile~scriptTag.async","onLoadExecuted":"CB_includeJSFile~onLoadExecuted","onLoad":"CB_includeJSFile~onLoad","scriptTag.onreadystatechange":"CB_includeJSFile~scriptTag.onreadystatechange","scriptTag.onload":"CB_includeJSFile~scriptTag.onload","onErrorExecuted":"CB_includeJSFile~onErrorExecuted","onError":"CB_includeJSFile~onError","scriptTag.onerror":"CB_includeJSFile~scriptTag.onerror","callbackErrorTimeout":"CB_includeJSFile~callbackErrorTimeout"}},"description":"<p>Includes a JavaScript file to the current document.</p>","kind":"function","params":[{"type":{"names":["string"]},"description":"<p>Path to the JS file.</p>","name":"filepath"},{"type":{"names":["CB_includeJSFile_CALLBACK"]},"optional":true,"description":"<p>Callback for when the file is included successfully.</p>","name":"callbackOk"},{"type":{"names":["CB_includeJSFile_CALLBACK"]},"optional":true,"description":"<p>Callback for when there is any error including the file or it cannot be included after the defined timeout.</p>","name":"callbackError"},{"type":{"names":["integer"]},"optional":true,"defaultvalue":"{@link CB_Configuration.CrossBrowdy.CB_includeJSFile_TIMEOUT_MS_DEFAULT}","description":"<p>Timeout in milliseconds to consider that the inclusion of the file has failed.</p>","name":"timeoutMs"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":true,"description":"<p>Defines whether to load the file asynchronously or not.</p>","name":"asynchronously"},{"type":{"names":["string"]},"optional":true,"description":"<p>Internal usage recommended only.</p>","name":"fileId"},{"type":{"names":["array"]},"optional":true,"description":"<p>Internal usage recommended only.</p>","name":"fileRequires"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>Internal usage recommended only.</p>","name":"notMandatory"}],"returns":[{"type":{"names":["Object","null","false"]},"description":"<p>Returns null when the script file cannot be loaded yet as some required file has still not been loaded. Returns false when neither the 'HEAD' tag nor the document body can be found. Otherwise, returns an object whose two properties are 'scriptElement' (with the [SCRIPT]{@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/script} element just created) and 'timeoutFailure' (with the [setTimeout]{@link https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/setTimeout} ID created to check whether the file cannot be loaded after the given time).</p>"}],"name":"CB_includeJSFile","longname":"CB_includeJSFile","scope":"global"},{"comment":"/**\r\n * Callback for when the script is loaded successfully. Without parameters.\r\n * @callback CB_includeRequiredFileErrorCallback\r\n * @param {string} filepath - The 'filepath' parameter when {@link CB_includeJSFile} was called internally (if any).\r\n * @param {CB_includeJSFile_CALLBACK} callbackOk - The 'callbackOk' parameter when {@link CB_includeJSFile} was called internally (if any).\r\n * @param {CB_includeJSFile_CALLBACK} callbackError - The 'callbackError' parameter when {@link CB_includeJSFile} was called internally (if any).\r\n * @param {integer} timeoutMs - The 'timeoutMs' parameter when {@link CB_includeJSFile} was called internally (if any).\r\n * @param {boolean} asynchronously - The 'asynchronously' parameter when {@link CB_includeJSFile} was called (if any).\r\n * @param {object} filesRequested - Object whose indexes are all the filepaths of the script files requested so far and the value is true when the file is still loading (or to be loaded in the future), false if it was loaded successfully (the most likely) or null if it failed to load.\r\n * @param {array} filesLoaded - Numeric array whose values are the filepaths of the script files loaded successfully so far.\r\n */","meta":{"filename":"CrossBrowdy.js","lineno":484,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy","code":{}},"description":"<p>Callback for when the script is loaded successfully. Without parameters.</p>","kind":"typedef","name":"CB_includeRequiredFileErrorCallback","type":{"names":["function"]},"params":[{"type":{"names":["string"]},"description":"<p>The 'filepath' parameter when {@link CB_includeJSFile} was called internally (if any).</p>","name":"filepath"},{"type":{"names":["CB_includeJSFile_CALLBACK"]},"description":"<p>The 'callbackOk' parameter when {@link CB_includeJSFile} was called internally (if any).</p>","name":"callbackOk"},{"type":{"names":["CB_includeJSFile_CALLBACK"]},"description":"<p>The 'callbackError' parameter when {@link CB_includeJSFile} was called internally (if any).</p>","name":"callbackError"},{"type":{"names":["integer"]},"description":"<p>The 'timeoutMs' parameter when {@link CB_includeJSFile} was called internally (if any).</p>","name":"timeoutMs"},{"type":{"names":["boolean"]},"description":"<p>The 'asynchronously' parameter when {@link CB_includeJSFile} was called (if any).</p>","name":"asynchronously"},{"type":{"names":["object"]},"description":"<p>Object whose indexes are all the filepaths of the script files requested so far and the value is true when the file is still loading (or to be loaded in the future), false if it was loaded successfully (the most likely) or null if it failed to load.</p>","name":"filesRequested"},{"type":{"names":["array"]},"description":"<p>Numeric array whose values are the filepaths of the script files loaded successfully so far.</p>","name":"filesLoaded"}],"longname":"CB_includeRequiredFileErrorCallback","scope":"global"},{"comment":"/**\r\n * Sets a status for a given module.\r\n * @memberof CB_Modules\r\n * @function\r\n * @param {string} moduleName - Name of the module.\r\n * @param {integer} status - The desired status. Must be a value that exists in the {@link CB_Modules.STATUSES} enum.\r\n * @returns {boolean} It will return true if succeeded or false otherwise.\r\n */","meta":{"range":[29330,29508],"filename":"CrossBrowdy.js","lineno":739,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy","code":{"id":"astnode100105877","name":"CB_Modules.setStatus","type":"FunctionExpression","paramnames":["moduleName","status"]},"vars":{"CB_Modules.modules[undefined].status":"CB_Modules.modules[undefined].status"}},"description":"<p>Sets a status for a given module.</p>","memberof":"CB_Modules","kind":"function","params":[{"type":{"names":["string"]},"description":"<p>Name of the module.</p>","name":"moduleName"},{"type":{"names":["integer"]},"description":"<p>The desired status. Must be a value that exists in the {@link CB_Modules.STATUSES} enum.</p>","name":"status"}],"returns":[{"type":{"names":["boolean"]},"description":"<p>It will return true if succeeded or false otherwise.</p>"}],"name":"setStatus","longname":"CB_Modules.setStatus","scope":"static"},{"comment":"/**\r\n * Returns a {@link CB_Modules.MODULE} object for module management.\r\n * @memberof CB_Modules\r\n * @function\r\n * @param {string} moduleName - Name of the desired module.\r\n * @returns {CB_Modules.MODULE|null} If found, it will return the {@link CB_Modules.MODULE} object desired. Otherwise, it will return null.\r\n */","meta":{"range":[32751,32921],"filename":"CrossBrowdy.js","lineno":827,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy","code":{"id":"astnode100106188","name":"CB_Modules.get","type":"FunctionExpression","paramnames":["moduleName"]}},"description":"<p>Returns a {@link CB_Modules.MODULE} object for module management.</p>","memberof":"CB_Modules","kind":"function","params":[{"type":{"names":["string"]},"description":"<p>Name of the desired module.</p>","name":"moduleName"}],"returns":[{"type":{"names":["CB_Modules.MODULE","null"]},"description":"<p>If found, it will return the {@link CB_Modules.MODULE} object desired. Otherwise, it will return null.</p>"}],"name":"get","longname":"CB_Modules.get","scope":"static"},{"comment":"/**\r\n * Gets the value of a desired module property (or returns null).\r\n * @memberof CB_Modules\r\n * @function\r\n * @param {string} moduleName - Name of the desired module.\r\n * @param {string} property - Name of the desired property.\r\n * @returns {*|null} If found, it will return the value of the desired module property. Otherwise, it will return null.\r\n */","meta":{"range":[33291,33513],"filename":"CrossBrowdy.js","lineno":845,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy","code":{"id":"astnode100106214","name":"CB_Modules.getProperty","type":"FunctionExpression","paramnames":["moduleName","property"]},"vars":{"module":"CB_Modules.getProperty~module"}},"description":"<p>Gets the value of a desired module property (or returns null).</p>","memberof":"CB_Modules","kind":"function","params":[{"type":{"names":["string"]},"description":"<p>Name of the desired module.</p>","name":"moduleName"},{"type":{"names":["string"]},"description":"<p>Name of the desired property.</p>","name":"property"}],"returns":[{"type":{"names":["*","null"]},"description":"<p>If found, it will return the value of the desired module property. Otherwise, it will return null.</p>"}],"name":"getProperty","longname":"CB_Modules.getProperty","scope":"static"},{"comment":"/**\r\n * Modifies a desired property of a given module.\r\n * @memberof CB_Modules\r\n * @function\r\n * @param {string} moduleName - Name of the module which contains the property to modify.\r\n * @param {string} property - Name of the property to modify.\r\n * @param {*} value - Value desired for the property.\r\n * @param {('array'|'object'|'scalar')} [type='scalar']\r\n\t\tType that the property uses.\r\n\t\tIf it is \"array\", the given \"value\" will be attached at the end of the array (all in a new single index if the \"iterateArray\" parameter is set to false, or each value in a new index otherwise).\r\n\t\tIf it is \"object\", the given \"value\" and the given \"property\" to modify will be treated as objects and the members of the \"value\" will be copied one by one (overwriting previous members in the case they existed).\r\n\t\tIf it is \"scalar\" or any other, the given \"property\" value will be replaced with the given \"value\".\r\n * @param {boolean} [iterateArray=false] - If is set to true and the given \"type\" is \"array\", the given \"value\" will be considered an array and will be iterated to copy each of its values to a new index in the destiny. Otherwise, if it is set to false and the given \"type\" is \"array\", the given \"value\" will be attached at the end of the array in a new single index.\r\n * @returns {boolean} It will return true if succeeded or false otherwise.\r\n */","meta":{"range":[34885,36262],"filename":"CrossBrowdy.js","lineno":871,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy","code":{"id":"astnode100106249","name":"CB_Modules.editProperty","type":"FunctionExpression","paramnames":["moduleName","property","value","type","iterateArray"]},"vars":{"type":"CB_Modules.editProperty~type","modified":"CB_Modules.editProperty~modified","module":"CB_Modules.editProperty~module","propertyValue":"CB_Modules.editProperty~propertyValue","module[undefined]":"CB_Modules.editProperty~module.undefined]","module[undefined][undefined]":"CB_Modules.editProperty~module.undefined][undefined]","valueLength":"CB_Modules.editProperty~valueLength","x":"CB_Modules.editProperty~x","propertyName":"CB_Modules.editProperty~propertyName"}},"description":"<p>Modifies a desired property of a given module.</p>","memberof":"CB_Modules","kind":"function","params":[{"type":{"names":["string"]},"description":"<p>Name of the module which contains the property to modify.</p>","name":"moduleName"},{"type":{"names":["string"]},"description":"<p>Name of the property to modify.</p>","name":"property"},{"type":{"names":["*"]},"description":"<p>Value desired for the property.</p>","name":"value"},{"type":{"names":["'array'","'object'","'scalar'"]},"optional":true,"defaultvalue":"'scalar'","description":"<p>Type that the property uses.<br> If it is &quot;array&quot;, the given &quot;value&quot; will be attached at the end of the array (all in a new single index if the &quot;iterateArray&quot; parameter is set to false, or each value in a new index otherwise).<br> If it is &quot;object&quot;, the given &quot;value&quot; and the given &quot;property&quot; to modify will be treated as objects and the members of the &quot;value&quot; will be copied one by one (overwriting previous members in the case they existed).<br> If it is &quot;scalar&quot; or any other, the given &quot;property&quot; value will be replaced with the given &quot;value&quot;.</p>","name":"type"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"description":"<p>If is set to true and the given &quot;type&quot; is &quot;array&quot;, the given &quot;value&quot; will be considered an array and will be iterated to copy each of its values to a new index in the destiny. Otherwise, if it is set to false and the given &quot;type&quot; is &quot;array&quot;, the given &quot;value&quot; will be attached at the end of the array in a new single index.</p>","name":"iterateArray"}],"returns":[{"type":{"names":["boolean"]},"description":"<p>It will return true if succeeded or false otherwise.</p>"}],"name":"editProperty","longname":"CB_Modules.editProperty","scope":"static"},{"comment":"/**\r\n * Attaches one module to another one.\r\n * @memberof CB_Modules\r\n * @function\r\n * @param {string} moduleNameParent - Name of the parent module where the new child module will be attached to.\r\n * @param {string} moduleName - Name of the new child module which will be attached to the given parent.\r\n * @param {CB_Modules.NEEDED_FILES} neededFiles - The \"neededFiles\" parameter for the new child module.\r\n * @returns {boolean} It will return true if succeeded or false otherwise.\r\n */","meta":{"range":[36763,36981],"filename":"CrossBrowdy.js","lineno":932,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy","code":{"id":"astnode100106481","name":"CB_Modules.addNeededModule","type":"FunctionExpression","paramnames":["moduleNameParent","moduleName","neededFiles"]}},"description":"<p>Attaches one module to another one.</p>","memberof":"CB_Modules","kind":"function","params":[{"type":{"names":["string"]},"description":"<p>Name of the parent module where the new child module will be attached to.</p>","name":"moduleNameParent"},{"type":{"names":["string"]},"description":"<p>Name of the new child module which will be attached to the given parent.</p>","name":"moduleName"},{"type":{"names":["CB_Modules.NEEDED_FILES"]},"description":"<p>The &quot;neededFiles&quot; parameter for the new child module.</p>","name":"neededFiles"}],"returns":[{"type":{"names":["boolean"]},"description":"<p>It will return true if succeeded or false otherwise.</p>"}],"name":"addNeededModule","longname":"CB_Modules.addNeededModule","scope":"static"},{"comment":"/**\r\n * Attaches files to a module.\r\n * @memberof CB_Modules\r\n * @function\r\n * @param {string} moduleName - Name of the module which will contain the new files.\r\n * @param {CB_Modules.NEEDED_FILES} neededFiles - The \"neededFiles\" parameter for the module.\r\n * @returns {boolean} It will return true if succeeded or false otherwise.\r\n */","meta":{"range":[37330,37481],"filename":"CrossBrowdy.js","lineno":946,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy","code":{"id":"astnode100106504","name":"CB_Modules.addNeededFiles","type":"FunctionExpression","paramnames":["moduleName","neededFiles"]}},"description":"<p>Attaches files to a module.</p>","memberof":"CB_Modules","kind":"function","params":[{"type":{"names":["string"]},"description":"<p>Name of the module which will contain the new files.</p>","name":"moduleName"},{"type":{"names":["CB_Modules.NEEDED_FILES"]},"description":"<p>The &quot;neededFiles&quot; parameter for the module.</p>","name":"neededFiles"}],"returns":[{"type":{"names":["boolean"]},"description":"<p>It will return true if succeeded or false otherwise.</p>"}],"name":"addNeededFiles","longname":"CB_Modules.addNeededFiles","scope":"static"},{"comment":"/**\r\n * Tries to calculate and returns the path where the script is located.\r\n * @function\r\n * @returns {string} If it cannot be calculated, it will returns the value of {@link CB_Configuration[CB_NAME].SCRIPT_PATH_DEFAULT}.\r\n */","meta":{"range":[39007,39893],"filename":"CrossBrowdy.js","lineno":1003,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy","code":{"id":"astnode100106684","name":"CB_scriptPathCalculate","type":"FunctionDeclaration","paramnames":[]},"vars":{"scriptElements":"CB_scriptPathCalculate~scriptElements","scriptFileName":"CB_scriptPathCalculate~scriptFileName","x":"CB_scriptPathCalculate~x","scriptElementsLength":"CB_scriptPathCalculate~scriptElementsLength","src":"CB_scriptPathCalculate~src","CB_scriptPathCalculateLastReturn":"CB_scriptPathCalculate~CB_scriptPathCalculateLastReturn"}},"description":"<p>Tries to calculate and returns the path where the script is located.</p>","kind":"function","returns":[{"type":{"names":["string"]},"description":"<p>If it cannot be calculated, it will returns the value of {@link CB_Configuration[CB_NAME].SCRIPT_PATH_DEFAULT}.</p>"}],"name":"CB_scriptPathCalculate","longname":"CB_scriptPathCalculate","scope":"global","params":[]},{"comment":"/**\r\n * Callback for when the script is loaded successfully. Without parameters.\r\n * @callback CB_init_CALLBACK\r\n */","meta":{"filename":"CrossBrowdy.js","lineno":1034,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy","code":{}},"description":"<p>Callback for when the script is loaded successfully. Without parameters.</p>","kind":"typedef","name":"CB_init_CALLBACK","type":{"names":["function"]},"longname":"CB_init_CALLBACK","scope":"global"},{"comment":"/**\r\n * Starts CrossBrowdy.\r\n * @function\r\n * @param {CB_init_CALLBACK} [mainFunction] - Callback for when CrossBrowdy is loaded successfully. Recommended.\r\n * @param {string} [scriptPath={@link CB_scriptPathCalculate}()] - Path where the main script is located. If not provided (it is undefined or null), it will try to calculate it calling the {@link CB_scriptPathCalculate} function internally.\r\n * @param {CB_includeRequiredFileErrorCallback} [onErrorLoadingFile] - Function to call when any of the required files fails to load (because of an error or because its timeout was fired). It could be called more than once, for each file which failed loading. If a function is provided, it will be stored in the global 'CB_initOnErrorLoadingFile' variable.\r\n * @param {boolean} [showSplashScreen={@link CB_Configuration.CrossBrowdy.SHOW_SPLASH_SCREEN_DEFAULT}] - Defines whether to show the splash screen or not.\r\n */","meta":{"range":[41276,43360],"filename":"CrossBrowdy.js","lineno":1047,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy","code":{"id":"astnode100106823","name":"CB_init","type":"FunctionDeclaration","paramnames":["mainFunction","scriptPath","onErrorLoadingFile","showSplashScreen"]},"vars":{"":null,"showSplashScreen":"CB_init~showSplashScreen","scriptPath":"CB_init~scriptPath","CB_initOnErrorLoadingFile":"CB_init~CB_initOnErrorLoadingFile","CB_readyExecute":"CB_init~CB_readyExecute"}},"description":"<p>Starts CrossBrowdy.</p>","kind":"function","params":[{"type":{"names":["CB_init_CALLBACK"]},"optional":true,"description":"<p>Callback for when CrossBrowdy is loaded successfully. Recommended.</p>","name":"mainFunction"},{"type":{"names":["string"]},"optional":true,"defaultvalue":"{@link CB_scriptPathCalculate}()","description":"<p>Path where the main script is located. If not provided (it is undefined or null), it will try to calculate it calling the {@link CB_scriptPathCalculate} function internally.</p>","name":"scriptPath"},{"type":{"names":["CB_includeRequiredFileErrorCallback"]},"optional":true,"description":"<p>Function to call when any of the required files fails to load (because of an error or because its timeout was fired). It could be called more than once, for each file which failed loading. If a function is provided, it will be stored in the global 'CB_initOnErrorLoadingFile' variable.</p>","name":"onErrorLoadingFile"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":"{@link CB_Configuration.CrossBrowdy.SHOW_SPLASH_SCREEN_DEFAULT}","description":"<p>Defines whether to show the splash screen or not.</p>","name":"showSplashScreen"}],"name":"CB_init","longname":"CB_init","scope":"global"},{"comment":"/**\r\n * Returns the credits with the desired format.\r\n * @function\r\n * @param {string} [credits={@link CB_CREDITS_DEFAULT}] - Desired credits to be shown.\r\n * @param {boolean} [html=true] - Strips all HTML tags (if any) when it is false.\r\n * @param {boolean} [showPrefix=true] - Defines whether to show the \"[CB]\" prefix for every line or not (it will remove all \"[CB]\" occurrences if it is false).\r\n * @returns {string}\r\n */","meta":{"range":[44141,44747],"filename":"CrossBrowdy.js","lineno":1121,"columnno":0,"path":"C:\\AppServ\\www\\CrossBrowdy\\CrossBrowdy","code":{"id":"astnode100107030","name":"CB_credits","type":"FunctionDeclaration","paramnames":["credits","html","showPrefix"]},"vars":{"html":"CB_credits~html","showPrefix":"CB_credits~showPrefix","credits":"CB_credits~credits"}},"description":"<p>Returns the credits with the desired format.</p>","kind":"function","params":[{"type":{"names":["string"]},"optional":true,"defaultvalue":"{@link CB_CREDITS_DEFAULT}","description":"<p>Desired credits to be shown.</p>","name":"credits"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":true,"description":"<p>Strips all HTML tags (if any) when it is false.</p>","name":"html"},{"type":{"names":["boolean"]},"optional":true,"defaultvalue":true,"description":"<p>Defines whether to show the &quot;[CB]&quot; prefix for every line or not (it will remove all &quot;[CB]&quot; occurrences if it is false).</p>","name":"showPrefix"}],"returns":[{"type":{"names":["string"]}}],"name":"CB_credits","longname":"CB_credits","scope":"global"}]});
\No newline at end of file