
function PopupEx( sUrl, sWinTitle, bToolbar, bLocation, bDirectories, bStatus, bMenubar, bScrollbars, bResizable, nWidth, nHeight, nXPos, nYPos, nTop, nLeft )
{
	var sParam;
	
	sParam = "toolbar=" + (bToolbar ? "1" : "0");
	sParam += ",location=" + (bLocation ? "1" : "0");
	sParam += ",directories=" + (bDirectories ? "1" : "0");
	sParam += ",status=" + (bStatus ? "1" : "0");
	sParam += ",menubar=" + (bMenubar ? "1" : "0");
	sParam += ",scrollbars=" + (bScrollbars ? "1" : "0");
	sParam += ",resizable=" + (bResizable ? "1" : "0");
	sParam += ",width=" + nWidth;
	sParam += ",height=" + nHeight;
	sParam += ",screenX=" + nXPos;
	sParam += ",screenY=" + nYPos;
	sParam += ",top=" + nTop;
	sParam += ",left=" + nLeft;
	
	window.open( sUrl, sWinTitle, sParam );
}

function PopupExCentered( sUrl, sWinTitle, bToolbar, bLocation, bDirectories, bStatus, bMenubar, bScrollbars, bResizable, nWidth, nHeight )
{
	var sParam, M, nScreenWidth, nScreenHeight, nXPos, nYPos;
	
	M = navigator.appName.indexOf("Microsoft")>-1
	nScreenWidth  = ((M) ? screen.width : screen.availWidth);
	nScreenHeight = ((M) ? screen.height : screen.availHeight);

	if( (nWidth == -1) && (nHeight == -1) )
	{
		nWidth  = nScreenWidth - 15;
		nHeight = nScreenHeight - 30;
	}

	nXPos = (nScreenWidth / 2) - (nWidth / 2);
	nYPos = (nScreenHeight / 2) - (nHeight / 2);

	nXPos = (nXPos < 0 ? 0 : nXPos);
	nYPos = (nYPos < 0 ? 0 : nYPos);
	
	PopupEx( sUrl, sWinTitle, bToolbar, bLocation, bDirectories, bStatus, bMenubar, bScrollbars, bResizable, nWidth, nHeight, nXPos, nYPos, nYPos, nXPos );
}


function FixedPopup( sUrl, sWinTitle, nWidth, nHeight )
{
	// Fixed size window
	// No toolbars
	// No status
	// Origin at 0,0

	if( (nWidth == -1) && (nHeight == -1) )
	{
		M = navigator.appName.indexOf("Microsoft")>-1
		nWidth  = ((M) ? screen.width : screen.availWidth) - 15;
		nHeight = ((M) ? screen.height : screen.availHeight) - 30;
	}
	
	//alert( "nWidth = (" + nWidth + "), nHeight = (" + nHeight + ")" );
	
	PopupEx( sUrl, sWinTitle, false, false, false, false, false, true, false, nWidth, nHeight, 0, 0, 0, 0 );
}

function FixedPopupCentered( sUrl, sWinTitle, nWidth, nHeight )
{
	// Fixed size window
	// No toolbars
	// No status

	M = navigator.appName.indexOf("Microsoft")>-1
	nScreenWidth  = ((M) ? screen.width : screen.availWidth);
	nScreenHeight = ((M) ? screen.height : screen.availHeight);

	if( (nWidth == -1) && (nHeight == -1) )
	{
		nWidth  = nScreenWidth - 15;
		nHeight = nScreenHeight - 30;
	}

	nXPos = (nScreenWidth / 2) - (nWidth / 2);
	nYPos = (nScreenHeight / 2) - (nHeight / 2);

	nXPos = (nXPos < 0 ? 0 : nXPos);
	nYPos = (nYPos < 0 ? 0 : nYPos);

	//alert( "nWidth = (" + nWidth + "), nHeight = (" + nHeight + ")" );
	
	PopupEx( sUrl, sWinTitle, false, false, false, false, false, false, false, nWidth, nHeight, nXPos, nYPos, nYPos, nXPos );
}

