Project

General

Profile

1
/**
2
 * http://molily.de/js/
3
 * Cross browser addEvent function by John Resig
4
 * http://ejohn.org/blog/flexible-javascript-events/
5
 * some samples
6
 *    addEvent( document.getElementById('foo'), 'click', doSomething );
7
 *    addEvent( obj, 'mouseover', function(){ alert('hello!'); } );
8
 *
9
 */
10
/**
11
 * Cross Browser helper to addEventListener.
12
 * http://webintersect.com/articles/72/add-event-listener-to-dynamic-elements
13
 *
14
 * @param {HTMLElement} obj The Element to attach event to.
15
 * @param {string} evt The event that will trigger the binded function.
16
 * @param {function(event)} fnc The function to bind to the element.
17
 * @return {boolean} true if it was successfuly binded.
18
 */
19
var addEvent = function (obj, evt, fnc) {
20
  // W3C model
21
  if (obj.addEventListener) {
22
    obj.addEventListener(evt, fnc, false);
23
    return true;
24
  }
25
  // Microsoft model
26
   else if (obj.attachEvent) {
27
    return obj.attachEvent('on' + evt, fnc);
28
  }
29
  // Browser don't support W3C or MSFT model, go on with traditional
30
   else {
31
    evt = 'on' + evt;
32
    if (typeof obj[evt] === 'function') {
33
      // Object already has a function on traditional
34
      // Let's wrap it with our own function inside another function
35
      fnc = (function (f1, f2) {
36
        return function () {
37
          f1.apply(this, arguments);
38
          f2.apply(this, arguments);
39
        };
40
      }) (obj[evt], fnc);
41
    }
42
    obj[evt] = fnc;
43
    return true;
44
  }
45
  return false;
46
};
47
/*****************************************************************************/
48
/**
49
 * sample
50
 *   removeEvent( object, eventType, function );
51
 *
52
 */
53
function removeEvent(obj, ev, fn) {
54
  if (obj.detachEvent) {
55
    obj.detachEvent('on' + ev, obj[ev + fn]);
56
    obj[ev + fn] = null;
57
  } else
58
  obj.removeEventListener(ev, fn, false);
59
}
60
/*****************************************************************************/
61

    
62
var getBrowser = (function () {
63
  var navigatorObj = navigator.appName,
64
  userAgentObj = navigator.userAgent,
65
  matchVersion;
66
  var match = userAgentObj.match(/(opera|opr|chrome|safari|firefox|msie|trident)\/?\s*(\.?\d+(\.\d+)*)/i);
67
  if (match && (matchVersion = userAgentObj.match(/version\/([\.\d]+)/i)) !== null) {
68
    match[2] = matchVersion[1];
69
  }
70
  //mobile
71

    
72
  if (navigator.userAgent.match(/iPhone|Android|webOS|iPad/i)) {
73
    var mobile;
74
    return match ? [
75
      match[1],
76
      match[2],
77
      mobile
78
    ] : [
79
      navigatorObj,
80
      navigator.appVersion,
81
      mobile
82
    ];
83
  }
84
  // web browser
85

    
86
  return match ? [
87
    match[1],
88
    match[2]
89
  ] : [
90
    navigatorObj,
91
    navigator.appVersion,
92
    '-?'
93
  ];
94
}) ();
95
// forEach method, could be shipped as part of an Object Literal/Module
96
var forEach = function (array, callback, scope) {
97
  for (var i = 0; i < array.length; i++) {
98
    callback.call(scope, i, array[i]); // passes back stuff we need
99
  }
100
};
101
function each(elm, fn) {
102
  for (var i = 0, l = elm.length; i < l; i++) {
103
    fn.call(elm, elm[i], i);
104
  }
105
}
106
function doSomething(elm) {
107
  if ((typeof elm !== 'undefined') || elm) console.log(elm);
108
}
109
/**
110
 *  http://www.axel-hahn.de/blog/2015/01/21/javascript-schnipsel-html-strippen/
111
 */
112

    
113
function strip_tags(s) {
114
  return s.replace(/<[^>]*>/g, '');
115
}
116
/**                                                                 
117
 *         discuss at: http:phpjs.org/functions/dirname/
118
 *               http: kevin.vanzonneveld.net
119
 *        original by: Ozh
120
 *        improved by: XoraX (http:www.xorax.info)
121
 *          example 1: dirname('/etc/passwd');
122
 *          returns 1: '/etc'
123
 */
124

    
125
var dirname = function (path) {
126
  var tmp = path.replace(/\\/g, '/').replace(/\/[^\/]*\/?$/, '');
127
  return tmp;
128
};
129
/**
130
 * http://durhamhale.com/blog/javascript-version-of-phps-str-replace-function
131
 */
132
var str_replace = function (search, replace, string) {
133
  return string.split(search).join(replace);
134
};
135
/**
136
 *  trim, rtrim, ltrim
137
 *  http://coursesweb.net/javascript/trim-rtrim-ltrim-javascript_cs
138
 */
