PageSourceSearch

https://www.imprentanacional.go.cr/js_srv/thirdparty/jquery.transform.js

js imprentanacional.go.cr collected 2026-10-02 03:12:13 UTC 10,105 bytes, 330 lines download raw bytes

1/*
2	Transform Plugin
3	Copyright (c) 2009 DAER Systems (daersystems.com)
4	Dual licensed under the GPL (http://www.gnu.org/licenses/gpl.html)
5	and MIT (http://www.opensource.org/licenses/mit-license.php) licenses.
6*/
7(function($) { 
8	$.transform = function(o) {
9		var createXmlObj = function(data) {
10			if (window.ActiveXObject || "ActiveXObject" in window){
11				var x = new ActiveXObject("Microsoft.XMLDOM");
12				x.loadXML(data);
13				return x;
14			} else {
15				var parser = new DOMParser();
16				return parser.parseFromString(data,"text/xml");
17			}
18		};
19		
20		var call = function(f,o,tel,other) {
21			if($.isFunction(f)) {
22				var arg1 = tel.html();
23				if(o.c.dataType.toUpperCase() == "JSON") {
24					try {
25						arg1 = eval("(" + tel.text() + ")");
26					} catch(ex) {
27						arg1 = {error : "An error occurred while converting HTML to JSON"};
28					}
29				}
30				if(o.c.dataType.toUpperCase() == "XML") {
31					arg1 = createXmlObj(tel.html());
32				}
33				
34				try { f.apply(o.c,[arg1,o.c.xslstr,o.c.xmlstr,o.c,other]); } catch(ex) {}
35			}
36		};
37				
38		var t = this;
39		
40		t.c = {
41			cache : false,
42			async : true,
43			xsl : false,
44			xml : false,
45			xslstr : false,
46			xmlstr : false,
47			xslobj : false,
48			xmlobj : false,
49			xslParams : false,
50			error : false,
51			success : false,
52			complete : false,
53			island : false,
54			pass : false,
55			msg : false,
56			dataType : "html"
57		};
58		$.extend(t.c,o);
59		
60		if(o.msg) {
61			$(o.el).html((typeof(o.msg) == "string")? o.msg : $(o.msg).html());
62		}
63		
64		var id = function(pre) {
65			var name = pre + "_" + (Math.round(Math.random() * 999));
66			return $("#" + name).length === 0 ? name : id(pre);
67		};
68		
69		var replaceref = function(val, o) {
70			o.c.xsl = o.c.xsl?o.c.xsl:"";
71			var c = location.protocol == "file:" && (window.ActiveXObject || "ActiveXObject" in window) ? "\\" : "/";
72			var path1 = location.protocol + c + c + location.host;
73			var path2 = location.pathname.substring(0,location.pathname.lastIndexOf(c) + 1) + o.c.xsl.substring(0,o.c.xsl.lastIndexOf("/") + 1);
74			
75			if(val.substring(0,1) == c) {
76				return path1 + val;
77			}
78			else if(val.substring(0,2) == "..") {
79				var count = 0;
80				while(val.indexOf("..") != -1) {
81					val = val.substring(val.indexOf("..") + 3);
82					count += 1;
83				}
84				
85				var p = path1 + path2.substring(0,path2.length - 1);
86				
87				for(var x=0;x<count;x++) {
88					p = p.substring(0,p.lastIndexOf(c));
89				}
90				return p + c + val;
91			}
92			else {
93				return path1 + path2 + val;
94			}
95		};
96		
97		var checkReady = function(o) {
98			if((o.c.xslstr || o.c.xslobj) && (o.c.xmlstr || o.c.xmlobj)) {
99				var fail = false;
100				var tel = $("<div>");
101				if(o.c.throwerror) {
102					call(o.c.error,o,tel,{message:"Bad XML or XSL call"}); 
103					return;
104				}
105				
106				if(o.c.island) {
107					if(o.c.island === true) {o.c.island = "body";}
108					o.c.xslid = id("xsl");
109					$(o.c.island).append("<div id='" + o.c.xslid + "' name='" + o.c.xslid + "' style='display:none;'>" + o.c.xslstr + "</div>");
110					o.c.xmlid = id("xml");
111					$(o.c.island).append("<div id='" + o.c.xmlid + "' name='" + o.c.xmlid + "' style='display:none;'>" + o.c.xmlstr + "</div>");
112				}
113				
114				o.c.xslobj = o.c.xslobj ? o.c.xslobj : createXmlObj(o.c.xslstr);
115				o.c.xmlobj = o.c.xmlobj ? o.c.xmlobj : createXmlObj(o.c.xmlstr);
116				
117				var fixref,addparams;
118				if (window.ActiveXObject || "ActiveXObject" in window){
119				    try {					
120						
121						fixref = function(ref,xObj) {
122							var vals = xObj.selectNodes(ref);
123							for(var x = 0; x<vals.length; x++) {
124								vals[x].setAttribute("href",replaceref(vals[x].getAttribute("href"),o));
125							}
126						};
127						
128						fixref("//xsl:include",o.c.xslobj);
129						fixref("//xsl:import",o.c.xslobj);
130						
131						addparams = function(op, xObj) {
132							for(var p in op) {
133			                    var strParam = "//xsl:param[@name='" + p + "']";
134			                    
135			                    try {			                        
136									var v = op[p];
137									if(typeof v === "boolean") {
138										v = "'" + v + "'";
139									} else {
140										if(isNaN(parseInt(v)) && v.indexOf("'") < 0) {
141											v = "'" + v + "'";
142										}
143									}
144				    				var xslParam = xObj.selectSingleNode(strParam);
145									if(xslParam == null) {
146										var newparam = xObj.createElement("xsl:param");
147										newparam.setAttribute("name",p);
148										xObj.documentElement.insertBefore(newparam,xObj.selectSingleNode("//xsl:template"));
149										xslParam = xObj.selectSingleNode(strParam);
150									}
151					    			xslParam.setAttribute("select",v);
152					            } catch(ex) {
153					                //param failed
154					            }
155			                }
156						};
157						if(o.c.xslParams) {
158							addparams(o.c.xslParams,o.c.xslobj);
159							o.c.xslobj = createXmlObj(o.c.xslobj.xml); //reload xml
160						}
161						tel.empty().html(o.c.xmlobj.transformNode(o.c.xslobj)); 
162					} catch(ex) {
163						fail = true;
164						call(o.c.error,o,tel,ex); 
165					}
166				} else {
167					try {
168						var proc = new XSLTProcessor();
169						
170						var childNodes = function(obj,find) {
171							var cns = [];
172							var objs = obj.getElementsByTagName(find);
173							for(var x=0;x<objs.length;x++) {
174								if(objs[x].parentNode == obj) {
175									cns[cns.length] = objs[x];
176								}
177							}
178							
179							return cns;
180						};
181						
182						var safariimportincludefix = function(xObj,rootConfig) {
183							var vals = $.merge($.makeArray(xObj.getElementsByTagName("import")),$.makeArray(xObj.getElementsByTagName("include")));
184							
185							for(var x=0;x<vals.length;x++) {
186								var node = vals[x];
187								$.ajax({
188									passData : { node : node, xObj : xObj, rootConfig : rootConfig},
189									dataType : "xml",
190									async : false,
191									url : replaceref(node.getAttribute("href"),rootConfig),
192									success : function(xhr) {
193										try {
194											var _ = this.passData;
195											xhr = safariimportincludefix(xhr,_.rootConfig);
196											
197											var imports = $.merge(childNodes(xhr.getElementsByTagName("stylesheet")[0],"param"),childNodes(xhr.getElementsByTagName("stylesheet")[0],"template"));
198											
199											var existingNodes = $.merge(childNodes(_.xObj.getElementsByTagName("stylesheet")[0],"param"),childNodes(_.xObj.getElementsByTagName("stylesheet")[0],"template"));
200											var existingNames = [];
201											var existingMatches = [];
202											for(var a=0;a<existingNodes.length;a++) {
203												if(existingNodes[a].getAttribute("name")) {
204													existingNames[existingNodes[a].getAttribute("name")] = true;
205												} else {
206													existingMatches[existingNodes[a].getAttribute("match")] = true;
207												}
208											}
209											
210											var pn = _.node.parentNode;
211											for(var y=0;y<imports.length;y++) {
212												if(!existingNames[imports[y].getAttribute("name")] && !existingMatches[imports[y].getAttribute("match")]) {
213													var clonednode = _.xObj.importNode(imports[y],true);
214													pn.insertBefore(clonednode,_.xObj.getElementsByTagName("template")[0]);
215												}
216											}
217											pn.removeChild(_.node);
218										} catch(ex) { 
219											
220										}
221									}
222								});
223							}
224							
225							return xObj;
226						};
227						
228						fixref = function(ref,xObj) {
229							ref = $.browser.mozilla && $.browser.version.substring(0,3) == "1.9" ? "xsl:" + ref : ref;
230							
231							var vals = xObj.getElementsByTagName(ref);
232							for(var x=0; x<vals.length;x++) {
233								vals[x].setAttribute("href",replaceref(vals[x].getAttribute("href"),o));
234							}
235						};
236						
237						if($.browser.safari) {
238							o.c.xslobj = safariimportincludefix(o.c.xslobj,o);
239						} else {						
240							fixref("import",o.c.xslobj);
241							fixref("include",o.c.xslobj);
242						}
243						
244						addparams = function(op) {
245							for(var p in op) {
246								try { proc.setParameter(null, p, op[p]); } catch(ex) {}
247							}
248						};
249						addparams(o.c.xslParams);
250						
251						var doc = document.implementation.createDocument("","",null);
252						proc.importStylesheet(o.c.xslobj);
253						tel.empty().append(proc.transformToFragment(o.c.xmlobj,doc));
254					} catch(ex) {
255						fail = true;
256						call(o.c.error,o,tel,ex);
257					}
258				}
259				
260				if(o.c.el) {
261					if(tel.html()) { $(o.c.el).html(tel.html()); }
262				}
263				if(!fail) {
264					call(o.c.success,o,tel);
265				}
266				call(o.c.complete,o,tel);
267				
268				return tel.html();
269			}
270		};
271		
272		var makeCall = function(t,options,type) {
273			if(typeof(options) == "string") {
274				options = {
275					cache:false,
276					url:options,
277					dataType:"xml",
278					async:t.c.async,
279					pass:t.c.pass
280				};
281			}
282			
283			options.complete = function(r,s) {
284				if(s != "success") {
285					if(!t.c.threwError) {
286						t.c.threwError = true;
287						call(t.c.error,t,$("<div>" + r.responseText + "</div>"),{message:"Error requesting file " + this.url});
288						call(t.c.complete,t,$("<div>" + r.responseText + "</div>"));
289					}
290					return;
291				}
292				
293				if(type == "XSL") { if(r.status == 200) { t.c.xslstr = r.responseText; } else { t.c.xslstr = "error"; t.c.throwerror=true; } }
294				else { if(r.status == 200) { t.c.xmlstr = r.responseText;} else { t.c.xmlstr = "error"; t.c.throwerror=true; } }
295				if(t.c.async) { checkReady(t); }
296			};
297			
298			$.ajax(options);
299		};
300		
301		if(t.c.xsl) {
302			makeCall(t,o.xsl,"XSL");
303		}
304		
305		if(t.c.xml) {
306			makeCall(t,o.xml,"XML");
307		}
308		
309		if(!t.c.async || (t.c.xmlstr || t.c.xmlobj) || (t.c.xslstr || t.c.xslobj)) {
310			return checkReady(t);
311		}
312	};
313	
314	$.fn.transform = function(o) {
315		return this.each(function() {
316			o = o ? o : {};
317			o.el = this;
318			var t = new $.transform(o);
319		});
320	};
321})(jQuery);
322
323/*jQuery().ready(function() {
324	jQuery("[transform]").each(function(num,el) {
325		$(el).transform(eval("(" + $(el).attr("transform") + ")"));
326	});
327	
328});*/
329
330

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.