// eFlipchart stub var EF = { Classes: { }, libs: [ { file: "libs/base64.js" }, { file: "libs/libsha1.js" }, { file: "libs/md5-min.js" }, { file: "foo.js", wait: "libsha1" }, // { file: "libs/libefc.js", wait: "libsha1" }, // { file: "oldpdglue.js", wait: "libefc" }, // { file: "framesupport.js", wait: "oldpdglue" }, { file: "eFlipEvent.js.php", wait: "framesupport", params: { efliproom: "perspektive", efliptype: "", eflipversion: 6 } }, { file: "newfp.js", wait: "eFlipEvent" } ], styles: [ { file: "styles/fp.css", id: "eFlipDefaultCSS", media: "all" } ], loadedLibs: new Array(), // Debugging functions traces: new Array(), TRACE: function(fn, m) { var d = new Date(); var ts = d.getTime(); EF.traces.push({func: fn, message: m, timestamp: ts}); }, getTracesString: function () { var output = ""; for( var i in EF.traces ) { var d = new Date(EF.traces[i].timestamp); output += d.toLocaleString() + " - " + EF.traces[i].func + " - " + EF.traces[i].message + "\n"; } return output; }, getParameter: function (param, text) { if( !text ) text = window.location.href; var rx = new RegExp("[\\?&]" + param + "=([^&#]*)"); var res = rx.exec(text); return (res != null ? res[1] : null); }, copyObject: function (src, tgt) { if( typeof tgt == "undefined" ) tgt = {}; for( var key in src ) { if( typeof key == "object" ) tgt[key] = copyObject(src[key], {}); else tgt[key] = src[key]; } return tgt; }, createClosure: function (obj, fn, userdata) { var callFn = function() { fn.apply(obj, arguments); }; var udata = new Array(); for( var i = 2; i < arguments.length; i++ ) udata.push(arguments[i]); return function() { var a = udata.slice(0, udata.length); for( var i = 0; i < arguments.length; i++ ) a.push(arguments[i]); callFn.apply(obj, a); }; }, hookFunction: function(fn, cb, userdata) { var udata = null; if( typeof cb == "object" ) udata = new Array(cb[0], cb[1]); else udata = new Array(null, cb); udata.push(typeof fn == "object" ? EF.createClosure(fn[0], fn[1]) : EF.createClosure(null, fn) ); if( typeof userdata != "undefined" ) { for( var i = 2; i < arguments.length; i++ ) udata.push(arguments[i]); } return EF.createClosure.apply(null, udata); }, isInt: function (x) { var y = parseInt(x); return !isNaN(y) && x == y && x.toString() == y.toString(); }, getCookie: function (name) { var text = document.cookie; var rx = new RegExp(name + "=([^;]*)"); var res = rx.exec(text); return (res != null ? unescape(res[1]) : null); }, cookieExists: function (name) { return EF.getCookie(name) != null; }, setCookie: function (name, value, path, expires) { if( typeof expires != "string" ) { var d = new Date(expires); expires = d.toGMTString(); } var cl = escape(name) + "=" + escape(value); if( expires ) cl += "; expires=" + expires; if( path ) cl += "; path=" + path; document.cookie = cl; // writeext("Setting cookie: " + cl); return document.cookie; }, getScriptSrc: function (r) { var n = document.getElementsByTagName('SCRIPT'); for( var i = 0; i < n.length; i++ ) if( r.test(n[i].src) ) return n[i].src; return null; }, getBaseURL: function () { var s = EF.getScriptSrc(/efpd.js.php/); var r = /(.*\/)[^\/]*$/.exec(s); if( r ) return r[1]; else return null; }, loadStyle: function (m) { var s = m; var i = null; var md = null; if( typeof m == "object" ) { s = m.file; if( typeof m.id == "string" ) i = m.id; if( typeof m.media == "string" ) md = m.media; } if( i && document.getElementById(i) ) return; var e = document.createElement("link"); e.setAttribute("type", "text/css"); e.setAttribute("rel", "stylesheet"); e.setAttribute("href", s); if( i ) e.setAttribute("id", i); if( m ) e.setAttribute("media", m); document.getElementsByTagName("head")[0].appendChild(e); }, load: function (m) { var s = m.file; var fp = true; for( var p in m.params ) { s += (fp ? "?" : "&") + p + "=" + m.params[p]; fp = false; } var e = document.createElement("script"); e.setAttribute("type", "text/javascript"); e.setAttribute("src", EF.getBaseURL() + s); document.getElementsByTagName("head")[0].appendChild(e); if( m.onInit ) m.onInit(); return e; }, hasAddon: function (v) { if( typeof v != "number" ) v = 6003; // Format: a.b.c => aaabbbccc return (typeof EFAddon == "object" && typeof EFAddon.version == "number" && Math.round(EFAddon.version/1000000-0.5) == Math.round(v/1000000-0.5) && EFAddon.version%1000000 >= v%1000000 ); }, signals: new Array(), waits: new Array(), signal: function(s) { EF.signals[s] = true; setTimeout(function() { if( EF.signals[s] && typeof EF.waits[s] != "undefined" && EF.waits[s].length > 0 ) EF.signal(s); }, 100); for( var w in EF.waits[s] ) { if( typeof EF.waits[s][w] == "function" && EF.waits[s].hasOwnProperty(w)) EF.waits[s][w](); EF.waits[s].shift(); } }, wait: function(s, cb) { if( EF.signals[s] ) cb(); else { if( typeof EF.waits[s] == "undefined" ) EF.waits[s] = new Array(); EF.waits[s].push(cb); } }, clear: function(s) { EF.signals[s] = false; }, webkitSID: null, generateWebKitSID: function () { return "86ced98fbf59fbdf3360bacebb418b0e"; }, deleteVarFromURL: function (url, name) { var regex = new RegExp(name+"=[^&#]*&|[&?]"+name+"=[^&#]*$"); return url.replace(regex, ""); }, addVarToURL: function (url, name, val) { url = EF.deleteVarFromURL(url, name); if( /\?/.test(url) ) url += "&" + name + "=" + val; else url += "?" + name + "=" + val; return url; }, addSID: function (url) { return EF.addVarToURL(url, "efsid", EF.webkitSID); }, inFrame: function () { if( typeof document.inFrame != "undefined" ) { return document.inFrame; } else { try { return (typeof window.frameElement != "undefined" && window.frameElement != null) || (parent && parent != window); } catch (e) { return true; } } }, initState: 0, init: function () { if( EF.initState != 0 ) return; EF.initState = 1; if( EF.inFrame() && !EF.hasAddon() ) return; if( EF.getParameter("eflipignore") ) return; if( /livenet24\.de\/addon\/get_addon\.php/.test(location.href) ) return; setInterval(function(){ /*try {*/ if( window.opener && window.opener.location.href == location.href ) window.close(); /*} catch (e) {}*/ },500); if (arguments.callee.done) return; arguments.callee.done = true; if (EF._initTimer) clearInterval(EF._initTimer); if( typeof EF._oldOnload == "function" ) EF._oldOnload(); if( /WebKit/i.test(navigator.userAgent) && !/Chrome/i.test(navigator.userAgent) || EF.getParameter("efsid") != null ) { var efsid = EF.getParameter("efsid"); if( efsid == null ) { efsid = EF.getParameter("efsid", EF.getScriptSrc(/efpd.js.php/)); } if( efsid == null ) { efsid = EF.getCookie("eflipsid"); } if( efsid == null ) { efsid = EF.generateWebKitSID(); } EF.webkitSID = efsid; EF.setCookie("eflipsid", efsid); } // auto load libs for( var i in EF.libs ) if( EF.isInt(i) ) { // HACK: change the efliproom parameter for now, will be done better in a new version if( /eFlipEvent.js.php/.test(EF.libs[i].file) ) { if( EF.webkitSID != null ) EF.libs[i].params.s = EF.webkitSID; if( EF.getParameter("efliproom") != null ) EF.libs[i].params.efliproom = EF.getParameter("efliproom"); if( typeof EFAddon != "undefined" && EFAddon.forceStart ) EF.libs[i].params.efliproom = EFAddon.forceRoom; } var cb = (function(lib) { return function() {EF.load(lib);} })(EF.libs[i]); if( typeof EF.libs[i].wait != "undefined" ) EF.wait(EF.libs[i].wait, cb); else cb(); } // auto load styles for( var i in EF.styles ) EF.loadStyle(EF.copyObject({ file: EF.getBaseURL() + EF.styles[i].file } ,EF.styles[i])); if( typeof eFlipCustomInit == "function" ) eFlipCustomInit(); EF.signal("EF-init"); EF.initState = 2; } }; /* for Mozilla/Opera9 */ if (document.addEventListener) { document.addEventListener("DOMContentLoaded", EF.init, false); } /* for Internet Explorer */ /*@cc_on @*/ /*@if (@_win32) document.write("