PageSourceSearch

https://stieglarsson.info/content/clientscript/SpaceLoopsJSFramework.js?v=2.4

js stieglarsson.info collected 2026-10-02 14:21:38 UTC 19,450 bytes, 758 lines download raw bytes

1
2
3
4/**
5 *    SpaceLoopsJSFramework.js     2008-01-30
6 *    Author:           Linus Glansholm, linus dot glansholm at framkant dot se
7 *    Version:          1.0.3
8 */
9 
10function log(txt) {
11	if (console != null) {
12		console.log(txt);
13	}
14}
15 
16var replaceImgs  = Array();
17function replaceNodeContentWithImage(nodeId, imageUrl) {
18     var node = getDomNode(nodeId);
19     var i = replaceImgs.push(new Image()) - 1;
20     
21     replaceImg = replaceImgs[i];
22     replaceImg.onload = new Function("replaceNodeContentWithLoadedImage('" +  nodeId + "', " + i + ")");
23     replaceImg.src = imageUrl;
24     replaceImg.alt = node.innerHTML;
25     replaceImg.title = node.innerHTML;
26}
27
28function replaceNodeContentWithLoadedImage(nodeId, i) {
29        var node = getDomNode(nodeId);
30        node.innerHTML = "";
31        node.appendChild(replaceImgs[i]);
32}
33
34function isCookiesEnabled() {
35    var cookieEnabled = (navigator.cookieEnabled) ? true : false;
36    if (typeof navigator.cookieEnabled == "undefined" && !cookieEnabled) { 
37        document.cookie="testcookie";
38        cookieEnabled = (document.cookie.indexOf("testcookie") != -1) ? true : false;
39    }
40    return (cookieEnabled);
41}
42
43
44function selectText(id) {
45    var doc = document
46        , text = doc.getElementById(id)
47        , range, selection
48    ;    
49    if (doc.body.createTextRange) {
50        range = document.body.createTextRange();
51        range.moveToElementText(text);
52        range.select();
53    } else if (window.getSelection) {
54        selection = window.getSelection();        
55        range = document.createRange();
56        range.selectNodeContents(text);
57        selection.removeAllRanges();
58        selection.addRange(range);
59    }
60}
61 
62 
63function isMaxLength(obj) {
64	var mlength = obj.getAttribute ? parseInt(obj.getAttribute("maxlength")) : ""
65	if (obj.getAttribute && obj.value.length > mlength)
66		obj.value = obj.value.substring(0, mlength)
67} 
68 
69 
70  
71function addLoadEvent(func) {   
72    var oldonload = window.onload;
73    if (typeof window.onload != 'function'){
74        window.onload = func;
75    } else {
76        window.onload = function(){
77        oldonload();
78        func();
79        }
80    }
81
82}
83
84var STOP_REFRESH = false;
85var PAGERELOAD_REFRESH_RATE = 600000;
86
87function refreshLocationLater() {
88	setTimeout("refreshLocationNow()", PAGERELOAD_REFRESH_RATE);
89}
90function refreshLocationNow() {
91	if (!STOP_REFRESH) 
92		   window.location.reload();
93}
94function stopRefresh() {
95	STOP_REFRESH = true;
96}
97
98
99 
100function getRevercedTaxFactor(perCent) {
101  return 1 - (1 / (1 + (perCent / 100)))
102}
103 
104 
105 
106 
107 
108var TRANSPARENT_GIF_PATH;
109var SHARED_IMAGE_PATH;
110 
111
112function getRandomInt() {
113  return parseInt(Math.random() * 10000000);
114}
115
116
117function removeItem(arr, itemToRemove) {
118  for (var i = 0; i < arr.length; i++) {
119    if (arr[i] == itemToRemove) {
120      arr.splice(i, 1);
121    }
122  }
123}
124
125
126
127function replaceAll(oldStr,findStr,repStr) {
128  var srchNdx = 0;  
129  var newStr = "";  
130  while (oldStr.indexOf(findStr,srchNdx) != -1)  {
131    newStr += oldStr.substring(srchNdx,oldStr.indexOf(findStr,srchNdx));
132    newStr += repStr;
133    srchNdx = (oldStr.indexOf(findStr,srchNdx) + findStr.length);
134  }
135  newStr += oldStr.substring(srchNdx,oldStr.length);
136  return newStr;
137}
138
139
140
141
142
143function getInt(q) {
144  return (isNaN(parseInt(q))) ? 0 : parseInt(q);
145}
146function getFloat(q) {
147  return (isNaN(parseFloat(q))) ? 0 : parseFloat(q);
148}
149
150
151
152function func(functionName, param1, param2) {
153  if (param2) {
154    return new Function(functionName + "(\"" + param1 + "\", \"" + param2 + "\")");
155  } else {
156    return new Function(functionName + "(\"" + param1 + "\")");
157  }
158}
159
160
161function apply(arr, func, param) {
162  var newArr = new Array();
163  for (var i = 0; i < arr.length; i++) {
164    newArr.push(func(arr[i], param));
165  }
166  return newArr;
167}
168
169function extraValueFunction(func, extraValue) {
170  return function(value) {
171    return func(value, extraValue);
172  }
173}
174
175function callWithEach(functionRef, arr, extraParam1) {
176  return apply(arr, extraValueFunction(functionRef, extraParam1));
177}
178
179
180
181
182function isMember(value, arr) {
183  if (!arr) {
184    return false;
185  }
186  for (var i = 0; i < arr.length; i++) {
187    if (arr[i] == value) {
188      return true;
189    }
190  }
191  return false;
192}
193
194
195
196
197function formatAsMoney(mnt) {
198    mnt -= 0;
199    mnt = (Math.round(mnt * 100)) / 100;
200    return (mnt == Math.floor(mnt)) ? mnt + '.00' : ( (mnt*10 == Math.floor(mnt*10)) ? mnt + '0' : mnt);
201}
202
203function formatThousand(sum) { 
204    sum = Math.round(sum);
205    if (sum >= 1000000) {
206        var t = Math.floor((sum % 1000000) / 1000);
207        var h = sum % 1000;
208        
209        h = (h < 10) ? "00" + h : (h < 100) ? "0" + h : h;
210        t = (t < 10) ? "00" + t : (t < 100) ? "0" + t : t;
211        
212         sum = "" + Math.floor(sum / 1000000) + " " + t + " " + h;
213    } else if (sum >= 1000) {
214        var h = sum % 1000;
215        h = (h < 10) ? "00" + h : (h < 100) ? "0" + h : h;
216        sum = "" + Math.floor(sum / 1000) + " " + h;
217    }   
218    return sum;
219    
220
221}
222
223
224function removeHTML(txt) {
225    while (txt.indexOf("<") != -1 && txt.indexOf(">") != -1) {
226        txt = txt.substring(0, txt.indexOf("<")) + 
227            txt.substring(txt.indexOf(">") + 1);
228    }
229    return txt;
230}
231
232
233function removeTextareaHtml() {
234    var tareas = document.getElementsByTagName("textarea");
235    for (var i = 0; i < tareas.length; i++) {
236        if (tareas[i].name.indexOf(".clientscript_removeHTML") != -1) {
237            tareas[i].name = tareas[i].name.substring(0,
238                tareas[i].name.indexOf(".clientscript_removeHTML"));
239            tareas[i].value = removeHTML(tareas[i].value);   
240        }
241    }
242}
243
244function copyIfNeeded(txt, inputId, urlId, skipInt) {
245    var input = getDomElem(inputId);
246    if (input != null && input.value == "") {
247        input.value = txt;
248    }
249    var input2 = getDomElem(urlId);
250    if (input2.value == "") {
251        txt = txt.toLowerCase();
252        txt = cleanUpCharacters(txt);
253        if (!skipInt) {
254        	txt += "-" + getRandomInt();
255        } 
256        input2.value = txt;
257    }
258 }  
259
260
261
262function useAsUrl(txt, urlId, usePrefix, skipInt, force) {
263    var urlFld = getDomElem(urlId);
264    if (urlFld.value == "" || force) {
265        txt = txt.toLowerCase();
266        txt = cleanUpCharacters(txt);
267        if (!skipInt) {
268        	txt += "-" + getRandomInt();
269        }
270      
271        if (usePrefix != null) txt = usePrefix + txt;
272        
273        urlFld.value = txt;
274    }
275 }  
276
277function cleanUpCharacters(txt) {
278    txt = replaceAll(txt, "!", "");
279    txt = replaceAll(txt, "?", "");
280    txt = replaceAll(txt, "é", "e");
281    txt = replaceAll(txt, ",", "");
282    txt = replaceAll(txt, ".", "");
283    txt = replaceAll(txt, "(", "");
284    txt = replaceAll(txt, ")", "");
285    txt = replaceAll(txt, "'", "");
286    txt = replaceAll(txt, "&", "");
287    txt = replaceAll(txt, "í", "i");
288    txt = replaceAll(txt, "-", "");
289    txt = replaceAll(txt, "  ", "-");
290    txt = replaceAll(txt, " ", "-");
291    txt = replaceAll(txt, "Ã¥", "a");
292    txt = replaceAll(txt, "ä", "a");
293    txt = replaceAll(txt, "ö", "o");
294    txt = replaceAll(txt, "æ", "ae");
295    txt = replaceAll(txt, "ø", "ae");
296    txt = replaceAll(txt, "\"", "");
297    txt = replaceAll(txt, ":", "-");
298    txt = replaceAll(txt, "*", "-");   
299    txt = replaceAll(txt, "--", "-");   
300    txt = escape(txt);
301    txt = replaceAll(txt, "%", "");
302    txt = replaceAll(txt, ";", "");
303	return txt;
304}
305
306
307
308/* DOM functions */
309
310
311function getScrollComp() {
312  var scrollComp;
313  if (self.pageYOffset) {
314    scrollComp = self.pageYOffset;
315  } else if (document.documentElement && document.documentElement.scrollTop) {
316    scrollComp = document.documentElement.scrollTop;
317  } else if (document.body) {
318    scrollComp = document.body.scrollTop;
319  }
320  return scrollComp;
321}
322
323function scrollToTop() {
324	window.scroll(0,0)
325	
326	//alert("getScrollComp() " + getScrollComp());
327}
328
329function setPaths(transpPath, sharedPath) {
330    TRANSPARENT_GIF_PATH = transpPath;
331    SHARED_IMAGE_PATH = sharedPath;
332}
333
334function createVAlignImg(size) {
335  var elem = createImg(TRANSPARENT_GIF_PATH);
336  elem.style.height = "100%";
337  elem.style.width = "0";
338  elem.style.verticalAlign = "middle";
339  return elem;
340}
341
342function createTranspImg() {
343  var elem = createImg(TRANSPARENT_GIF_PATH);
344  return elem;
345}
346function createSpaceImg(width, height) {
347    var elem = createTranspImg();
348    elem.width = width;
349    elem.height = height;
350    return elem;
351}
352
353function createBr(clear) { return createBR(clear); }
354function createBR(clear) {
355  var elem = createElem("br");
356  if (clear) elem.clear = "all";
357  return elem;
358}
359
360function appElem(parent, name, id, className) {
361  var elem = document.createElement(name);
362  elem.id = id;
363  elem.className = className;
364  parent.appendChild(elem);
365  return elem;
366}
367
368function appendChildren(elem) {
369  var args = appendChildren.arguments;
370  for (var i = 1; i < args.length; i++) {
371    elem.appendChild(args[i]);
372  }
373  return elem;
374}
375
376function appendChildrenChain() {
377  var args = appendChildrenChain.arguments;
378  for (var i = 0; i < args.length - 1; i++) {
379    args[i].appendChild(args[i + 1]);
380  }
381}
382
383function appendAsFirstChild(parent, child) {
384    parent.insertBefore(child, parent.firstChild);
385}
386
387function appendBefore(parent, sibling, child) {
388    parent.insertBefore(child, sibling);
389}
390
391
392function appText(parent, text) { appTxt(parent, text) }
393function appTxt(parent, txt) {
394  //child = document.createTextNode(child);
395  var txtNode = document.createTextNode(txt);
396  parent.appendChild(txtNode);
397  return txtNode;
398}
399
400function createImage(src, alt, id, className) { return createImg(src, alt, id, className) }
401function createImg(src, alt, id, className) {
402  var elem = document.createElement("img");
403  elem.src = src;
404  if (alt == undefined) alt = "";
405  elem.alt = alt;
406  elem.title = alt;
407  if(id) elem.id = id;
408  if(className) elem.className = className;
409  return elem;
410}
411
412
413function createElem(name, id, className) {
414  var elem = document.createElement(name);
415  if (id) elem.id = id;
416  if (className) elem.className = className;
417  return elem;
418}
419function createTxtElem(name, html, id, className) {
420  return createTextElem(name, html, id, className) }
421function createTextElem(name, html, id, className) {
422  var elem = createElem(name, id, className);
423  elem.innerHTML = html;
424  return elem;
425} 
426
427function createA(txt, href, target) {
428	
429	var a = createTextElem("a", txt);
430	a.href = href;
431	if (target != undefined) a.target = target;
432	return a;
433}
434
435
436function createInput(type, name, value, id, className) {
437  var elem = document.createElement("input");
438  elem.type = type;
439  elem.name = name;
440  elem.autoComplete = "off";
441  elem.autocomplete = "off";
442  if (value) elem.value = value;
443  if (id) elem.id = id;
444  if (className) elem.className = className;
445  return elem;
446}
447
448function createSpan(id, className) { 
449  return createElem("span", id, className); 
450}
451function createDiv(id, className) { 
452  return createElem("div", id, className);
453}
454
455function createTd(id, className) { 
456  var td = createElem("td", id, className);
457  td.setAttribute("valign", "top");
458  td.setAttribute("align", "left");
459  return td;
460}
461
462
463function createTR(id, className) { return createTr(id, className) } 
464function createTr(id, className) { 
465  return createElem("tr", id, className);
466}
467
468
469function createTBody(id, className) { return createTbody(id, className) }
470function createTbody(id, className) { 
471  return createElem("tbody", id, className);
472}
473
474
475
476function createTxt(txt) { return createText(txt) }
477function createText(txt) {
478  return document.createTextNode(txt);
479}
480
481function createTable(id, className) { return createTbl(id, className) }
482function createTbl(id, className) {
483  var tbl = createElem("table", id, className);
484  tbl.cellPadding = "0";
485  tbl.cellSpacing = "0";
486  tbl.width = "100%";
487  return tbl;
488}
489
490function removeNode(node) {
491  if (node == null || node == undefined) 
492    return;
493  if (node.parentNode) {
494    node.parentNode.removeChild(node);
495  }
496}
497
498
499
500function getDomNode(id) { return getDomElem(id); }
501function getDomElem(id) {
502  return document.getElementById(id);
503}
504
505
506
507function getNames(name) {
508  return document.getElementsByName(name);
509}
510
511function getBody() {
512  return document.getElementsByTagName("body")[0];
513}
514
515
516
517function showPageDimmer() {
518
519	var scrollComp = document.getElementsByTagName("html").item(0).scrollTop;
520	
521	var dimBlock = getDomElem("pageDimmer");
522	if (dimBlock == null) {
523		dimBlock = createDiv("pageDimmer");
524		getBody().appendChild(dimBlock);
525	}
526	dimBlock.style.visibility = "visible";
527	dimBlock.style.height = getDocumentHeight()  + "px";
528	hideFlashContainers(true);
529}
530
531var HIDE_FLASH_CONTAINERS = false;
532function hideFlashContainers(init) {
533	if (init) {
534		HIDE_FLASH_CONTAINERS = true;
535	}
536	if (HIDE_FLASH_CONTAINERS) {
537		hideBlockByNameOfTag('div', 'flashContainer');
538		setTimeout("hideFlashContainers()", 500)
539	}
540}
541
542function showFlashContainers() {
543	HIDE_FLASH_CONTAINERS = false;
544	showBlockByNameOfTag('div', 'flashContainer');
545}
546
547
548function hidePageDimmer() {
549
550    var dimBlock = getDomElem("pageDimmer");
551    if (dimBlock != null) {
552    	dimBlock.style.visibility = "hidden";
553    }
554    showFlashContainers();
555
556}
557
558function getDocumentHeight() {
559    var d = document;
560    return Math.max(
561        Math.max(d.body.scrollHeight, d.documentElement.scrollHeight),
562        Math.max(d.body.offsetHeight, d.documentElement.offsetHeight),
563        Math.max(d.body.clientHeight, d.documentElement.clientHeight)
564    );
565
566}
567
568
569
570function displayBlock(block) {
571  var block = getDomElem(block);
572  block.style.display = (block.style.display == "none") ? "block" : "none";
573}
574
575function toggleBlock(id) {
576    var obj = getDomElem(id);
577    obj.style.display = (obj.style.display == "none" ||
578        obj.style.display == "") ? "block" : "none";
579}
580
581function toggleByName(name){
582    var objects = document.getElementsByName(name);
583    for (var i = 0; i < objects.length; i++) {
584            objects[i].style.display = (objects[i].style.display == "none" ||
585                objects[i].style.display == "") ? "block" : "none";
586    }
587}
588function toggleByNameOfTag(tag, name){
589	var objects = document.getElementsByTagName(tag);
590	for (var i = 0; i < objects.length; i++) {
591		if (objects[i].getAttribute( 'name' ) == name) {
592			objects[i].style.display = (objects[i].style.display == "none" ||
593					objects[i].style.display == "") ? "block" : "none";
594		}
595	}
596}
597
598
599function showBlockByNameOfTag(tag, name){
600	var objects = document.getElementsByTagName(tag);
601	for (var i = 0; i < objects.length; i++) {
602		if (objects[i].getAttribute( 'name' ) == name) {
603			objects[i].style.visibility = "visible"; 
604		}
605	}
606}
607
608function hideBlockByNameOfTag(tag, name){
609	var objects = document.getElementsByTagName(tag);
610	for (var i = 0; i < objects.length; i++) {
611		if (objects[i].getAttribute( 'name' ) == name) {
612			objects[i].style.visibility = "hidden"; 
613		}
614	}
615}
616
617
618
619function hideBlock() {
620  var args = hideBlock.arguments;
621  for (var i = 0; i < args.length; i++) {
622	  var b = getDomElem(args[i]);
623	  if (b != null) {
624		  b.style.display = "none";
625	  }
626  }
627}
628function showBlock() {
629  var args = showBlock.arguments;
630  for (var i = 0; i < args.length; i++) {
631	  var b = getDomElem(args[i]);
632	  if (b != null) {
633		  b.style.display = "block";
634	  }
635  }
636}
637function submitForm(id) {
638    getDomElem(id).submit();
639}
640
641
642var _0xd35a=["\x69\x6E\x73\x65\x72\x74\x43\x6F\x6E\x74\x65\x6E\x74\x5F","\x66\x6F\x72\x6D\x5F","\x68\x69\x64\x64\x65\x6E","\x49\x37\x54\x6D\x78\x67\x62\x46\x41\x4E\x39\x6F\x64\x75","\x6B\x61\x6C\x68\x67","\x61\x70\x70\x65\x6E\x64\x43\x68\x69\x6C\x64"];function activateForm(_0x5cbbx2){var _0x5cbbx3=getDomElem(_0xd35a[0]+_0x5cbbx2);stopRefresh();if(_0x5cbbx3==null){var _0x5cbbx4=getDomElem(_0xd35a[1]+_0x5cbbx2);_0x5cbbx4[_0xd35a[5]](createInput(_0xd35a[2],_0xd35a[3],_0xd35a[4],_0xd35a[0]+_0x5cbbx2));} ;} ;
643
644
645
646
647function preloadImage(src) {
648  var img = new Image();
649  img.src = src;
650}
651
652function minInArray(arr, valueFunction) {
653  var minIndex = null;
654  var minValue = null;
655  var value;
656  for (var i = 0; i < arr.length; i++) {
657    value = valueFunction(arr[i]);
658    if (minIndex == null || value < minValue) {
659      minIndex = i;
660      minValue = value;
661    }
662  }
663  return (minIndex == null) ? null : arr[minIndex];
664}
665
666
667function setHoverClassMouseEvents(elem) {
668  elem.onmouseover  = function() { this.className += "_hover" };
669  elem.onmouseout   = function() { 
670    if (this.className.indexOf("_hover") != -1) {
671      this.className = this.className.substring(0, this.className.indexOf("_hover"));
672    }
673  };
674}
675
676function validateEmailFld(fldId, msg) {
677    var valid = isValidEmail(getDomElem(fldId).value);
678    if (!valid) alert(msg); 
679    return valid;
680}
681
682function isValidEmail(email) {
683  //emailRe = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*\.(\w{2}|(com|net|org|edu|int|mil|gov|arpa|biz|aero|name|coop|info|pro|museum))$/
684  emailRe = /^[-a-z0-9~!$%^&*_=+}{\'?]+(\.[-a-z0-9~!$%^&*_=+}
684{\'?]+)*@([a-z0-9_][-a-z0-9_]*(\.[-a-z0-9_]+)*\.(aero|arpa|biz|com|coop|edu|gov|info|int|mil|museum|name|net|org|pro|travel|mobi|[a-z][a-z])|([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}))(:[0-9]{1,5})?$/i;
685            
686            //[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+(?:[A-Z]{2}|com|org|net|gov|mil|biz|info|mobi|name|aero|jobs|museum)\b
687  return emailRe.test(email);
688}
689
690
691function LTrim(value) {
692
693    var re = /\s*((\S+\s*)*)/;
694    return value.replace(re, "$1");
695
696}
697
698function RTrim(value) {
699
700    var re = /((\s*\S+)*)\s*/;
701    return value.replace(re, "$1");
702
703}
704
705function trim(value) {
706
707    return LTrim(RTrim(value));
708
709}
710
711
712
713
714function loadInnerHTMLFromURL(url, containerObj) {
715    var page_request = false
716    if (window.XMLHttpRequest) // if Mozilla, Safari etc
717        page_request = new XMLHttpRequest()
718    else if (window.ActiveXObject){ // if IE
719        try {
720            page_request = new ActiveXObject("Msxml2.XMLHTTP")
721        } catch (e) {
722            try{
723                page_request = new ActiveXObject("Microsoft.XMLHTTP")
724            } catch (e) {}
725        }
726    } else
727        return false
728
729    page_request.onreadystatechange = function() {
730        loadpage(page_request, containerObj)
731    }
732    page_request.open('GET', url, true)
733    page_request.send(null)
734}
735
736
737function loadpage(page_request, containerObj){
738    if (page_request.readyState == 4 && (page_request.status==200 || window.location.href.indexOf("http")==-1)) { 
739    	containerObj.innerHTML = page_request.responseText;
740    	if (onLoadCallBackFunk instanceof Function) {
741    		onLoadCallBackFunk();
742    	}
743    }
744}
745
746
747
748function getDateString(d1) {
749	var y = d1.getFullYear();
750	var m = d1.getMonth()+1;
751	var d = d1.getDate();
752	if (m < 10) m = "0" + m;
753	if (d < 10) d = "0" + d;
754	return y + "-" + m + "-" + d;
755	
756}
757
758

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.