1 /*global window, document, BytePushers, XMLHttpRequest, ActiveXObject*/ 2 /** 3 * Created with IntelliJ IDEA. 4 * User: pouncilt 5 * Date: 4/30/13 6 * Time: 8:14 AM 7 * To change this template use File | Settings | File Templates. 8 */ 9 (function (window, document, BytePushers) { 10 'use strict'; 11 BytePushers = BytePushers || {}; 12 BytePushers.ResourceLoader = BytePushers.namespace("software.bytepushers.utils.ResourceLoader"); 13 BytePushers.ResourceLoader = function () { 14 function isResourceNotLoaded() {/*fileName*/ 15 return; 16 } 17 this.loadResource = function (fileName, fileType) { 18 if (isResourceNotLoaded(fileName)) { 19 var fileref; 20 21 if (fileType === "js") { //if filename is a external JavaScript file 22 fileref = document.createElement('script'); 23 fileref.setAttribute("type", "text/javascript"); 24 fileref.setAttribute("src", fileName); 25 } else if (fileType === "css") { //if filename is an external CSS file 26 fileref = document.createElement("link"); 27 fileref.setAttribute("rel", "stylesheet"); 28 fileref.setAttribute("type", "text/css"); 29 fileref.setAttribute("href", fileName); 30 } 31 if (fileref !== undefined) { 32 document.getElementsByTagName("head")[0].appendChild(fileref); 33 } 34 } 35 }; 36 this.createResource = function (filename, filetype) { 37 var fileref = null; 38 if (filetype === "js") { //if filename is a external JavaScript file 39 fileref = document.createElement('script'); 40 fileref.setAttribute("type", "text/javascript"); 41 fileref.setAttribute("src", filename); 42 } else if (filetype === "css") { //if filename is an external CSS file 43 fileref = document.createElement("link"); 44 fileref.setAttribute("rel", "stylesheet"); 45 fileref.setAttribute("type", "text/css"); 46 fileref.setAttribute("href", filename); 47 } 48 return fileref; 49 }; 50 this.replaceResource = function (oldfilename, newfilename, filetype) { 51 var targetelement = (filetype === "js") ? "script" : (filetype === "css") ? "link" : "none", //determine element type to create nodelist using 52 targetattr = (filetype === "js") ? "src" : (filetype === "css") ? "href" : "none", //determine corresponding attribute to test for 53 allsuspects = document.getElementsByTagName(targetelement), 54 i, 55 newelement; 56 for (i = allsuspects.length; i >= 0; i = i - 1) { //search backwards within nodelist for matching elements to remove 57 if (allsuspects[i] && allsuspects[i].getAttribute(targetattr) !== null && allsuspects[i].getAttribute(targetattr).indexOf(oldfilename) !== -1) { 58 newelement = this.createResource(newfilename, filetype); 59 allsuspects[i].parentNode.replaceChild(newelement, allsuspects[i]); 60 } 61 } 62 }; 63 this.removeResource = function (oldfilename, filetype) { 64 var targetelement = (filetype === "js") ? "script" : (filetype === "css") ? "link" : "none", //determine element type to create nodelist using 65 targetattr = (filetype === "js") ? "src" : (filetype === "css") ? "href" : "none", //determine corresponding attribute to test for 66 allsuspects = document.getElementsByTagName(targetelement), 67 i, 68 newelement; 69 for (i = allsuspects.length; i >= 0; i = 1 - 1) { //search backwards within nodelist for matching elements to remove 70 if (allsuspects[i] && allsuspects[i].getAttribute(targetattr) !== null && allsuspects[i].getAttribute(targetattr).indexOf(oldfilename) !== -1) { 71 newelement = this.createResource("js/blank.js", filetype); 72 allsuspects[i].parentNode.replaceChild(newelement, allsuspects[i]); 73 } 74 } 75 }; 76 this.loadXMLDoc = function (theUrl) { 77 var xmlHttp, xmlDoc; 78 if (window.XMLHttpRequest) { 79 // code for IE7+, Firefox, Chrome, Opera, Safari 80 xmlHttp = new XMLHttpRequest(); 81 } else { 82 // code for IE6, IE5 83 xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); 84 } 85 86 xmlHttp.onreadystatechange = function () { 87 if (xmlHttp.readyState === 4 && xmlHttp.status === 200) { 88 //callbackFunction(xmlhttp.responseText); 89 xmlDoc = xmlHttp.responseText; 90 return xmlDoc; 91 } 92 }; 93 xmlHttp.open("GET", theUrl, false); 94 xmlHttp.send(); 95 return xmlDoc; 96 }; 97 }; 98 BytePushers.ResourceLoader.loadedResources = []; 99 }(window, document, BytePushers));