Also das könnte hier dran liegen.

Code:
...
if (win.location != Y) {
win = window.open(FramesetURL, "Besuchertausch", "width=800,height=600, status=1");
...
Tausch mal Y gegen die URL des Frameset aus.

Und erstze vielleicht mal

Code:
...
//Restart bei Popup close
function Restart() {
Restartcount++;
if (Restartcount > 5) {
win = window.open(FramesetURL, "Besuchertausch", "width=800,height=600, status=1");    
}   
}
...
Gegen

Code:
...
//Restart bei Popup close
function Restart() {
Restartcount++;
if (Restartcount > 5) {
Restartcount = 0;
win = window.open(FramesetURL, "Besuchertausch", "width=800,height=600, status=1");    
}   
}
...
oder

Code:
...
//Restart bei Popup close
function Restart() {
if (win) {
}
else {
win = window.open(FramesetURL, "Besuchertausch", "width=800,height=600, status=1");    
}   
}
...
Der erste Code soll das Popup zu Frameset zurückholen, wenn die location des Popup ungleich der Adresse des Frameset ist.

Der zweite Code Zählt eine Variable hoch, das Popup setzt sie wieder auf 0.

Verschwindet das Popup, so wird die Variable immer höher gezählt und erreicht nach 5 Sekunden den Wert 5.

Dann erkennt das Script, dass das Popup geschlossen wurde.

Die Änderung (letzter code) sollte aber besser sein, falls sie funktioniert. (habe ich nicht getestet)