/* Proxomitron - Deutsche Distribution - Profi-Edition * * Diese Datei gehört zu den Skriptkontroll-Funktionen der Profi-Edition. * * Stand: 04.04.2005 * * Michael Bürschgens (http://www.buerschgens.de/Prox/) */ ProxSuccessStartCode = "JSStartAnfang"; ProxJSVer = ProxJSVer + "Start:040405,"; /* Frühzeitig speichern, welcher Browser benutzt wird. Falls die maßgeblichen Objekte * später ersetzt werden, ist das nicht mehr möglich. * IE muss bei den Methoden als Sonderfall behandelt werden. */ var ProxBrowserType = "unbekannt"; if (navigator.userAgent.indexOf('Opera') != -1) ProxBrowserType = "Opera"; else if (navigator.userAgent.indexOf('MSIE') != -1) ProxBrowserType = "IE"; else if (navigator.userAgent.indexOf('Gecko') != -1) ProxBrowserType = "Gecko"; /* Erzeuge Kopien der Original-Methoden * Einige innerhalb der Filterskripten benötigte Skriptfunktionen können selbst * durch Filter deaktiviert werden. Um Konflikte zu vermeiden, werden hier Verweise * auf die ursprünglichen Methoden erzeugt. */ ProxSK_windowSetTimeout = window.setTimeout; ProxSK_windowOpen = window.open; ProxSK_windowAlert = window.alert; ProxSK_windowLocationReplace = window.location.replace; if(!window.document.ProxSK_write) { window.document.ProxSK_write = document.write; } document.ProxSK_writeln = document.writeln; if (window.showModelessDialog) { ProxSK_showModelessDialog = window.showModelessDialog; } if (window.showModalDialog) { ProxSK_showModalDialog = window.showModalDialog; } if (window.showHelp) { ProxSK_showHelp = window.showHelp; } if (window.createPopup) { ProxSK_createPopup = window.createPopup; } /* Diese Abfragen versuchen herauszufinden, ob das aktuelle window-Objekt * ein ganzes Fenster, ein Frame in einem Frameset oder ein IFrame * in einer Webseite ist. * Das ist wichtig, damit Ereignisse, die in kleinen IFrames statt finden, * durch Meldungen im Hauptfenster dargestellt werden können. */ var ProxEnvWinType = ""; if (window == top) { ProxEnvWinType = "Single"; } else { /* Hier try .. catch, weil der Aufstieg in der Fensterhierarchie, * wenn er Domainübergreifend stattfindet, eine Sicherheitswarnung * auslösen und das Skript abbrechen würde. */ try { if (top.document.getElementsByTagName("frame").length > 0) { ProxEnvWinType = "Frame"; } else if (top.document.getElementsByTagName("frame").length == 0) { ProxEnvWinType = "IFrame"; } } catch (ex) { ProxEnvWinType = "Single"; } } function proxMeldung (typ,farbe,dauer,eingabeText) { if (!typ || typeof typ != "string" || !(typ == "LeisteBlink" || typ == "MittBlink" || typ == "alert")) { typ = "MittBlink"; } if (!farbe || typeof farbe != "string" || !(farbe == "Ro" || farbe == "Ge" || farbe == "Gr")) { farbe = "Ro"; } if (!dauer || isNaN(dauer)) { dauer = 3000; } if (!eingabeText || typeof eingabeText != "string" || eingabeText == "") eingabeText = "kein Meldungstext uebergeben"; if (typ == "alert") { return ProxSK_windowAlert("Proxomitron meldet: " + eingabeText); } var meldung = document.createElement("div"); var meldungID = Math.floor(Math.random()*1000); meldung.id = "ProxMeldungID" + meldungID; if (ProxBrowserType == "IE") { meldung.style.position = "absolute"; } else { meldung.style.position = "fixed"; } var objektBild = document.createElement("img"); if (typ == "LeisteBlink") { objektBild.setAttribute("src","http://local.ptron/ProxIcon32.png"); meldung.appendChild(objektBild); meldung.className = "ProxMeldLeisteBlink" + farbe; if (ProxBrowserType == "IE") { if (window.document.body) { meldung.style.width = window.document.body.clientWidth - 2; meldung.style.top = document.body.scrollTop + 1; } else { meldung.style.width = "100%"; meldung.style.top = "1px"; } meldung.style.left = "1px"; } else { meldung.style.left = "1px"; meldung.style.right = "1px"; meldung.style.top = "1px"; } } else if (typ == "MittBlink") { objektBild.setAttribute("src","http://local.ptron/ProxIcon64.png"); meldung.appendChild(objektBild); meldung.appendChild(document.createElement("br")); meldung.className = "ProxMeldMittBlink" + farbe; if (ProxBrowserType == "IE") { meldung.style.width = "400px"; } else { meldung.style.minWidth = "300px"; meldung.style.width = "40%"; } meldung.style.top = "30%"; meldung.style.left = "30%"; } var objektTextbereich = document.createElement("span"); objektTextbereich.appendChild(document.createTextNode(eingabeText)); meldung.appendChild(objektTextbereich); if (document.getElementsByTagName("body")[0]) { document.getElementsByTagName("body")[0].appendChild(meldung); ProxSK_windowSetTimeout("document.getElementsByTagName('body')[0].removeChild(document.getElementById('ProxMeldungID" + meldungID + "'));",dauer); } } function proxMeldungBlinken (eingabeText,dauer) { return proxMeldung("MittBlink","Ro",dauer,eingabeText); } function proxMeldung_LeisteBlink (eingabeText,dauer,farbe) { return proxMeldung("LeisteBlink",farbe,dauer,eingabeText); } /* Spezialisierte Nichtstuer */ function ProxNoopTrue() { return true; } function ProxNoopFalse() { return false; } function ProxNoopNothing() { return; } /* Funktionen zur PopUp-Kontrolle * * Funktionsprinzip: Nach jedem Mausklick wird die aktuelle Uhrzeit in einer Variablen * gespeichert. Wenn ein Skript versucht, ein neues Fenster zu öffnen, wird ebenfalls * die Uhrzeit abgefragt und mit dem vom letzten Klick gespeicherten Wert verglichen. * Wenn innerhalb der letzten 2 Sekunden ein Mausklick erfolgt ist, wird das PopUp-Fenster * zugelassen. Anderenfalls wird es blockiert. * * Alle abgefangenen PopUp-Aufrufe werden in Form von Objekten in einem Vektor gespeichert. * Das aufrufende Skript bekommt ein Dummy-Objekt zurückgegeben, auf dem unter anderem focus() und blur() * als funktionslose Methoden implementiert sind, die aber immer eine Erfolgsmeldung zurückgeben. */ if (ProxConfSC.indexOf("WOCActive") != -1) { /* Zählvariable für blockierte PopUps. * Der Wert hat nichts mit der Größe des Speicherarrays zu tun, sondern wird nur mitgezählt, * um bei Erreichen des Werts "ProxWOC_WinCountMAX" die Verarbeitung umzuschalten, * sodass kein weiterer Speicher belegt wird. */ var ProxWOC_WinCount = 0; /* Schwellenwert zwischen "viele PopUps" und "Browserbombe". * Wenn der Wert erreicht ist, werden alle weiteren PopUp-Anforderungen nicht mehr verarbeitet, * sondern ohne weiteren Speicherverbrauch, sofort verworfen. */ var ProxWOC_WinCountMAX = 20; // Speicherarray für Objekte, die blockierte PopUps repräsentieren ProxWOC_WinArray = new Array(); // Prototyp für Speicherobjekte, die blockierte PopUps repräsentieren function ProxWOC_WinObj(typ,input2,input3,input4) { function methode() { return; } this.blur = methode; this.focus = methode; this.moveTo = methode; this.resizeTo = methode; this.moveBy = methode; this.resizeBy = methode; this.close = methode; function body() { this.innerHTML = ""; } function document() { this.body = new body; this.write = methode; this.writeln = methode; this.open = methode; this.close = methode; } this.document = new document; this.closed = false; if (typ == "open") { this.typ = typ; this.url = input2; this.name = input3; this.attrib = input4; } else if (typ == "showModelessDialog" || typ == "showModalDialog") { this.typ = typ; this.url = input2; this.arg = input3; this.feat = input4; } else if (typ == "showHelp") { this.typ = typ; this.url = input2; this.contextID = input3; } else if (typ == "createPopup") { this.typ = typ; this.show = methode; this.hide = methode; } else { this.typ = "ungueltigerTyp" } return this; } // Setze Startdatum auf Null var ProxWOC_StartDate = new Date(0); // Bei Mausklick, setze Startdatum auf aktuelles Datum. function ProxWOC_OMUp() { ProxWOC_StartDate = new Date(); } /* Als Ergänzung zur PopUp-Filterung, kann diese Funktion bei erlaubten PopUps * alle evtl. deaktivierten Fensterbestandteile reaktivieren. */ function ProxWOC_Open_ModAttrib(atr) { // Wenn Funktion per Steuervariable deaktiviert ist, Original-Attribute zurückgeben. if(ProxConfSC.indexOf("WOCForceCon") == -1) { return(atr); } // Nur die Größenangaben werden übernommen. Alle anderen Attribute werden überschrieben. var xatr = "location=yes,status=yes,resizable=yes,toolbar=yes,scrollbars=yes,menubar=yes,hotkeys=yes"; if(atr) { var hm; hm = atr.match(/height\=[0-9]+/i); if(hm) xatr += "," + hm; hm = atr.match(/width\=[0-9]+/i); if(hm) xatr += "," + hm; } return(xatr); } // Zweiter Teil der PopUp-Verarbeitung. Wird von den verschiedenen Ersatzmethoden aufgerufen, um die Zeit zu überprüfen. function ProxWOC_All_chkTime(typ,input2,input3,input4) { // Anzeigedauer für optische PopUp-Benachrichtigungen in Millisekunden var MeldungDauer = 2500; // Sicherheitsabfrage. PopUps werden nur verarbeitet, wenn die Filterskripten geladen sind // und die Variable für die Startzeit initialisiert ist. if(ProxSuccessEndCode && ProxWOC_StartDate) { // Aktuelle Zeit in Variable schreiben var CurrentDate = new Date(); // Aktuelle Zeit mit Zeitpunkt des letzten Mausklicks vergleichen CurrentDate.setTime(CurrentDate.getTime()-ProxWOC_StartDate.getTime()); // Wenn in den vergangenen 2 Sekunden geklickt worden ist, PopUp zulassen. if(CurrentDate.getTime()<=2000) { if (typ == "open") { return(ProxSK_windowOpen(input2,input3,ProxWOC_Open_ModAttrib(input4))); } if (typ == "showModelessDialog") { return(ProxSK_showModelessDialog(input2,input3,input4)); } if (typ == "showModalDialog") { return(ProxSK_showModalDialog(input2,input3,input4)); } if (typ == "showHelp") { return(ProxSK_showHelp(input2,input3)); } if (typ == "createPopup") { return(ProxSK_createPopup()); } } } // Zähler für blockierte PopUps erhöhen ProxWOC_WinCount++; // Wenn Maximale Anzahl zu speichernder PopUps erreicht, dann nichts mehr speichern. // (Bis hier kommt die Anforderung normalerweise nicht. Höchstens, wenn WinCountMAX innerhalb von 500ms erreicht wird.) if (ProxWOC_WinCount > ProxWOC_WinCountMAX) { return null; } // Normale PopUps in Grün melden. var MeldungFarbe = "Gr"; // Das letzte in Rot. if (ProxWOC_WinCount >= ProxWOC_WinCountMAX) { MeldungFarbe = "Ro"; } /* PopUp-Aufrufe in IFrames werden im Speicherarray des Hauptfensters gespeichert und * mit dessen Meldungsfunktion signalisiert. */ if (ProxEnvWinType == "IFrame") { top.proxMeldung_LeisteBlink("PopUp blockiert (" + (top.ProxWOC_WinArray.length+1) + ") (Typ: " + typ + ")",MeldungDauer,MeldungFarbe); return top.ProxWOC_WinArray[top.ProxWOC_WinArray.length] = new ProxWOC_WinObj(typ,input2,input3,input4); } else { proxMeldung_LeisteBlink("PopUp blockiert (" + (ProxWOC_WinArray.length+1) + ") (Typ: " + typ + ")",MeldungDauer,MeldungFarbe); return ProxWOC_WinArray[ProxWOC_WinArray.length] = new ProxWOC_WinObj(typ,input2,input3,input4); } } function ProxWOC_Open_Subst(url,nam,atr,atr2) { // Wenn Maximale Anzahl zu speichernder PopUps erreicht, keine weitere Verarbeitung. if (ProxWOC_WinCount > ProxWOC_WinCountMAX) { return null; } return(ProxWOC_All_chkTime("open",url,nam,atr)); } window.open = ProxWOC_Open_Subst; if (window.showModelessDialog) { function ProxWOC_ModelessDialog_Subst(url,arg,feat) { // Wenn Maximale Anzahl zu speichernder PopUps erreicht, keine weitere Verarbeitung. if (ProxWOC_WinCount > ProxWOC_WinCountMAX) { return null; } // Die URL-Angabe ist laut MSDN Pflicht und immer vom Typ String. if (!url || typeof url != "string") { return null; } if (arg && typeof arg != "string") { var arg = "kein string"; } if (feat && typeof feat != "string") { var feat = "kein string"; } return(ProxWOC_All_chkTime("showModelessDialog",url,arg,feat)); } window.showModelessDialog = ProxWOC_ModelessDialog_Subst; } if (window.showModalDialog) { function ProxWOC_ModalDialog_Subst(url,arg,feat) { if (ProxWOC_WinCount > ProxWOC_WinCountMAX) { return null; } if (!url || typeof url != "string") { return null; } if (arg && typeof arg != "string") { var arg = "kein string"; } if (feat && typeof feat != "string") { var feat = "kein string"; } return(ProxWOC_All_chkTime("showModalDialog",url,arg,feat)); } window.showModalDialog = ProxWOC_ModalDialog_Subst; } if (window.showHelp) { function ProxWOC_showHelp_Subst(url,contextID) { if (ProxWOC_WinCount > ProxWOC_WinCountMAX) { return null; } if (!url || typeof url != "string") { return null; } return(ProxWOC_All_chkTime("showHelp",url,contextID)); } window.showHelp = ProxWOC_showHelp_Subst; } if (window.createPopup) { function ProxWOC_createPopup_Subst(arg) { if (ProxWOC_WinCount > ProxWOC_WinCountMAX) { return null; } return(ProxWOC_All_chkTime("createPopup")); } window.createPopup = ProxWOC_createPopup_Subst; } } /* ############################################################# ## Adbuster ## Document.write-Control-Engine ## Version 1.87 ## ## Created by Zocko ## Visit: http://www.buerschgens.de/Prox/Forum/ ############################################################# */ // Zu checkende Tags ProxTagsArrayToCheck = new Array("", "", "", "<", ">"); var Global_Parameter=''; function Adbuster() { // Variablen deklarieren var Temp1, Temp2, Tagpaare = 0, AdbusterTemp, Parameter=''; // Falls mehrere Parameter übergeben wurden, diese zu einen String zusammensetzen. for (AdbusterTemp=0;AdbusterTemp=0 && Result.indexOf('')==-1 && Result.indexOf('src=http://'+location.hostname)==-1) {return true;} if (Result.search("width='\([0-1])\'", "gi")!=-1 && Result.search("height='\([0-1])\'", "gi")!=-1) {return true;} } if (Result.indexOf('