source: documentation/trunk/packages/dokuwiki-2011-05-25a/lib/scripts/helpers.js@ 25027

Last change on this file since 25027 was 25027, checked in by jmt12, 12 years ago

Adding the packages directory, and within it a configured version of dokuwiki all ready to run

File size: 3.9 KB
Line 
1/**
2 * Differrent helper functions
3 *
4 * @author Ilya Lebedev <[email protected]>
5 * @license LGPL
6 */
7//-----------------------------------------------------------------------------
8// Variable/property checks
9//-----------------------------------------------------------------------------
10/**
11 * Checks if property is undefined
12 *
13 * @param {Object} prop value to check
14 * @return {Boolean} true if matched
15 * @scope public
16 */
17function isUndefined (prop /* :Object */) /* :Boolean */ {
18 return (typeof prop == 'undefined');
19}
20/**
21 * Checks if property is function
22 *
23 * @param {Object} prop value to check
24 * @return {Boolean} true if matched
25 * @scope public
26 */
27function isFunction (prop /* :Object */) /* :Boolean */ {
28 return (typeof prop == 'function');
29}
30/**
31 * Checks if property is string
32 *
33 * @param {Object} prop value to check
34 * @return {Boolean} true if matched
35 * @scope public
36 */
37function isString (prop /* :Object */) /* :Boolean */ {
38 return (typeof prop == 'string');
39}
40/**
41 * Checks if property is number
42 *
43 * @param {Object} prop value to check
44 * @return {Boolean} true if matched
45 * @scope public
46 */
47function isNumber (prop /* :Object */) /* :Boolean */ {
48 return (typeof prop == 'number');
49}
50/**
51 * Checks if property is the calculable number
52 *
53 * @param {Object} prop value to check
54 * @return {Boolean} true if matched
55 * @scope public
56 */
57function isNumeric (prop /* :Object */) /* :Boolean */ {
58 return isNumber(prop)&&!isNaN(prop)&&isFinite(prop);
59}
60/**
61 * Checks if property is array
62 *
63 * @param {Object} prop value to check
64 * @return {Boolean} true if matched
65 * @scope public
66 */
67function isArray (prop /* :Object */) /* :Boolean */ {
68 return (prop instanceof Array);
69}
70/**
71 * Checks if property is regexp
72 *
73 * @param {Object} prop value to check
74 * @return {Boolean} true if matched
75 * @scope public
76 */
77function isRegExp (prop /* :Object */) /* :Boolean */ {
78 return (prop instanceof RegExp);
79}
80/**
81 * Checks if property is a boolean value
82 *
83 * @param {Object} prop value to check
84 * @return {Boolean} true if matched
85 * @scope public
86 */
87function isBoolean (prop /* :Object */) /* :Boolean */ {
88 return ('boolean' == typeof prop);
89}
90/**
91 * Checks if property is a scalar value (value that could be used as the hash key)
92 *
93 * @param {Object} prop value to check
94 * @return {Boolean} true if matched
95 * @scope public
96 */
97function isScalar (prop /* :Object */) /* :Boolean */ {
98 return isNumeric(prop)||isString(prop);
99}
100/**
101 * Checks if property is empty
102 *
103 * @param {Object} prop value to check
104 * @return {Boolean} true if matched
105 * @scope public
106 */
107function isEmpty (prop /* :Object */) /* :Boolean */ {
108 if (isBoolean(prop)) return false;
109 if (isRegExp(prop) && new RegExp("").toString() == prop.toString()) return true;
110 if (isString(prop) || isNumber(prop)) return !prop;
111 if (Boolean(prop)&&false != prop) {
112 for (var i in prop) if(prop.hasOwnProperty(i)) return false;
113 }
114 return true;
115}
116
117/**
118 * Checks if property is derived from prototype, applies method if it is not exists
119 *
120 * @param string property name
121 * @return bool true if prototyped
122 * @access public
123 */
124if ('undefined' == typeof Object.hasOwnProperty) {
125 Object.prototype.hasOwnProperty = function (prop) {
126 return !('undefined' == typeof this[prop] || this.constructor && this.constructor.prototype[prop] && this[prop] === this.constructor.prototype[prop]);
127 };
128}
129
130/**
131 * Very simplistic Flash plugin check, probably works for Flash 8 and higher only
132 */
133function hasFlash(version){
134 var ver = 0;
135 try{
136 if(navigator.plugins != null && navigator.plugins.length > 0){
137 ver = navigator.plugins["Shockwave Flash"].description.split(' ')[2].split('.')[0];
138 }else{
139 var axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash");
140 ver = axo.GetVariable("$version").split(' ')[1].split(',')[0];
141 }
142 }catch(e){ }
143
144 if(ver >= version) return true;
145 return false;
146}
Note: See TracBrowser for help on using the repository browser.