function popupWindow(url) {
  myWindow = window.open(url,'popupWindow','toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=yes,copyhistory=no,width=410,height=375,screenX=150,screenY=150,top=150,left=150');
  myWindow.focus();
}
//--------------

//********************************************************************
// Vartiable settings and functions indirectly related to validation
//********************************************************************
var message = "";
var Country = "";
//******************************************************
//  4th level  General functions for validating fields
//******************************************************
//Alphanumeric with no odd characters (no spaces)
function isFieldAlphaNum(value) {
var RegExpr1 = /[^'A-Za-z-]/;  // all but these characters are the valid ones
var testResult = value.search(RegExpr1); // result must be -1 to be OK
  if (value.length < 2){
    message = "Your entry is not valid, it's too short";
  return false
  }
  if (testResult == -1){// there were no invalid characters
    return true;
  }else {
     message = "Your entry was not valid" 
     return false;
  }
}
//alpha with ' and -  (no spaces)
function isFieldAlpha(value) {
var RegExpr1 = /[^'A-Za-z\-]/;  // all but these characters are the valid ones
var testResult = value.search(RegExpr1); // result must be -1 to be OK
  if (testResult == -1){// there were no invalid characters
    return true;
  }else {
     message = "Your entry was not valid" 
     return false;
  }
}
//isFieldAlphaPhrases to include spaces
function isFieldAlphaPhrases(value) {
var RegExpr1 = /[^'A-Za-z\- ]/;  // all but these characters are the valid ones
var testResult = value.search(RegExpr1); // result must be -1 to be OK
  if (testResult == -1){// there were no invalid characters
    return true;
  }else {
     message = "Your entry was not valid" 
     return false;
  }
}
//------------
//isFieldAlphaPhrases to include spaces
function isFieldAlphaArea(value) {
var RegExpr1 = /[^'A-Za-z\- \r\n\(\)\:\;\!\#\$\%\&\>\<\+\"\?\/\,\.0-9\=]/;  // all but these characters are the valid ones
var testResult = value.search(RegExpr1); // result must be -1 to be OK
  if (testResult == -1){// there were no invalid characters
    return true;
  }else {
     message = "Your entry was not valid" 
     return false;
  }
}
//------------
// Numeric pure  - just numbers -no currency or phones
function isFieldNumeric(value) {  
var RegExpr1 = /[^0-9]/; // all but these characters are the valid ones
var testResult = value.search(RegExpr1); // check if invalid characters found
  if (testResult == -1){ // there were no invalid characters
    return true;
  }else {
    message = "Your entry was not valid";
	return false
  }	
}
// Phones allows for (,),-, and spaces
function isFieldPhone(value) {
var RegExpr1 = /[^0-9\(\)\-\s]/; // all but these characters are the valid ones
var testResult = value.search(RegExpr1); // check if invalid characters found
  if (testResult == -1){ // there were no invalid characters
    return true;
  }else {
    message = "Your entry was not valid";
	return false
  }	
}

// Mobiles - only allows for spaces and -
function isFieldMobile(value) {
var RegExpr1 = /[^0-9\s-]/; // all but these characters are the valid ones
var testResult = value.search(RegExpr1); // check if invalid characters found
  if (value.length < 12){
    message = "Entry as: XXXX XXX XXX";
  return false
  }
  if (testResult == -1){ // there were no invalid characters
    return true;
  }else {
    message = "Your entry was not valid";
	return false
  }	
}
// For filtering out odd characters
function FieldHasInvalidChars(value) { //mainly for strings like names
//var value = document.form1.testString.value;
var RegExpr1 = /[!~\@\`\#\$\%\^\&\*\(\)\_\+\+\|\\\<\>\,\.\/\:\;\"\{\}\[\]]/;
var testResult = value.search(RegExpr1);
  if (testResult == -1){
    return false; // no odd characters
  }
  message = "Field has odd characters";
  return true;	
}
// complements the main one below
function EmailHasInvalidChars(value) {
//var value = document.form1.testString.value;
var RegExpr1 = /[\~\`\!\#\$\%\^\&\*\(\)\=\|\\\{\[\}\]\:\;\"\'\/\<\>\,\s]/;
var testResult = value.search(RegExpr1);
  if (testResult == -1){
    return false; // no odd characters
  }
  message = "Invalid e-mail";
  return true;	
}

//  /^.+\@(\[?)[a-zA-Z0-9\-\.\_]+\.([a-zA-Z\.]{2,3}|[0-9]{1,3})(\]?)$/
function isFieldEmail(value) {
  var reg1 = /(@.*@)|(\.\.)|(@\.)|(\.@)|(^\.)/; // not valid
  var reg2 = /^.+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z\-\_]{2,3}|[0-9]{1,6})(\]?)$/; // valid
                 
  if (!reg1.test(value) && reg2.test(value)) {
    return true;
  }
  message= "You entered an invalid e-mail!";
  return false;
}

//********************************************************************
// 3rd level functions - Templates for specific fields
//********************************************************************
function checkText(value){ //pure strings like names
  if (value == ""){
    message = "Your entry is not valid, it's empty";
  return false
  }
 if (isFieldAlpha(value) == false){
	 return false;
 }
 if (FieldHasInvalidChars(value) == true){
   return false;
  }
  return true;
}

function checkNumber(value){  //pure numbers - no currency or phones
  if (value == ""){
    message = "Your entry is not valid, it's empty";
  return false
  }
 if (isFieldNumeric(value) == false) {
	 return false;
 }
 if (FieldHasInvalidChars(value) == true){
  return false;
 } 

 return true;
}
//********************************************************************
// 2ndd level functions for specific form fields
//********************************************************************
function checkName(value){ //pure strings like names
  if (value == ""){
    message = "Your entry is not valid, it's empty";
  return false
  }
  if (value.length < 2){
    message = "Your entry is not valid, it's too short";
  return false
  }
 if (isFieldAlpha(value) == false){
	 return false;
 }
 if (FieldHasInvalidChars(value) == true){
   return false;
  }
  return true;
}
// to check text with spaces
function checkPhrase(value){ //pure strings like phrases
  if (value == ""){
    message = "Your entry is not valid, it's empty";
  return false
  }
  if (value.length < 2){
    message = "Your entry is not valid, it's too short";
  return false
  }
 if (isFieldAlphaPhrases(value) == false){
	 return false;
 }
 if (FieldHasInvalidChars(value) == true){
   return false;
  }
  return true;
}
// -------------
// to check text area with spaces and carriege returns
function checkTextArea(value){ //pure strings like phrases
  if (value == ""){
    message = "Your entry is not valid, it's empty";
  return false
  }
  if (value.length < 2){
    message = "Your entry is not valid, it's too short";
  return false
  }
 if (isFieldAlphaArea(value) == false){
	 return false;
 }

  return true;
}

// ------------------
function checkEmail(value){
  if (value == ""){
    message = "Your entry is not valid, it's empty";
  return false
  }
 if (isFieldEmail(value) == false){
   return false;
 } 
 if (EmailHasInvalidChars(value) == true){
  return false;
 }  
 return true;
}

function checkPhone(value){
  if (value == ""){
    message = "Your entry is not valid, it's empty";
  return false
  }
  if (value.length < 6){
    message = "Area code + number must be at least 10 digits";
  return false
  }
 if (isFieldPhone(value) == false){
   return false;
 } 
 return true;
}

function checkAreaCode(value){  
  if (value.length < 2){
    message = "Areacode must between 2 and 4 digits";
    return false
  }
  if (isFieldPhone(value) == false){
   message = "Your entry is not valid";
   return false;
  } 
 return true;
}


function checkZipCode(value){
  if (value == ""){
    message = "Your entry is not valid, it's empty";
  return false
  }
 if(Country == "Australia"){
  if (value.length != 4){
    message = "Your entry is not valid";
    return false
  }
  if(isFieldNumeric(value) == false){
    message = "Your entry is not valid";
	return false;
  }
 }
 return true;
}


//*************************************************************************
// 1st level function for calling specific form 1 field validation functions
//*************************************************************************
function validateForm1() {
//alert("this is validateForm1");
//alert("firszt name is: " + document.form1.FirstName.value);
Country = document.form1.Country.value;
//alert("this is validateForm3");
//alert("Country is: " + Country);
var emptyFields = "";
//alert("FirstName is: " + document.form1.FirstName.value);
 if (!checkName(document.form1.FirstName.value)){
  emptyFields += "\n First Name --> " + message;
  //emptyFields=emptyFields.fontcolor(red);
 }
 
  if (!checkName(document.form1.LastName.value)){
  emptyFields += "\n Last Name --> " + message;
 } 
/* */
   if (!checkPhrase(document.form1.City.value)){
  emptyFields += "\n City --> " + message;
 }  
    if (!checkPhrase(document.form1.State.value)){
  emptyFields += "\n State/Province --> " + message;
 }  
 
 //To validate e-mails
 if (!checkEmail(document.form1.EMail.value)){
  emptyFields += "\n E-mail --> " + message
 }

//Postcode
 if (!checkZipCode(document.form1.Postcode.value)){
  emptyFields += "\n Postal code --> " + message
  }
// checkPhone(  
 /*if (!checkPhone(document.form1.Phone.value)){
  emptyFields += "\n Phone --> " + message
  } 
  /*
 if (!checkTextArea(document.form1.What_would_you_like_to_see_in_this_website.value)){
 //alert("message is: " + message);
  emptyFields += "\n What would you like to see in this website --> " + message
 }   
 /*
  if (!checkTextArea(document.form1.How_did_you_find_this_website.value)){
 //alert("message is: " + message);
  emptyFields += "\n How_did_you_find_this_website --> " + message
 }   */
//-----------
 if (emptyFields != "") {
   emptyFields = "Please correct the following fields: \n" 
   +             "---------------------------------------------------\n" 
   + emptyFields;
   alert(emptyFields);
   return false;
 }
 return true;
 
}

//*************************************************************************
// 1st level function for calling specific form 2 field validation functions
//*************************************************************************
function validateForm2() {
//alert("this is validateform2. First name is: " + document.form2.FirstName.value);
//alert("firszt name is: " + document.form2.FirstName.value);
//Country = document.form2.Country.value;
//alert("this is validateForm3");
//alert("Country is: " + Country);
var emptyFields = "";
//alert("FirstName is: " + document.form2.FirstName.value);
 if (!checkName(document.form2.FirstName.value)){
  emptyFields += "\n First Name --> " + message;
  //emptyFields=emptyFields.fontcolor(red);
 }
 
  if (!checkName(document.form2.LastName.value)){
  emptyFields += "\n Last Name --> " + message;
 } 
/* 
   if (!checkPhrase(document.form2.City.value)){
  emptyFields += "\n City --> " + message;
 }  
    if (!checkPhrase(document.form2.State.value)){
  emptyFields += "\n State/Province --> " + message;
 } 
 //Postcode
 if (!checkZipCode(document.form2.Postcode.value)){
  emptyFields += "\n Postal code --> " + message
  } 
 */
 //To validate e-mails
 if (!checkEmail(document.form2.EMail.value)){
  emptyFields += "\n E-mail --> " + message
 }


// checkPhone(  
 if (!checkPhone(document.form2.Phone.value)){
  emptyFields += "\n Phone --> " + message
  } 
  /*
 if (!checkTextArea(document.form2.What_would_you_like_to_see_in_this_website.value)){
 //alert("message is: " + message);
  emptyFields += "\n What would you like to see in this website --> " + message
 }   
 
  if (!checkTextArea(document.form2.How_did_you_find_this_website.value)){
 //alert("message is: " + message);
  emptyFields += "\n How_did_you_find_this_website --> " + message
 }   */
//-----------
 if (emptyFields != "") {
   emptyFields = "Please correct the following fields: \n" 
   +             "---------------------------------------------------\n" 
   + emptyFields;
   alert(emptyFields);
   return false;
 }
 return true;
 
}