function isBlankValue(elem){if (!elem.value) return true; else {var str = elem.value;for (var i = 0; i < str.length; i++) {var ch = str.charAt(i);if ((ch != ' ') && (ch != '\n') && (ch != '\t')) return false;}return true;}}

function checkEmailAddress(field){
	if (field.value != ''){
		var value = String(field.value);
		var passed = false;

		for (index = 0; index < value.length; index++){
			if (value.charAt(index) == '@')
				passed = true;
		}

		if (passed == false){
			alert('Please use {ie. username@domain.com} format for all email entries.');
			field.value = '';
			field.focus();
		}
	}
}

function checkPassword(field){
	if (field.value != ''){
		var value = String(field.value);
		if (value.length < 6){
			alert('Please enter a password that is 6 characters or longer.');
			field.focus();
		}
	}
}

function confirmDelete(toDelete){
	if (confirm('You are about to delete ' + toDelete + '. Are you positive you would like to continue?'))
		return true;
	return false;
}

function checkPhoneNumber(field){
	var value = String(field.value);
	value = value.replace(/ /gi,'');

	for (index = 0; index < value.length; index++){
		if (isNaN(value.charAt(index))){
			value = value.replace(value.charAt(index), '');
			index--;
		}
	}

	var passed = true;

	if (value.length != 10){
		passed = false;
	}

	if (passed == true){
		value = '(' + value.substring(0,3) + ')' + value.substring(3,6) + '-' + value.substring(6,10);
	}else{
		value = '';
		alert('Please use {ie. 503-555-5555} format for all phone number entries.');
	}

	field.value = value;
}

//////////////////////////////////////////////////////////////////////////////////////
// SHA-1 JAVASCRIPT IMPLEMENTATION
//////////////////////////////////////////////////////////////////////////////////////

function createHash(sString)
{
	sString = String(sString);
	return calcSHA1(sString).toUpperCase();
}

/*
 * Convert a 32-bit number to a hex string with ms-byte first
 */
var hex_chr = "0123456789abcdef";
function hex(num)
{
  var str = "";
  for(var j = 7; j >= 0; j--)
    str += hex_chr.charAt((num >> (j * 4)) & 0x0F);
  return str;
}

/*
 * Convert a string to a sequence of 16-word blocks, stored as an array.
 * Append padding bits and the length, as described in the SHA1 standard.
 */
function str2blks_SHA1(str)
{
  var nblk = ((str.length + 8) >> 6) + 1;
  var blks = new Array(nblk * 16);
  for(var i = 0; i < nblk * 16; i++) blks[i] = 0;
  for(var i = 0; i < str.length; i++)
    blks[i >> 2] |= str.charCodeAt(i) << (24 - (i % 4) * 8);
  blks[i >> 2] |= 0x80 << (24 - (i % 4) * 8);
  blks[nblk * 16 - 1] = str.length * 8;
  return blks;
}

/*
 * Add integers, wrapping at 2^32. This uses 16-bit operations internally
 * to work around bugs in some JS interpreters.
 */
function safe_add(x, y)
{
  var lsw = (x & 0xFFFF) + (y & 0xFFFF);
  var msw = (x >> 16) + (y >> 16) + (lsw >> 16);
  return (msw << 16) | (lsw & 0xFFFF);
}

/*
 * Bitwise rotate a 32-bit number to the left
 */
function rol(num, cnt)
{
  return (num << cnt) | (num >>> (32 - cnt));
}

/*
 * Perform the appropriate triplet combination function for the current
 * iteration
 */
function ft(t, b, c, d)
{
  if(t < 20) return (b & c) | ((~b) & d);
  if(t < 40) return b ^ c ^ d;
  if(t < 60) return (b & c) | (b & d) | (c & d);
  return b ^ c ^ d;
}

/*
 * Determine the appropriate additive constant for the current iteration
 */
function kt(t)
{
  return (t < 20) ?  1518500249 : (t < 40) ?  1859775393 :
         (t < 60) ? -1894007588 : -899497514;
}

/*
 * Take a string and return the hex representation of its SHA-1.
 */
function calcSHA1(str)
{
  var x = str2blks_SHA1(str);
  var w = new Array(80);

  var a =  1732584193;
  var b = -271733879;
  var c = -1732584194;
  var d =  271733878;
  var e = -1009589776;

  for(var i = 0; i < x.length; i += 16)
  {
    var olda = a;
    var oldb = b;
    var oldc = c;
    var oldd = d;
    var olde = e;

    for(var j = 0; j < 80; j++)
    {
      if(j < 16) w[j] = x[i + j];
      else w[j] = rol(w[j-3] ^ w[j-8] ^ w[j-14] ^ w[j-16], 1);
      var t = safe_add(safe_add(rol(a, 5), ft(j, b, c, d)), safe_add(safe_add(e, w[j]), kt(j)));
      e = d;
      d = c;
      c = rol(b, 30);
      b = a;
      a = t;
    }

    a = safe_add(a, olda);
    b = safe_add(b, oldb);
    c = safe_add(c, oldc);
    d = safe_add(d, oldd);
    e = safe_add(e, olde);
  }
  return hex(a) + hex(b) + hex(c) + hex(d) + hex(e);
}