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 | */
|
---|
17 | function 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 | */
|
---|
27 | function 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 | */
|
---|
37 | function 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 | */
|
---|
47 | function 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 | */
|
---|
57 | function 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 | */
|
---|
67 | function 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 | */
|
---|
77 | function 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 | */
|
---|
87 | function 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 | */
|
---|
97 | function 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 | */
|
---|
107 | function 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 | */
|
---|
124 | if ('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 | */
|
---|
133 | function 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 | }
|
---|