139
var trim = function (str, chr) {
140
  var rgxtrim = (!chr) ? new RegExp('^\\s+|\\s+$', 'g')  : new RegExp('^' + chr + '+|' + chr + '+$', 'g');
141
  return str.replace(rgxtrim, '');
142
};
143
var rtrim = function (str, chr) {
144
  var rgxtrim = (!chr) ? new RegExp('\\s+$')  : new RegExp(chr + '+$');
145
  return str.replace(rgxtrim, '');
146
};
147
var ltrim = function (str, chr) {
148
  var rgxtrim = (!chr) ? new RegExp('^\\s+')  : new RegExp('^' + chr + '+');
149
  return str.replace(rgxtrim, '');
150
};
151
var confirm_link = function (message, url) { //  class="alert rounded"
152
  if (confirm(message)) location.href = url;
153
};
154
var showMessage = (function (txt, sel) {
155
  var result = window.document.getElementById('messages');
156
  if (!result) {
157
    return false;
158
  }
159
  var elm = document.createElement('P');
160
  elm.setAttribute('class', sel + ' rounded');
161
  elm.appendChild(document.createTextNode(txt));
162
  result.appendChild(elm);
163
});
164
/**
165
 *  http://www.javascriptkit.com/dhtmltutors/treewalker.shtml
166
 *
167
 */
168
/********************************************************************************************************/
169
var LoadOnFly = (function ( nodeName, file ) {
170
    'use strict';
171
    if( (typeof file === 'undefined') ) {
172
      return false;
173
    }
174
    if ( !document.doctype ) {
175
      return false;
176
    }
177
  /*
178
  var nodeDoctype = document.implementation.createDocumentType(
179
   'html','',''
180
  );
181
      document.replaceChild(nodeDoctype, document.doctype);
182
  } else {
183
      document.insertBefore(nodeDoctype, document.childNodes[0]);
184
  }
185
*/
186
  //    var LoadOnFly  = function (nodeName, url) {
187

    
188
    var jsRegex = /.js$/gi;
189
    var cssRegex = /.css$/gi;
190
    var scripts = {
191
    };
192
  // console.info(' 0.' + file );fileExtension = file.replace(/^.*\./, '');
193
    var url = file;
194
    var urlExt = trim(file.replace(/^.*\./, ''));
195
    var NodeList = null;
196
    var len = 0;
197
    var node = null;
198
    var str = 'undefined';
199
    var done = false;
200
  //console.info( urlExt + ' = 1.) ' + url);
201
    if ((typeof url !== 'undefined') && (urlExt === 'js')) {
202
  //    console.info(urlExt + ' = 1.) ' + url);
203
      scripts[url] = false;
204
      switch (nodeName) {
205
        case 'body':
206
          NodeList = document.body.querySelectorAll('SCRIPT');
207
          break;
208
        default:
209
          NodeList = document.head.querySelectorAll('SCRIPT');
210
          break;
211
      }
212
      if (NodeList) {
213
        len = NodeList.length - 1;
214
    }
215
  //console.info(NodeList);
216
  // console.info(' JS ' + url);
217

    
218
    try {
219
     var js = document.createElement('SCRIPT');
220
      js.setAttribute('type', 'text/javascript'); // optional, if not a html5 node
221
      js.setAttribute('src', url); // src setzen
222
      js.setAttribute('charset', 'UTF-8');
223
//      js.setAttribute("async", true); // HTML5 Asyncron attribute
224
      done = false;
225
      if (nodeName == 'body') {
226
        node = window.document.body.querySelectorAll('SCRIPT') [len];
227
        node.parentNode.appendChild( js );
228
console.info( js );
229
        //              script.parentNode.insertBefore(js,script);
230
      } else {
231
        node = window.document.head.querySelectorAll('SCRIPT') [len];
232
        node.parentNode.appendChild( js );
233
      }
234
    } catch (e) {
235
       str = '<script type=\'text/javascript\' src=\'' + url + '\' charset="UTF-8"><' + '/script>';
236
      document.write(str);
237
    }
238
console.info( node );
239
  }
240

    
241
// load css only within head
242
if ((typeof url !== 'undefined') && (urlExt === 'css')) {
243
    //console.info(urlExt + ' = 2.) ' + url);
244
    scripts[url] = false;
245
    try {
246
        var css = document.createElement('LINK');
247
        len = 0;
248
        css.setAttribute('type', 'text/css');
249
        css.setAttribute('rel', 'stylesheet');
250
        css.setAttribute('media', 'all');
251
        css.setAttribute('href', url);
252
        NodeList = window.document.querySelectorAll('LINK');
253
        if (NodeList) {
254
          len = NodeList.length - 1;
255
        };
256
        // insert after last link element if exist otherwise before first script
257
        if (len > - 1) {
258
          node = window.document.head.querySelectorAll('LINK') [len];
259
          // console.info( len );
260
        //  console.info(node);
261
          //    return false;
262
          node.parentNode.insertBefore(css, node.nextSibling);
263
          // console.info('CSS ' + url);
264
        } else {
265
          node = window.document.head.querySelectorAll('SCRIPT') [0];
266
          node.parentNode.insertBefore(css, node);
267
        }
268
    } catch (e) {
269
        str = '<link href=\'' + url + '\' media="all" rel="stylesheet" />';
270
        document.write(str);
271
    }
272
}
273
// console.info( url );
274
//      showMessage(url);
275

    
276
});
277
/**
278
 * 
279
    document.onreadystatechange = function () {
280
        if (document.readyState == "interactive") {
281
console.info( 'Start readyState.interactive' );
282
        }
283
    }
284

    
285
    // Alternativ zu load event
286
    document.onreadystatechange = function () {
287
        if (document.readyState == "complete") {
288
console.info( 'Start readyState.complete' );
289
        }
290
    }
291

    
292

    
293
window.onload = function() {
294
   addEvent(document, "DOMContentLoaded", LoadOnFly);
295
console.info( 'Start window.onload' );
296
};
297
 */
298
/*
299
undefined
300
*/
(1-1/4)