function isSet(value) {
  value += "";
  if (value == 'undefined' || value == 'null') {
    return false;
  }

  return true;
}

function openWindow(url, name, parameters) {
  if (!isSet(name)) {
    name = 'newWindow';
  }

  if (!isSet(parameters)) {
    parameters = '';
  }

  window.open(url, name, parameters).focus();
  return false;
}

function showPanel(parent_id, id){
	parent = document.getElementById(parent_id);
	var i=-1;
	while (++i < parent.childNodes.length){
		child = parent.childNodes[i];
		if (child.id == id){
			child.style.display = 'block';
		}else if (child.nodeName.toLowerCase() == "div"){
			child.style.display = 'none';			
		}
	}
}

function openSummary(id, x, y) {
	node = document.getElementById(id);
	node.style.display = "block";
	node.style.top     = y; 
	node.style.left    = x; 
}

function closeSummary(id) {
	node = document.getElementById(id);
	node.style.display = "none";	
}

function openEntry(id) {
	node = document.getElementById(id);
	node.style.display = "block";
}

function closeEntry(id) {
	node = document.getElementById(id);
	node.style.display = "none";	
}

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

function validateEcard(){
	var errMsg = "";

	errMsg += document.getElementById("toname").value != ""      ? "" : "Please enter the name of the person you are sending to.\n";
	errMsg += document.getElementById("tomail").value != "" && 
		      isEmail(document.getElementById("tomail").value)   ? "" : "Please enter a valid 'to' email address.\n";
	errMsg += document.getElementById("fromname").value != ""    ? "" : "Please enter your name.\n";
	errMsg += document.getElementById("frommail").value != "" &&
		      isEmail(document.getElementById("frommail").value) ? "" : "Please enter a valid address for your email.\n";
	errMsg += document.getElementById("comments").value != ""    ? "" : "Please enter a message.\n";

	if (errMsg != ""){
		alert(errMsg);
		return false;
	}

	return true;
}

function setFormDate(form_name) {
	var  form = document.getElementById(form_name);
	var   day = document.getElementById('date_day');
	var month = document.getElementById('date_month');
	var  year = document.getElementById('date_year');

	var element = document.createElement('input');
	element.type = "hidden";
	element.name = "fieldname-date";
	element.id   = "fieldname-date";
	element.value = ' '+ month.value +((day.value != "") ? ' '+ day.value : '') +' ';

	var replaceNode = document.getElementById('fieldname-date');
	if (isSet(replaceNode)) {
		// there is already a hidden element 'fieldname-date' - most likely due
		// to the client using the browser cache history to return to the search
		// form and try again.  we need to replace the node
		form.replaceChild(element, replaceNode);
	} else {
		form.appendChild(element);
	}

	return true;
}

function validateBrandingRequest() {
	var errors = new Array();

	if (document.getElementById("title").value == "") {
		errors.push('Please enter a Title');
	}

	if (document.getElementById("firstname").value == "") {
		errors.push('Please enter a Firstname');
	}

	if (document.getElementById("surname").value == "") {
		errors.push('Please enter a Surname');
	}

	if (document.getElementById("company").value == "") {
		errors.push('Please enter a Business/Company');
	}

	if (document.getElementById("address1").value == "") {
		errors.push('Please enter the first line of your address');
	}

	if (document.getElementById("town").value == "") {
		errors.push('Please enter a Town');
	}

	if (document.getElementById("postcode").value == "") {
		errors.push('Please enter a Postcode');
	}

	if (document.getElementById("telephone").value == "") {
		errors.push('Please enter a Telephone number');
	}

	if (document.getElementById("email").value == "" || !isEmail(document.getElementById("email").value)) {
		errors.push('Please enter a valid email address');
	}

	if (document.getElementById("description").value == "") {
		errors.push('Please enter a brief Description');
	}

	if (errors.length > 0) {
		alert(errors.join('\n'));
		return false;
	}

	return true;
}
