// ver 1.7a
var hwinmgr=new Array(1);
var popupmgrcnt=0;
var openerClosed=false;
var popmgrexists=true;
var preDate=new Date();
var WinPre="T"+(preDate.getTime() % 100);
preDate=null;

var tdomain = document.location
var x = new RegExp("\/\/([^\/]*)\/");
tdomain = x.exec(tdomain);
tdomain = RegExp.$1;
x=null;

var env='';
if (tdomain.indexOf('-')>0)
{
   var env=tdomain.substring(tdomain,tdomain.indexOf('-')).toUpperCase();
}

var tloc=new String(document.location);
if (env=='DEV' || tdomain.toUpperCase().indexOf('MMS.BUC.COM')>=0 || tdomain.indexOf('.')<0)
{
  var x;
  for (x=9+tdomain.length;x<tloc.length;x++)
  {
     if (tloc.substring(x,x-1)=='/')
	 {
	    tdomain=tloc.substring(7,x-1);
	    break;
	 } 
  }
}

var glbblankurl;
if (tloc.substring(5,4).toUpperCase()=='S')
    glbblankurl='https://'+tdomain+ '/js/blank.htm?ct=1';
else
    glbblankurl='http://'+tdomain+ '/js/blank.htm?ct=1';

tloc=null;	

var tilecnt=0;	
function PopUp(url,winname,parms,mtask,alignment)
{
   var objDate=new Date();
   
   if (alignment && alignment.toUpperCase()=='CENTER')
   {
		var winwidth = GetParm(parms,"width");
		var winheight = GetParm(parms,"height");
	
		var cw = (screen.width-winwidth)/2
		var ch = (screen.height-winheight)/2;
		
		if (tilecnt>5) tilecnt=1;
		cw+=(10*tilecnt);
		ch+=(10*tilecnt);
		tilecnt++;
		parms +=",top=" + ch + ",left=" + cw + ",screenx=" + cw + ",screeny=" + ch;
   }
   else
   {
        var didcenter=0;
		var winleft = GetParm(parms,"left");
		var wintop = GetParm(parms,"top");
		if (tilecnt>5) tilecnt=1;
		
		if (winleft.toUpperCase()=='CENTER')
		{
			var winwidth = GetParm(parms,"width");
			winleft = (screen.width-winwidth)/2;
			winleft+=(10*tilecnt);
			parms=parms.replace(/,?left=center/i,"");
		    parms += ",left=" + winleft + ",screenx=" + winleft;
		    didcenter=1;
		}

		if (wintop.toUpperCase()=='CENTER')
		{
			var winheight = GetParm(parms,"height");

			wintop = (screen.availHeight-80-winheight)/2;
			wintop+=(10*tilecnt);

			if (eval(wintop)+eval(winheight)>screen.availHeight-80)
			   wintop-=80;
			if (wintop<0)
			   wintop=0;   
			 
			parms=parms.replace(/,?top=center/i,"");
			parms +=",top=" + wintop + ",screeny=" + wintop;
			didcenter=1;
		}
		
		tilecnt+=didcenter;
   }


  
   // mtask values - (S)ingle,(M)ulti with prompt,(MW) Multi no prompt,(MO) Multi no prompt-overwright same window,(SO) single switch no prompt
   if (!mtask) var mtask='M';
   mtask=mtask.toUpperCase();
   var c=IsPopUpLoaded(winname);
   if (c>=0)
   {
       if (mtask=='S') 
       {
          self.focus();
          if (confirm("Application Already Loaded\nClick OK to switch to it."))
              hwinmgr[c].winRef.focus();
          return -1;
       }
       else if (mtask=='SO') 
       {
          hwinmgr[c].winRef.focus();
          return -1;
       }
        else if (mtask=="M")
       {
          self.focus();
          if (!confirm("Window Already Loaded\nClick OK to launch another."))
               return -1;   
          winname=winname+objDate.getTime();
       }
       else if (mtask=="MO")
       {
          hwinmgr[c].winRef=window.open(url,WinPre+winname,parms); 
		  hwinmgr[c].winUrl=url;
          //if (url!=glbblankurl) hwinmgr[c].focus();
          return hwinmgr[c].winRef;
       }
       else if (mtask && mtask!='MW')
       {
          self.focus();
          alert("Invalid tasking option");
          return -1;
       }   
           
   }
   hwinmgr[popupmgrcnt] = new Array(3);
   if(mtask=="MW")
	   winname=winname+objDate.getTime();
   hwinmgr[popupmgrcnt].winRef=window.open(url,WinPre+winname,parms); 
   
   try
   {
     hwinmgr[popupmgrcnt].winRef.focus();
   }
   catch (e)
   {
     showPopUpBlockedMsg();
     return -1;
   }
   
   
   hwinmgr[popupmgrcnt].winUrl=url;
   hwinmgr[popupmgrcnt].winName=WinPre+winname;
   popupmgrcnt++;
   return hwinmgr[popupmgrcnt-1].winRef;
   
}

