// JavaScript Document


// ==========================================================================
// Fuctions built by Macromedia
// ==========================================================================
function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}
function MM_validateForm() { //v4.0
  var i,p,q,nm,test,num,min,max,errors='',args=MM_validateForm.arguments;
  for (i=0; i<(args.length-2); i+=3) { test=args[i+2]; val=MM_findObj(args[i]);
    if (val) { nm=val.name; if ((val=val.value)!="") {
      if (test.indexOf('isEmail')!=-1) { p=val.indexOf('@');
        if (p<1 || p==(val.length-1)) errors+='- '+nm+' must contain an e-mail address.\n';
      } else if (test!='R') { num = parseFloat(val);
        if (isNaN(val)) errors+='- '+nm+' must contain a number.\n';
        if (test.indexOf('inRange') != -1) { p=test.indexOf(':');
          min=test.substring(8,p); max=test.substring(p+1);
          if (num<min || max<num) errors+='- '+nm+' must contain a number between '+min+' and '+max+'.\n';
    } } } else if (test.charAt(0) == 'R') errors += '- '+nm+' is required.\n'; }
  } if (errors) alert('The following error(s) occurred:\n'+errors);
  document.MM_returnValue = (errors == '');
}
function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}
function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_preloadImages() { //v3.0
 var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
   var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
   if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_changeProp(objName,x,theProp,theValue) { //v6.0
  var obj = MM_findObj(objName);
  if (obj && (theProp.indexOf("style.")==-1 || obj.style)){
    if (theValue == true || theValue == false)
      eval("obj."+theProp+"="+theValue);
    else eval("obj."+theProp+"='"+theValue+"'");
  }
}


// slightly modified to append vs just changing the text
function MM_setTextOfTextfield(objName,x,newText) { //v3.0
  var obj = MM_findObj(objName);
	if (obj)
		obj.value = obj.value + newText + " ";
}


function JBE_activateField(strFieldName) {
	MM_changeProp(strFieldName,'','className','active','INPUT/TEXT');
}
function JBE_deactivateField(strFieldName) {
	MM_changeProp(strFieldName,'','className','inactive','INPUT/TEXT');
}




// ==========================================================================
// dynamic loading of files
// ==========================================================================
function AJAXloadfile(strSourceFile, destinationID, blnErrorLink) {
// strSourceFile - source file to load
// destinationID - div tag which source file will be loaded into
// blnErrorLink - not sure

	var strDestID = destinationID;

	try {
		// Mozilla supports XMLHttpRequest. IE uses ActiveX.
		destinationID = window.XMLHttpRequest?new XMLHttpRequest():new ActiveXObject("Microsoft.XMLHTTP");
	} catch (e) {
		// browser doesn't support ajax. handle however you want
	}
	// the xmlhttp object triggers an event everytime the status changes
	destinationID.onreadystatechange = triggered;

// open takes in the HTTP method and source file url
	destinationID.open("GET", strSourceFile);
	// Moz is fine with just send(); but IE expects a value here
	destinationID.send(null);

	// creates a link to the source file
	if (blnErrorLink == true) {
		var strSourceLink = "<a href='" + strSourceFile + "' target='_blank'>" + strSourceFile + "</a>";
	} else {
		var strSourceLink = strSourceFile;
	}

	// handles the display of the source file
	function triggered() {
		// readyState : 0=Uninitialized 1=Loading 2=Loaded 3=Interactive 4=Complete
		// status : 200=file found, 404=file not found, 500=server not found?
		if ((destinationID.readyState == 4) && (destinationID.status == 200)) {
			// xmlhttp.responseText object contains the response.
			document.getElementById(strDestID).innerHTML = destinationID.responseText;

		} else if ((destinationID.readyState == 4) && (destinationID.status == 404)) {
			document.getElementById(strDestID).innerHTML = strSourceLink + ": file not found";

		} else if ((destinationID.readyState == 4) && (destinationID.status == 500)) {
			document.getElementById(strDestID).innerHTML = strSourceLink + ": error loading file";
		}
	} // triggered
} // AJAXloadfile


// ==========================================================================
// Fuctions to mimic LTrim, RTrim, and Trim...

// Author          Aurélien Tisné	(CS)
// Date            03 avr. 2003 23:11:39
// Last Update     $Date$
// Version         $Revision$
// ==========================================================================

// --------------------------------------------------------------------------
// Remove leading blanks from our string.

// I               str - the string we want to LTrim
// Return          the input string without any leading whitespace

// Date            03 avr. 2003 23:12:13
// Author          Aurélien Tisné	(CS)
// --------------------------------------------------------------------------
function LTrim(str)
{
  var whitespace = new String(" \t\n\r");
  var s = new String(str);

	// We have a string with leading blank(s)...
  if (whitespace.indexOf(s.charAt(0)) != -1) {
    var j=0, i = s.length;

    // Iterate from the far left of string until we
    // don't have any more whitespace...
    while (j < i && whitespace.indexOf(s.charAt(j)) != -1)
    j++;

    // Get the substring from the first non-whitespace
    // character to the end of the string...
    s = s.substring(j, i);
  }
  return s;
}

// --------------------------------------------------------------------------
// Remove trailing blanks from our string.

// I               str - the string we want to RTrim
// Return          the input string without any trailing whitespace

// Date            03 avr. 2003 23:13:50
// Author          Aurélien Tisné	(CS)
// --------------------------------------------------------------------------
function RTrim(str)
{
  // We don't want to strip JUST spaces, but also tabs,
  // line feeds, etc.  Add anything else you want to
  // "trim" here in Whitespace
  var whitespace = new String(" \t\n\r");
  var s = new String(str);

	// We have a string with trailing blank(s)...
  if (whitespace.indexOf(s.charAt(s.length-1)) != -1) {
    var i = s.length - 1;       // Get length of string

    // Iterate from the far right of string until we
    // don't have any more whitespace...
    while (i >= 0 && whitespace.indexOf(s.charAt(i)) != -1)
      i--;

    // Get the substring from the front of the string to
    // where the last non-whitespace character is...
    s = s.substring(0, i+1);
  }
  return s;
}


// --------------------------------------------------------------------------
// Remove trailing and leading blanks from our string.

// I               str - the string we want to Trim
// Return          the trimmed input string

// Date            03 avr. 2003 23:15:09
// Author          Aurélien Tisné	(CS)
// --------------------------------------------------------------------------
function Trim(str)
{
  return RTrim(LTrim(str));
}

// EOF