function CompletePopup( sUrl, sWinTitle, nWidth, nHeight )
{
	// Popup with everything enable

	if( (nWidth == -1) && (nHeight == -1) )
	{
		M = navigator.appName.indexOf("Microsoft")>-1
		nWidth  = ((M) ? screen.width : screen.availWidth) - 15;
		nHeight = ((M) ? screen.height : screen.availHeight) - 30;
	}

	PopupEx( sUrl, sWinTitle, true, true, true, true, true, true, true, nWidth, nHeight, 0, 0, 0, 0 );	
}

function NewWindow(mypage, myname, w, h, scroll, resizable) 
{
    var winl = (screen.width - w) / 2;
    var wint = (screen.height - h) / 2;
    winprops = 'height='+h+',width='+w+',top='+wint+',left='+winl+',scrollbars='+scroll+',resizable='+resizable+''
    win = window.open(mypage, myname, winprops)
    if (parseInt(navigator.appVersion) >= 4) 
    { 
        win.window.focus(); 
    }
}

function PopupMaximized( Url )
{
	M = navigator.appName.indexOf("Microsoft")>-1
	var nWidth  = ((M) ? screen.width : screen.availWidth) - 15;
	var nHeight = ((M) ? screen.height : screen.availHeight) - 30;

	windowName = window.open(Url,"video","height="+nHeight+",width="+nWidth+",toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=yes,screenx=0,screeny=0,left=0,top=0") 
	
	windowName.focus(); // only work with JavaScript 1.1+!
}

function ChangeParentAndClose( sUrl )
{
	opener.parent.location.href = sUrl;
	opener.location.href = sUrl;
	this.close();
	return false;
}

function ClosePopupOpenNewOne( sUrl, sWinTitle, nWidth, nHeight, bFixedWin )
{
	if( (nWidth == -1) && (nHeight == -1) )
	{
		M = navigator.appName.indexOf("Microsoft")>-1
		nWidth  = ((M) ? screen.width : screen.availWidth) - 15;
		nHeight = ((M) ? screen.height : screen.availHeight) - 30;
	}
	
	if( bFixedWin )
		FixedPopup( sUrl, sWinTitle, nWidth, nHeight );
	else
		CompletePopup( sUrl, sWinTitle, nWidth, nHeight );
		
	this.close();
	return false;
}

function FixedPopupAndChangeParent( sPopupUrl, sWinTitle, nWidth, nHeight, sParentUrl )
{
	FixedPopup( sPopupUrl, sWinTitle, nWidth, nHeight );
	
	window.location.href = sParentUrl;
		
	return false;
}