function showPopUpBlockedMsg()
{
	var msg;
	msg =       "It appears that you have pop-up suppressing software on your computer\n";
	msg = msg + "that is affecting the functionality of this website. Please either";
	msg = msg + " disable\nit or configure it to allow pop-up windows from this website.\n";
	msg = msg + "Please read the FAQ for Popup stoppers/blockers accessible from the login page for more information.";
	alert(msg);
}

function IsPopUpLoaded(winname)
{
  var x;
  for (x=0;x<popupmgrcnt;x++)
  {
     if (hwinmgr[x].winName==WinPre+winname) 
     {
        try
        {
	        if (hwinmgr[x].winRef && hwinmgr[x].winRef!='[object inaccessible]' && !hwinmgr[x].winRef.closed) return x;
	    }
	    catch (e) {}
     }    
  } 
  return -1;
}

function RemovePopUp(nwin)
{
  // this is called by a poped up app to remove itself from the opener's child list so it doesn't try to close the child again.
  var x,y,z;
  for (x=0;x<popupmgrcnt;x++)
  {
     if (hwinmgr[x].winName==WinPre+nwin)
     {
         var horgarray=hwinmgr;
         hwinmgr=new Array(1);
         z=0;
         for (y=0;y<popupmgrcnt;y++)
         {
           if (y!=x)
           {
             hwinmgr[z]=horgarray[y]; 
             z++;
           }  
         }
         popupmgrcnt=hwinmgr.length;
         break;
     }
  } 
}


function CloseAllPopUps()
{
   // close all the poped up apps
   var x;
   for (x=0;x<popupmgrcnt;x++)
   {
      try
      {
	      if (hwinmgr[x].winRef && hwinmgr[x].winRef!='[object inaccessible]' && !hwinmgr[x].winRef.closed)
	      { 
	         try{if (hwinmgr[x].winRef.SetUnloadSafeFlag) hwinmgr[x].winRef.SetUnloadSafeFlag(true);}catch(e){}
	         hwinmgr[x].winRef.close();
	      }  
	  }
	  catch (e) {}
   }   
   hwinmgr=new Array(1);
   popupmgrcnt=0;
}

function SetPopedOpenerClosed()
{
   // loop thru poped windows and tell them the parent is closed
   var x;
   for (x=0;x<popupmgrcnt;x++)
   {
      try
      {
	      if (hwinmgr[x].winRef && hwinmgr[x].winRef!='[object inaccessible]' && !hwinmgr[x].winRef.closed)
	      { 
			  	try{
	    	     	if (hwinmgr[x].winRef.popmgrexists) hwinmgr[x].SetOpenerClosed();
				   }
				catch(e) {}
	      }  
	  }
	  catch (e) {}
   }   
}

function SetOpenerClosed()
{
   // called by the poper when it closes so this instance (child) doesn't try to ref opener
   openerClosed=true;
}

function UnloadMe(doclose)
{
   // called by the current unloading form
    try
    {
	   if (openerClosed==false && opener && opener.popmgrexists)
       opener.RemovePopUp(window.name);
	}
	catch(e) {}  
   
   SetPopedOpenerClosed();
   CloseAllPopUps();
   if (doclose) window.close();
}

function SendMessage(winname,msg)
{
  var x;
  var tstname=WinPre+winname;
  for (x=0;x<popupmgrcnt;x++)
  {
     try
     {
	     if (hwinmgr[x].winName==tstname || (hwinmgr[x].winName.substring(0,tstname.length)==tstname && hwinmgr[x].winName.substring(tstname.length,tstname.length+1)>="0" && hwinmgr[x].winName.substring(tstname.length,tstname.length+1)<="9") ) 
	     {
	        if (hwinmgr[x].winRef && hwinmgr[x].winRef!='[object inaccessible]' && !hwinmgr[x].winRef.closed) 
	        {
	           eval('hwinmgr['+x+'].winRef.'+msg);
	        }   
	     }    
	 }
	 catch (e) {}
  } 
}

var hidformcnt=0;
var informpost=false;
var glbpoppedwindow;
var glbposturl;
var glbpostdata;
var glbhidformfld;
function PopUpFormPost(postframe,hidformfld,postdata,url,winname,options,taskoption,alignment)
{
   if (informpost!=false) return;
   informpost=true;
   
   glbpoppedwindow=PopUp(glbblankurl,winname,options,taskoption,alignment);
   if (glbpoppedwindow<0)
   {
      informpost=false;
      return;
   }
   hwinmgr[popupmgrcnt-1].winUrl=url;
   glbposturl=url;
   glbpostdata=postdata;
   glbhidformfld=hidformfld;
   return glbpoppedwindow;
}

function PostForm()
{
   var PopUpForm;
   hidformcnt++;
   glbpoppedwindow.subForm(glbposturl,glbpostdata,glbhidformfld);
   informpost=false;
}

function GetParm(srcString,desparm)
{
    var docloc=new String(srcString);
    var parms=docloc.split(',');
	docloc=null;
    for (x=0;x<parms.length;x++)
    {
        var pair=parms[x].split('=');
        if (pair[0].toLowerCase()==desparm)
        {
           return pair[1];
        }
    }
   return '';
}