/*
 * For more on popups and their properties see:
 * http://www.quirksmode.org/js/popup.html
 */

//http://www.accessify.com/features/tutorials/the-perfect-popup/
//add-event.js
function addEvent(elm, evType, fn, useCapture){if(elm.addEventListener){elm.addEventListener(evType, fn, useCapture);return true;}else if (elm.attachEvent){var r = elm.attachEvent('on' + evType, fn);return r;}else{elm['on' + evType] = fn;}}
//popup.js
var newWindow = null;

function closeWin(){
   if (newWindow != null){
      if(!newWindow.closed)
         newWindow.close();
   }
}

function popUpWin(url, type, strWidth, strHeight){

   closeWin();

   type = type.toLowerCase();

   if (type == "fullscreen"){
      strWidth = screen.availWidth;
      strHeight = screen.availHeight;
   }
   var tools="";
   if (type == "standard") tools = "resizable,toolbar=yes,location=yes,scrollbars=yes,menubar=yes,width="+strWidth+",height="+strHeight+",top=0,left=0";
   if (type == "console" || type == "fullscreen") tools = "resizable,toolbar=no,location=no,scrollbars=no,width="+strWidth+",height="+strHeight+",left=0,top=0";
   newWindow = window.open(url, 'newWin', tools);
   newWindow.focus();
}

function doPopUp(e)
{
//set defaults - if nothing in rel attrib, these will be used
var t = "standard";
var w = "780";
var h = "580";

//look for parameters
attribs = this.rel.split(" ");
if (attribs[1]!=null) {t = attribs[1];}
if (attribs[2]!=null) {w = attribs[2];}
if (attribs[3]!=null) {h = attribs[3];}

// what if we want to adjust the URL, i.e. append something?
var href = this.href;
var append = null;
if (attribs[4]!=null) {append = attribs[4];}
if (append!=null){
// look for extensions, trailing slash
// .php, .htm, .html, .shtml, .asp, .aspx
	var appended = false;
	var exts = ['.php', '.htm', '.html', '.shtml', '.asp', '.aspx'];
	var exts_l = exts.length;
	for(var i = 0; i < exts_l; ++i){
		var m = href.indexOf(exts[i]);
		if(m > -1){
			href = href.replace(exts[i], append+exts[i]);
			appended = true;
			i = exts_l;
		}
	}
	if(!appended && href.charAt(href.length-1) == '/'){
		href = href.substr(0, href.length-1)+append+"/";
		appended = true;
	}
}


//call the popup script
popUpWin(href,t,w,h);
//cancel the default link action if pop-up activated
if (window.event)
   {
   window.event.returnValue = false;
   window.event.cancelBubble = true;
   }
else if (e)
   {
   e.stopPropagation();
   e.preventDefault();
   }
}

function findPopUps()
{
var popups = document.getElementsByTagName("a");
for (i=0;i<popups.length;i++)
   {
   if (popups[i].rel.indexOf("popup")!=-1)
      {
      // attach popup behaviour
      popups[i].onclick = doPopUp;
      // add popup indicator
      /* This icon business sort of subtracts from the whole perfection thing...
      if (popups[i].rel.indexOf("noicon")==-1)
         {
         popups[i].style.backgroundImage = "url(pop-up.gif)";
         popups[i].style.backgroundPosition = "0 center";
         popups[i].style.backgroundRepeat = "no-repeat";
         popups[i].style.paddingLeft = "15px";
         }
      */
      // add info to title attribute to alert fact that it's a pop-up window
      popups[i].title = popups[i].title + " [Opens in pop-up window]";
      }
   }
}

addEvent(window, 'load', findPopUps, false);
