var base64		= {
 charmap		: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",
 encode			: function(str) {
  var ret		= "";
  var c, i, acc		= 0;
  var div		= 1;
  for(i=0,c=0;i<str.length;i++,c++) {
   acc			= acc*256 + str.charCodeAt(i);
   div			= div*4;
   ret			= ret + base64.charmap.charAt(parseInt(acc/div));
   acc			= acc % div;
   if(div==64) ret	= ret + base64.charmap.charAt(parseInt(acc)), acc = 0, div = 1,c++;
   if(c>=75) c=-1, ret	= ret + "\n";
  } if(i%3) {
   ret			= ret + base64.charmap.charAt(parseInt(acc*((i%3==1)?16:4)));
   ret			= ret + ((i%3)==1?"==":"=");
  } return ret;
 },
 decode			: function(str) {
  var ret		= "";
  var i, acc		= 0;
  var div		= 1;
  for(i=0;i<str.length;i++) {
   if(str.charAt(i)=="=" || str.charAt(i)=='\n') break;
   acc			= acc*64 + base64.charmap.indexOf(str.charAt(i));
   div			= (div==1?64:div/4);
   if(div!=64) {
    ret			= ret + String.fromCharCode(parseInt(acc/div));
    acc			= acc % div;
   }
  } return ret;
 }
}

var closeAll = false; // true|false

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.id; 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 == '');
}

// Close all <div class="close">
function classChange()
{
	for (i=0;i<document.getElementsByTagName("div").length; i++) 
	{
		if (document.getElementsByTagName("div").item(i).className == "close")
		{
			document.getElementsByTagName("div").item(i).style.display = "none";
		}
	}
}

/* Collapsable/Expandable Div Display Box */
function showDiv(ID, closeAll)
{
	/*
	Author:
		Another Tool by SBC 2005-12-05
	Usage:
		showDiv(ID)
	Purpose:
		Allows a "hidden" div to be placed in a HTML document and displayed when appropritate with
		the use of JavaScript event handlers: onClick, onMouseover and etc.
	Directions:
		Use the <div> statement below to establish your display box.
		
			<div id="Unique_ID_Name_Goes_Here" style="display:none;">
			
		If you want the display box visible when the page loads, change display:none to display:block.
		You can call this function using any JavaScript event handler method.  Below are some examples.
		
		Hyperlink:
			<a href="#" onclick="showDiv('Unique_ID_Name_Goes_Her'); return false">Display or Close Display Box</a>
			
		Input button:
			<input type="button" onclick="showDisplay('Unique_ID_Name_Goes_Her'); return false" value="Display or Close Display Box">
	*/
	// Should all open divs be closed?
	// If there is no div, don't throw a JavaScript error
	if(!document.getElementById(ID)){ alert('The ID `' + ID + '` does not exist on this page.'); return false; }
	
	// Evaluate the current visibility status of the display box.
	if(document.getElementById(ID).style.display == 'none')
	{
		if(closeAll == true){ classChange(); }		
		// The display box is not visible, so we want to display the box
		document.getElementById(ID).style.display='block';
	}
	else
	{
		if(closeAll == true){ classChange(); }				
		// The display box is visible, so we want to hide the display box
		document.getElementById(ID).style.display='none';
	}
}

function bookMark(pageURL, pageTitle) 
{ 
	if (window.external) { window.external.AddFavorite(pageURL,pageTitle) } 
	else { alert("Sorry! Your browser doesn't support this function."); } 
} 

function myCookie(name, value, expiry, path, domain)
{
	document.cookie= name + "=" + value + "; expires=" + expiry + "; " + " path=" + path + "; domain=" + domain + ";";
}