<!-- Version 1.1:  Sandeep V. Tamhankar (stamhankar@hotmail.com) -->
function emailCheck( emailStr )
{
	// The following pattern is used to check if the entered e-mail address
	// fits the user@domain format.  It also is used to separate the username
	// from the domain.
	var emailPat=/^(.+)@(.+)$/

	// The following string represents the pattern for matching all special
	// characters.  We don't want to allow special characters in the address.
	// These characters include ( ) < > @ , ; : \ " . [ ]
	var specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]"

	// The following string represents the range of characters allowed in a
	// username or domainname.  It really states which chars aren't allowed.
	var validChars="\[^\\s" + specialChars + "\]"

	// The following pattern represents the range of characters allowed as
	// the first character in a valid username or domain.  I just made it
	// the same as above, but if you want to add a different constraint,
	// you would change it here.
	var firstChars=validChars

	// The following pattern applies if the "user" is a quoted string (in
	// which case, there are no rules about which characters are allowed
	// and which aren't; anything goes).  E.g. "jiminy cricket"@disney.com
	// is a legal e-mail address.
	var quotedUser="(\"[^\"]*\")"

	// The following pattern applies for domains that are IP addresses,
	// rather than symbolic names.  E.g. joe@[123.124.233.4] is a legal
	// e-mail address. NOTE: The square brackets are required.
	var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/

	// The following string represents at atom (basically a series of
	// non-special characters.)
	var atom="(" + firstChars + validChars + "*" + ")"

	// The following string represents one word in the typical username.
	// For example, in john.doe@somewhere.com, john and doe are words.
	// Basically, a word is either an atom or quoted string.
	var word="(" + atom + "|" + quotedUser + ")"

	// The following pattern describes the structure of the user
	var userPat=new RegExp("^" + word + "(\\." + word + ")*$")

	// The following pattern describes the structure of a normal symbolic
	// domain, as opposed to ipDomainPat, shown above.
	var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$")


	// Finally, let's start trying to figure out if the supplied address is
	// valid.

	// Begin with the course pattern to simply break up user@domain into
	// different pieces that are easy to analyze.
	var matchArray=emailStr.match(emailPat)

	if (matchArray==null)
	{
		// Too many/few @'s or something; basically, this address doesn't
		// even fit the general mould of a valid e-mail address.
		LastError = "Email address seems incorrect (check @ and .'s)";
		return false
	}

	var user=matchArray[1]
	var domain=matchArray[2]

	// See if "user" is valid
	if (user.match(userPat)==null)
	{
		// user is not valid
		LastError = "The username doesn't seem to be valid.";
		return false
	}

	// if the e-mail address is at an IP address (as opposed to a symbolic
	// host name) make sure the IP address is valid.
	var IPArray=domain.match(ipDomainPat)

	if (IPArray!=null)
	{
		// this is an IP address
		for (var i=1;i<=4;i++)
		{
			if (IPArray[i]>255)
			{
				LastError = "Destination IP address is invalid!";
				return false
			}
		}

		return true
	}

	// Domain is symbolic name
	var domainArray=domain.match(domainPat)

	if (domainArray==null)
	{
		LastError = "The domain name doesn't seem to be valid.";
		return false
	}

	// domain name seems valid, but now make sure that it ends in a
	// three-letter word (like com, edu, gov) or a two-letter word,
	// representing country (uk, nl).
	// If there's a country code at the end of the address, the full domain
	// must include a hostname and category (e.g. host.co.uk or host.pub.nl).
	// If it ends in a .com or something, make sure there's a hostname.

	// Now we need to break up the domain to get a count of how many atoms
	// it consists of.
	var atomPat=new RegExp(atom,"g")
	var domArr=domain.match(atomPat)
	var len=domArr.length

	if( domArr[domArr.length-1].length<2 ||
		domArr[domArr.length-1].length>3)
	{
		// the address must end in a two letter or three letter word.
		LastError = "The address must end in a three-letter domain, or two letter country.";
		return false
	}

	// If it ends in a country code, we want to make sure there are at
	// least 2 atoms preceding it (representing host and category (i.e.
	// com, gov, etc.))

	/* E.P. 02/06/2000: INVALID CHECK BECAUSE "epoulin@sympatico.ca" IS A VALID ADRESS!!!
	if (domArr[domArr.length-1].length==2 && len<3)
	{
		LastError  = "This address ends in two characters, which is a country "
		LastError += "code.  Country codes must be preceded by "
		LastError += "a hostname and category (like com, co, pub, pu, etc.)"
		return false
	}
	*/

	// If it just ends in .com, .gov, etc., make sure there is a host name.
	// This case can never actually happen because earlier checks take
	// care of this implicitly, but we will do it anyway.
	if (domArr[domArr.length-1].length==3 && len<2)
	{
		LastError = "This address is missing a hostname!";
		return false
	}

	// If we have gotten this far, everything is valid!
	return true;
}


function SetFocusAndHighlight( sFieldName )
{
	var e = document.getElementById(sFieldName);
	e.focus();
	e.select();
}