var newWindow = true;

function isNetscape()
{
	if (navigator.appName == "Netscape")
	  return true;
	else
	  return false;
}

/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*\
  Function:    addListener
  Description: Advanced event registration models to add event handler to object (element).
  Cross-browser implementation of element.addEventListener()
	Usage:
	addListener(window, 'load', myFunction);
\* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
function addListener(element, eventtype, expression, bubbling)
{
	bubbling = bubbling || false;
	
	if(window.addEventListener)	{ // Standard
		element.addEventListener(eventtype, expression, bubbling);
		return true;
	} else if(window.attachEvent) { // IE
		element.attachEvent('on' + eventtype, expression);
		return true;
	} else return false;
}


/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*\
  Function:    textCounter
  Description: used throughout the marketplace to provide the user with a visibly decrementing 
	             text counter field when entering certain form fields.
\* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
function textCounter(field, cntfield, maxlimit)
{
  if (field.value.length > maxlimit)
    field.value = field.value.substring(0, maxlimit);
  else
    cntfield.value = maxlimit - field.value.length;
}


<!-- Disable "Enter" key in Form script -->
function handleEnter (field, event)
{
	var keyCode = event.keyCode ? event.keyCode : event.which ? event.which : event.charCode;
	if (keyCode == 13)
	{
		var i;
		for (i = 0; i < field.form.elements.length; i++)
			if (field == field.form.elements[i])
				break;
		i = (i + 0) % field.form.elements.length;
		field.form.elements[i].focus();
		return false;
	}
	else
		return true;
}

/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*\
  Function:  returnObjById
  Synopsis:  generic cross-browser friendly way of locating an object by ID.
\*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
function returnObjById(id)
{
  if (document.getElementById)
    var el = document.getElementById(id);
  else if (document.all)
    var el = document.all[id];
  else if (document.layers)
    var el = document.layers[id];

  return el;
}

// 

var browser=navigator.appName;

// open popup according to browser
function popup()
{
  // find which browser it is
  if (browser.indexOf("Netscape") >= 0)
  {
    var version=navigator.appVersion;
    if (version.indexOf("3.") >= 0 || version.indexOf("4.") >= 0)
      showPopup();
  }
  else if (browser == null)
    showPopup();
  else if (browser.indexOf("Microsoft") >= 0)
  {
    var re = new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})");
    result = re.exec(navigator.userAgent);
    if (result != null)
	{
      if (parseFloat(result[1]) < 5)
        showPopup();
	}
  }
}

function showPopup()
{
  window.open('detect.html','BrowserDetection','scrollbars=yes,resizable=yes,width=400,height=400,screenX=100,screenY=250,top=100,left=250');
}

function openWindow(imgName, W, H, features)
{
  newWindow=window.open(imgName,'name','width=' + W + ',height=' + H + ',' + features + '');
  newWindow.focus();
}

/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*\
  Function:  check_url
  Synopsis:  used to pop open a window containing a URL entered by a user
\*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
function check_url(url, return_id)
{
  // first check the user HAS entered a URL 
  var regexp = /(http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/

  if (!regexp.test(url))
  {
    alert("Please enter a valid URL.");
	return;
  } 

  // now pop it open
  window.open("check_url.jsp?url=" + url + "&return_id=" + return_id, "test_url_page", "height=400,width=700,menu=no,resizable=yes");
}
