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;
 }
}

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

function remainingChars(divIdValue, divIdRemain, charLimit)
{
	field = document.getElementById(divIdValue);
	if(!field) { return false; }
	
	if(field.value.length > charLimit)
	{		
		alert("You've reached the character limit.");
		field.value = field.value.substr(0, charLimit);
	}
	
	remaining = (charLimit - field.value.length);
	if(remaining < 0) { remaining = 0; }
	document.getElementById(divIdRemain).innerHTML = remaining;	
}

function compareFields(divFieldOne, divFeildTwo, alertMessage)
{
	var fieldOne = document.getElementById(divFieldOne);
	var fieldTwo = document.getElementById(divFeildTwo);
	
	if(fieldOne.value == fieldTwo.value)
	{
		return true
	}
	else
	{
		alert(alertMessage);	
	}
	return false;	
}

function ajaxGET(divId, page, effect)
{
	var xmlHttp;
	try
    {
    	// Firefox, Opera 8.0+, Safari
	    xmlHttp=new XMLHttpRequest();
    }
	catch (e)
    {
	    // Internet Explorer
	    try
	    {
		    xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
	    }
	    catch (e)
		{
			try
			{
				xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
			}
			catch (e)
        	{	
				alert("Your browser does not support AJAX!");
		        return false;
	        }
    	}
	}
	
    xmlHttp.onreadystatechange=function()
	{
    	if(xmlHttp.readyState==4)
		{
			if(effect == 'collapse') { document.getElementById(divId).style.display='none'; }
			else                     { document.getElementById(divId).innerHTML=xmlHttp.responseText; }
    	}
    }
	xmlHttp.open("GET",page,true);
    xmlHttp.send(null);
}

function defaultAutoFill(defaultValue, fieldId)
{
	if(empty(document.getElementById(fieldId).value)) { document.getElementById(fieldId).value = defaultValue; }
}

function minCharLimit(fieldId, minLimit, message)
{
	if(document.getElementById(fieldId).value.length < minLimit)
	{
		alert(message);
		is_false = false;
		return is_false;
	}
	
	return true;
}

function stripScript(string)
{
	var stripped = string.replace(/\s+/g," ");
	var stripped = stripped.replace(/^\s*([\s\S]*\S+)\s*$|^\s*$/,"$1");	
	var stripped = stripped.replace(/<script[^>]*?>.*?<\/script>/ig,"");
	
	return stripped;
}

function changeAmpersand(string)
{
	var ampersand = string.replace(/&amp;/ig,"&");
	
	return ampersand;
}

Image1= new Image(10,12);
Image1.src = "http://www.onlinebuttonsecrets.com/covers/abv3Down.gif";
Image2= new Image(10,12);
Image2.src = "http://www.onlinebuttonsecrets.com/covers/abv3Over.gif";
Image3= new Image(10,12);
Image3.src = "http://www.onlinebuttonsecrets.com/covers/abv3Up.gif";

function alexButton(state, ID)
{
	switch(state)
	{
		case "press":
			document.getElementById(ID).style.backgroundImage='url(http://www.onlinebuttonsecrets.com/covers/abv3Down.gif)';
			document.getElementById(ID).style.backgroundPosition='top';
			break;
		case "over":
			document.getElementById(ID).style.backgroundPosition='top';
			document.getElementById(ID).style.backgroundImage='url(http://www.onlinebuttonsecrets.com/covers/abv3Over.gif)';
			break;
		case "up":
		default:
		// Up	
			document.getElementById(ID).style.backgroundPosition='bottom';
			document.getElementById(ID).style.backgroundImage='url(http://www.onlinebuttonsecrets.com/covers/abv3Up.gif)';
			break;
	}
}

function linkify(URL,target, config)
{
	if(target != '')
	{
		// Open in a new window
		window.open(URL, target, config);
	}
	else
	{
		location.href=URL;
	}
}

function checkRadio(emptyId, newValue)
{
	document.getElementById(emptyId).value = newValue;
}