PageSourceSearch

http://www.efojs.com/elefunfunt/resources/scripts/axutils.js

js efojs.com collected 2026-10-06 03:41:04 UTC 8,580 bytes, 241 lines download raw bytes

1/*
2 *
3 *
4 *
5 *
6 */
7
8 (function() {
9     // define the root namespace object
10     if(!window.$axure) window.$axure = {};
11
12     $axure.utils = {};
13
14     // ------------------------------------------------------------------------
15     // Makes an object bindable
16     // ------------------------------------------------------------------------
17     $axure.utils.makeBindable = function(obj, events) {
18         if(obj.registeredBindings != null) return;
19
20         // copy the events
21         obj.bindableEvents = events.slice();
22         obj.registeredBindings = {};
23
24         obj.bind = function(eventName, fn) {
25             var binding = {};
26             binding.eventName = eventName;
27             binding.action = fn;
28
29             var bindingList = this.registeredBindings[eventName];
30             if(bindingList == null) {
31                 bindingList = [];
32                 this.registeredBindings[eventName] = bindingList;
33             }
34             bindingList[bindingList.length] = binding;
35         };
36
37         obj.unbind = function(eventName) {
38             if(eventName.indexOf('.') >= 0) {
39                 this.registeredBindings[eventName] = null;
40             } else {
41                 var event = eventName.split('.')[0];
42                 for(var bindingKey in this.registeredBindings) {
43                     if(bindingKey.split('.')[0] == event) {
44                         this.registeredBindings[bindingKey] = null;
45                     }
46                 }
47             }
48         };
49
50         obj.triggerEvent = function(eventName, arg) {
51             for(var bindingKey in this.registeredBindings) {
52                 if(bindingKey.split('.')[0] == eventName) {
53                     var bindings = this.registeredBindings[bindingKey];
54                     for(var i = 0; i < bindings.length; i++) {
55                         if(arg == null) {
56                             bindings[i].action();
57                         } else {
58                             bindings[i].action(arg);
59                         }
60                     }
61                 }
62             }
63         };
64     };
65
66
67     $axure.utils.loadCSS = function(url) {
68         $('head').append('<link text="text/css" href="' + url + '" rel="Stylesheet" />');
69     };
70
71     $axure.utils.loadJS = function(url) {
72         $('head').append('<script text="text/javascript" language="JavaScript" src="' + url + '"></script>');
73     };
74
75     $axure.utils.curry = function(fn) {
76         var curriedArgs = Array.prototype.slice.call(arguments, [1]);
77         return function() {
78             fn.apply(this, curriedArgs.concat(Array.prototype.slice.call(arguments)));
79         };
80     };
81
82     $axure.utils.succeeded = function(result) {
83         return result && result.success;
84     };
85
86     $axure.utils.createUniqueTag = function() {
87         return Math.random().toString().substring(2) +
88             Math.random().toString().substring(2) +
89                 Math.random().toString().substring(2) +
90                     Math.random().toString().substring(2);
91     };
92
93     $axure.utils.formatDate = function(date) {
94         var months = [
95             "Jan", "Feb", "Mar", "Apr", "May", "Jun",
96             "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"];
97         var hours = date.getHours();
98         var amPm = (hours > 11 ? 'PM' : 'AM');
99         hours = hours % 12;
100         if(hours == '0') hours = '12';
101         var minutes = date.getMinutes() + '';
102         if(minutes.length == 1) {
103             minutes = '0' + minutes;
104         }
105         return [
106             months[date.getMonth()], ' ', date.getDate(), ' ', date.getFullYear(), ' ',
107             hours, ':', minutes, ' ', amPm].join('');
108
109     };
110
111     $axure.utils.quickObject = function() {
112         var returnVal = {};
113         for(var i = 0; i < arguments.length; i += 2) {
114             returnVal[arguments[i]] = arguments[i + 1];
115         }
116         return returnVal;
117     };
118
119     var matrixBase = {
120         mul: function(val) {
121             if(val.x !== undefined) {
122                 return $axure.utils.Vector2D(
123                     this.m11 * val.x + this.m12 * val.y + this.tx,
124                     this.m21 * val.x + this.m22 * val.y + this.ty);
125             } else if(val.m11) {
126                 return $axure.utils.Matrix2D(
127                     this.m11 * val.m11 + this.m12 * val.m21,
128                     this.m11 * val.m12 + this.m12 * val.m22,
129                     this.m21 * val.m11 + this.m22 * val.m21,
130                     this.m21 * val.m12 + this.m22 * val.m22,
131                     val.tx + this.tx * val.m11 + this.ty * val.m21,
132                     val.ty + this.tx * val.m12 + this.ty * val.m22
133                 );
134             } else if(Number(val)) {
135                 var num = Number(val);
136                 return $axure.utils.Matrix2D(this.m11 * num, this.m12 * num,
137                     this.m21 * num, this.m22 * num,
138                     this.tx * num, this.ty * num);
139             } else return undefined;
140         },
141         rotate: function(angle) {
142             var angleRad = angle * Math.PI / 180;
143             var c = Math.cos(angleRad);
144             var s = Math.sin(angleRad);
145
146             return this.mul($axure.utils.Matrix2D(c, -s, s, c));
147         },
148         translate: function(tx, ty) {
149             return this.mul($axure.utils.Matrix2D(1, 0, 0, 1, tx, ty));
150         }
151     };
152
153     $axure.utils.Matrix2D = function(m11, m12, m21, m22, tx, ty) {
154         return $.extend({
155             m11: m11 || 0,
156             m12: m12 || 0,
157             m21: m21 || 0,
158             m22: m22 || 0,
159             tx: tx || 0,
160             ty: ty || 0
161         }, matrixBase);
162     };
163
164     $axure.utils.Vector2D = function(x, y) {
165         return { x: x || 0, y: y || 0 };
166     };
167
168     $axure.utils.Matrix2D.identity = function() {
169         return $axure.utils.Matrix2D(1, 0, 0, 1, 0, 0);
170     };
171
172     $axure.utils.fixPng = function(png) {
173         if(!(/MSIE ((5\.5)|6)/.test(navigator.userAgent) && navigator.platform == "Win32")) return;
174
175         var src = png.src;
176         if(!png.style.width) { png.style.width = $(png).width(); }
177         if(!png.style.height) { png.style.height = $(png).height(); }
178         png.onload = function() { };
179         png.src = $axure.utils.getTransparentGifPath();
180         png.runtimeStyle.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + src + "',sizingMethod='scale')";
181     };
182 })();
183
184 // TODO: [mas] simplify this
185 if(window.$axure && window.$axure.internal) {
186     $axure.internal(function($ax) { $ax.utils = $axure.utils; });
187 }
188
189 // Its too much of a pain to escape everything and use regular expresions, just replace manually
190 (function () {
191     var original = String.prototype.replace;
192     // TODO: maybe use flags or object instead to pass options in
193     String.prototype.replace = function (search, newVal, replaceFirst, ignoreCase) {
194         // Use original is some cases
195         if (search instanceof RegExp) return original.apply(this, arguments);
196
197         search = String(search);
198         var searchCompare = ignoreCase ? this.toLowerCase() : this;
199         if (ignoreCase) search = search.toLowerCase();
200
201         var searchLength = search.length;
202         var thisLength = this.length;
203
204         var index = 0;
205         var retVal = '';
206         while (index != -1) {
207             var nextIndex = searchCompare.indexOf(search, index);
208             if (nextIndex != -1) {
209                 retVal += this.substring(index, nextIndex) + newVal;
210                 index = nextIndex + searchLength;
211                 if (index >= thisLength) index = -1;
212             } else {
213                 retVal += this.substring(index);
214                 index = -1;
215             }
216             if (replaceFirst) break;
217         }
218
219         return retVal;
220     };
221
222     if (!Array.prototype.indexOf) {
223         Array.prototype.indexOf = function (elt /*, from*/) {
224             var len = this.length >>> 0;
225
226             var from = trunc(Number(arguments[1]) || 0);
227             if(from < 0) from += len;
228
229             for(; from < len; from++) {
230                 if(from in this && this[from] === elt) return from;
231             }
232             return -1;
233         };
234     }
235
236     var trunc = function(num) {
237         return num < 0 ? Math.ceil(num) : Math.floor(num);
238     };
239
240
241 })();

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.