    var ie4 = false;

    if(document.all)
    {
      ie4 = true;
    }

    function open_FullScreen(url, windowName, features)
    {
      window.open(url, windowName, features);
    }

    function newWindow(url,windowName,features)
    {
      window.open(url,windowName,features);
    }

    function clearText(boxId, defaultTxt)
    {
      txtBox = document.getElementById(boxId);
      if(txtBox.value == defaultTxt)
      {
        txtBox.value = "";
      }
    }

	function confirmMsg(message, url)
	{
      if(confirm(message)) { location.href = url; }
	}

	function sprintf()
	{
	   if (!arguments || arguments.length < 1 || !RegExp)
	   {
	      return;
	   }
	   var str = arguments[0];
	   var re = /([^%]*)%('.|0|\x20)?(-)?(\d+)?(\.\d+)?(%|b|c|d|u|f|o|s|x|X)(.*)/;
	   var a = b = [], numSubstitutions = 0, numMatches = 0;
	   while (a = re.exec(str))
	   {
	      var leftpart = a[1], pPad = a[2], pJustify = a[3], pMinLength = a[4];
	      var pPrecision = a[5], pType = a[6], rightPart = a[7];
	
	      numMatches++;
	      if (pType == '%')
	      {
	         subst = '%';
	      }
	      else
	      {
	         numSubstitutions++;
	         if (numSubstitutions >= arguments.length)
	         {
	            alert('Error! Not enough function arguments (' + (arguments.length - 1)
	               + ', excluding the string)\n'
	               + 'for the number of substitution parameters in string ('
	               + numSubstitutions + ' so far).');
	         }
	         var param = arguments[numSubstitutions];
	         var pad = '';
	                if (pPad && pPad.substr(0,1) == "'") pad = leftpart.substr(1,1);
	           else if (pPad) pad = pPad;
	         var justifyRight = true;
	                if (pJustify && pJustify === "-") justifyRight = false;
	         var minLength = -1;
	                if (pMinLength) minLength = parseInt(pMinLength);
	         var precision = -1;
	                if (pPrecision && pType == 'f')
	                   precision = parseInt(pPrecision.substring(1));
	         var subst = param;
	         switch (pType)
	         {
	         case 'b':
	            subst = parseInt(param).toString(2);
	            break;
	         case 'c':
	            subst = String.fromCharCode(parseInt(param));
	            break;
	         case 'd':
	            subst = parseInt(param) ? parseInt(param) : 0;
	            break;
	         case 'u':
	            subst = Math.abs(param);
	            break;
	         case 'f':
	            subst = (precision > -1)
	             ? Math.round(parseFloat(param) * Math.pow(10, precision))
	              / Math.pow(10, precision)
	             : parseFloat(param);
	            break;
	         case 'o':
	            subst = parseInt(param).toString(8);
	            break;
	         case 's':
	            subst = param;
	            break;
	         case 'x':
	            subst = ('' + parseInt(param).toString(16)).toLowerCase();
	            break;
	         case 'X':
	            subst = ('' + parseInt(param).toString(16)).toUpperCase();
	            break;
	         }
	         var padLeft = minLength - subst.toString().length;
	         if (padLeft > 0)
	         {
	            var arrTmp = new Array(padLeft+1);
	            var padding = arrTmp.join(pad?pad:" ");
	         }
	         else
	         {
	            var padding = "";
	         }
	      }
	      str = leftpart + padding + subst + rightPart;
	   }
	   return str;
	}	  

    function trim(s)
    {
	  return rtrim(ltrim(s));
    }

    function ltrim(s)
    {
	  var l=0;
	  while(l < s.length && s[l] == ' ')
	  {	l++; }
	  return s.substring(l, s.length);
    }

    function rtrim(s)
    {
	  var r=s.length -1;
	  while(r > 0 && s[r] == ' ')
	  {	r-=1;	}
	  return s.substring(0, r+1);
    }	

    function focusItem(item)
    {
      item.focus();
      item.select();      	
    }    