purtroppo non ho tempo di leggere il codice o di cercare di scovare eventuali difetti
verifica che si presenti lo stesso problema con questo esempio
codice:
<script type="text/javascript">
function setCk_popup() {
  var date = new Date(); 
  date.setTime(date.getTime()+1800000); // 30min * 60sec * 1000millisec
  document.cookie = 'pop=ok; expires='+date.toGMTString()+'; path=/';
}

function getCk(name) {
  var nameEQ = name + '=';
  var ca = document.cookie.split(';');
  for(var i=0;i < ca.length;i++) {
    var c = ca[i];
    while (c.charAt(0)==' ') c = c.substring(1,c.length);
    if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
  }
  return null;
}

if(getCk('pop')!="ok"){
	setCk_popup();
	var props="toolbar=0,menubar=0,status=0,location=0,scrollbars=0,resizable=0,width=320,height=240,top=100,left=100"
	window.open("pagina.htm","popup",props)
}
</script>
ciao