// ------------------------------------------
// | Check for valid email addresses.       |
// ------------------------------------------

function isEmail(str) {

  // are regular expressions supported?
  var supported = 0;

  if (window.RegExp) {

    var tempStr = "a";
    var tempReg = new RegExp(tempStr);
    if (tempReg.test(tempStr)) supported = 1;

  }

  if (!supported) 
    return (str.indexOf(".") > 2) && (str.indexOf("@") > 0);
  var r1 = new RegExp("(@.*@)|(\\.\\.)|(@\\.)|(^\\.)");
  var r2 = new RegExp("^.+\\@(\\[?)[a-zA-Z0-9\\-\\.]+\\.([a-zA-Z]{2,3}|[0-9]{1,3})(\\]?)$");
  return (!r1.test(str) && r2.test(str));

}


// ------------------------------------------
// | Check for valid email addresses links. |
// ------------------------------------------

function isEmailLink(str) {

  // are regular expressions supported?
  var supported = 0;

  if (window.RegExp) {

    var tempStr = "a";
    var tempReg = new RegExp(tempStr);
    if (tempReg.test(tempStr)) supported = 1;

  }

  if (!supported) 
    return (str.indexOf(".") > 2) && (str.indexOf("@") > 0);
  var r1 = new RegExp("(@.*@)|(\\.\\.)|(@\\.)|(^\\.)");
  var r2 = new RegExp("^.+\\@(\\[?)[a-zA-Z0-9\\-\\.]+\\.([a-zA-Z]{2,3}|[0-9]{1,3})(\\]?)$");
  var r3 = /(mailto):?/
  return (!r1.test(str) && r2.test(str) && r3.test(str));

}


// ------------------------------------------
// | Check for valid urls.                  |
// ------------------------------------------

function isUrl(str) {
	var regexp = /(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/
	return regexp.test(str);
}


// ------------------------------------------
// | Check for valid numbers in strings.    |
// ------------------------------------------

function isNumber(str) {

  // Variables
  var checkOK = "0123456789";
  var checkStr = str;
  var allValid = true;
  var decPoints = 0;
  var allNum = "";

  for (i = 0;  i < checkStr.length;  i++) {

    ch = checkStr.charAt(i);

    for (j = 0;  j < checkOK.length;  j++)

      if (ch == checkOK.charAt(j))
        break;

    if (j == checkOK.length) {

      allValid = false;
      break;

    }

    if (ch != ",")
      allNum += ch;

  }

  return allValid;

}


// ------------------------------------------
// | Check for non-null and valid telephone |
// | numbers (including International ones) |
// ------------------------------------------

/**
 * DHTML phone number validation script. Courtesy of SmartWebby.com (http://www.smartwebby.com/dhtml/)
 */

// Declaring required variables
var digits = "0123456789";

// non-digit characters which are allowed in phone numbers
var phoneNumberDelimiters = "().- ";

// characters which are allowed in international phone numbers
// (a leading + is OK)
var validWorldPhoneChars = phoneNumberDelimiters + "+";

// Minimum no of digits in an international phone no.
var minDigitsInIPhoneNumber = 10;

function isInteger(s) {

  var i;

  for (i = 0; i < s.length; i++) {

    // Check that current character is number.
    var c = s.charAt(i);

    if (((c < "0") || (c > "9"))) return false;

  }

  // All characters are numbers.
  return true;

}

function stripCharsInBag(s, bag) {

  var i;
  var returnString = "";

  // Search through string's characters one by one.
  // If character is not in bag, append to returnString.
  for (i = 0; i < s.length; i++) {

    // Check that current character isn't whitespace.
    var c = s.charAt(i);
    if (bag.indexOf(c) == -1) returnString += c;

  }

  return returnString;

}

function checkInternationalPhone(strPhone) {

  s=stripCharsInBag(strPhone,validWorldPhoneChars);
  return (isInteger(s) && s.length >= minDigitsInIPhoneNumber);

}


// ------------------------------------------
// | Returns selected radio button value.   |
// ------------------------------------------

function radioValue(theFormField) {
  for (var i=0; i < theFormField.length; i++) {
    if (theFormField[i].checked) {
      return theFormField[i].value;
    }
  }
}


// ------------------------------------------
// | Checks if any checkboxes are checked.  |
// ------------------------------------------

function isChecked(theFormField) {

	for (i = 0; i < theFormField.length; i++) {

		if (theFormField[i].checked == true) {

			// If any checkbox is checked, return true
			return (true);

		}
			
	}

	// No checkboxes were checked
	return (false);

}