/* global variables
<meta name="CONTENT_OWNER" content="Justin Turner">
<meta name="PROGRAMMER" content="Matthew Kirrane, Dianne French">
<meta name="DOCUMENTID" content="RNAP-6EFBU5">
<meta name="LAST_REVISION" content="28/07/2004">
*/

var form_bg_color = "white";



// ----------------  draw form fields  -------------------------------

/*
	write a TR with title and a text form field
	eg. document.write(tr(fname,true,'40',nameCheck(this))); 
	OPTONAL 3rd arg is width ,OPTONAL 4th arg is validate
*/		
function trTextField(argTag,argRequired) 
								
{
  var fieldWidth = (arguments[2] ? arguments[2] : '40');	//user can override the width
  var validate   = (arguments[3] ? arguments[3] : '' ); 	//user can force field validation
  return('<tr>' +  td(field[argTag],argRequired) + ' <td><input type="text" name="' + argTag + '" size="' + fieldWidth + '" onchange="' + validate + '"></td></tr>');
}

/*
	write a TR without any form fields but with 2 text elements incl specific class and alignment statements:
	<tr><td class="normal" align="right">Text element1</td><td class="normal" align="left">text element 2</td></tr>
*/	
function trInfoField(argInfo1,format1,align1,argInfo2,format2,align2) 
{
	var align1 = (align1 == '') ? 'right' : align1;
	var align2 = (align2 == '') ? 'left'  : align2;
  return('<tr><td class="' + format1 +'" align="' + align1 +'">' + argInfo1 + ' </td><td class="' + format2 +'" align="' + align2 +'">' + argInfo2 + ' </td></tr>');
}

/*
	Create one TD cell
*/
function td(argPhrase,argRequired) // EG. document.write(td(field["fname"],true)
{
  var direction = (arguments[2] ? arguments[2] : 'right');	//user can override the alignment direction EG. (td(field["required"],true,left);
  return ('<td class="normal" align=' + direction + ' valign="top">' + argPhrase + ' <span class="' +  (argRequired ? 'red' : form_bg_color) + '">* </span></td>');
}

/*
	Create a simple TR row with TD cells
*/
function text_tr(argPhrase1,argPhrase2) 
{
	// NOTE: this function needs to be extended to allow for 4 arguments to be passed: text and its alignment
	// eg. text_tr('text1', 'left', 'text2', 'right') 
  return ('<tr><td class="normal" align="right">' + argPhrase1 + '</td><td class="normal" align="left">' + argPhrase2 + '</td></tr>');
}


// ---------------------------- FORM VALIDATION -----------------------------------------------

function char_check(element)
{
	var maxlength = new Array();
	maxlength['fname'] 	= '50';
	maxlength['lname'] 	= '30';
	maxlength['title']	= '15';
	maxlength['job'] 	= '75';
	maxlength['company']= '100';
	maxlength['addr1'] 	= '60';
	maxlength['addr2'] 	= '60';
	maxlength['addr3'] 	= '60';
	maxlength['city'] 	= '50';
	maxlength['county']	= '30';
	maxlength['Email']	= '50';
	maxlength['email']	= '50';
	maxlength['tel']	= '40';
	maxlength['no2_tel']= '40';
	maxlength['fax']	= '40';
	maxlength['external_antennas']	= '5';
		
	var chars = element.value;
	var max_chars = maxlength[element.name];
	if(chars.length > max_chars)
	{
		alert_message('char_check');
		element.blur();
		element.value = '';
		element.select();
	}
}

function text_check(element)
/*This function was last edited by Matthew Kirrane as part of GSAS-5V9MXM.  The following change was made:
If the string, "element" contains illegal characters, we assign element to a new variable, "text" and loop through this.  We assign each character in "text" to a new variable called "buffer".  Illegal characters are substituted for a space.  Finally, we equate "element" to "buffer".*/
{
	var invalidChar = /[^a-z (+)\d,-\\$\\£\'áâãäåæçèêëìíîïðñòóôõö÷øùúûüýþÿßªºÐÑÞ]/i;   // textarea validation:  filters out carridge returns and TAB 
	if(element.value == "")
	{
		return true;
	}
	else if (invalidChar.test(element.value) == true)
	{
		alert_message('textarea_check');
		//alert(element.value);
		
		var text = element.value;
		var buffer = '';
		for(i = 0; i < text.length; i++)
		{
			if(invalidChar.test(text.charAt(i)) == false)
				buffer += text.charAt(i);
			else
				buffer += ' ';
		}
		element.value = buffer;
		//element.blur();
		//element.value = '';
		//element.focus();
	}
	
	var chars = element.value;
	var max_chars = (arguments[1] ? arguments[1] : '250');	//user can override the number of characters allowed for textareas
	
	if(chars.length > max_chars)
	{
		alert_message('char_check');
		element.blur();
		element.value = '';
		element.focus();
	}
}
function text_force(element)
// a copy of text_check function, but remove the alerts to make it passive
{
	var invalidChar = /[^a-z (+)\d,-\\$\\£\'áâãäåæçèêëìíîïðñòóôõö÷øùúûüýþÿßªºÐÑÞ]/i;   // textarea validation:  filters out carridge returns and TAB 
	if(element.value == "")
	{
		return true;
	}
	else if (invalidChar.test(element.value) == true)
	{
		var text = element.value;
		var buffer = '';
		for(i = 0; i < text.length; i++)
		{
			if(invalidChar.test(text.charAt(i)) == false)
				buffer += text.charAt(i);
			else
				buffer += ' ';
		}
		element.value = buffer;
	}
	
	var chars = element.value;
	var max_chars = (arguments[1] ? arguments[1] : '250');	//user can override the number of characters allowed for textareas
	
	if(chars.length > max_chars)
	{
		element.blur();
		element.value = substring(element.value,max_chars);
		element.focus();
	}
	
	return element.value;
}


function postcode_check(element)
{
	if(element.value == "")
	{
		return true;
	}
	else if(lang == "es")
	{
		var invalidChar = /[^\d]/; // digits 0-9 are allowed
		if (invalidChar.test(element.value) == true || (element.value.length != 5 ))
		{
			alert("Por favor, introduzca cinco dígitos, p.e.: XXXXX");
			element.blur();
			element.value = '';
			element.select();
		}
	}
	else
	{
	element.value = element.value.toUpperCase();
	}
}

function number_check(element)
{
	var invalidChar = /[^ (+)\d,-]/; //allowed characters: spaces, parentheses (),  symbols: + - , and digits 0-9 are allowed
	if(element.value == "")
	{
		return true;
	}
	else if (invalidChar.test(element.value) == true || (element.value.length < 8 ))
	{
		alert_message('number_check');
		element.blur();
		element.value = '';
		element.select();
	}
	else
	{
		char_check(element);
	}
}

function num_check(element) {
	var invalidChar = /[^ (+)\d,-]/; //allowed characters: spaces, parentheses (),  symbols: + - , and digits 0-9 are allowed
	if(element.value == "") { return true; }
	else if (invalidChar.test(element.value) == true) {
		alert_message('num_check');
		element.blur();
		element.value = '';
		element.select();
	} else 	{
		char_check(element);
	}
}


function name_check(element)
{
	var invalidChar = /[^a-z '',-áâãäåæçèêëìíîïðñòóôõö÷øùúûüýþÿßªºÐÑÞ]/i;  //allowed characers: all letters a-z or A-Z and ', and -
	
	char_check(element)
	if (invalidChar.test(element.value) == true)
	{
		alert_message('name_check');
		element.blur();
		element.value = '';
		element.select();
	}
	else
	{
		char_check(element);
	}
}
 
function email_check(element) 
{
	var validCharFormat = /\w+@\w+.\w\w+/;  
	/*
	allowed characters/format: 
	1 or more word characters followed by 
	@ symbol followed by 
	1 or more word characters followed 
	by dot (.) followed by
	2 or more word characters
	*/
	if(element.value == "")
	{
		return true;
	}
	else if (validCharFormat.test(element.value) == false)
	{
		alert_message('email_check');
		element.blur();
		element.value = '';
		element.select();
	}
	else
	{
		char_check(element);
	}
}


function verify_check(element, element2)  // compares values of 2 form fields
{
	if(element.value != element2.value)
	{
		alert_message('verify_check');
		element.blur();
		element.value = '';
		element.select();
	}
	else
	{
		return true;
	}
}

function validateSerialNum(element) 
{
	var sn = element.value;
	var invalidChar = /[^a-z\d]/i;  //allowed characers: all letters a-z or A-Z and numbers
	//alert(invalidChar.test(element.value));
	if(element.value == "")
	{
		return true;
	}
	else if ((sn.length < 9) || (sn.length > 13) || (invalidChar.test(element.value))) 
	{
		alert_message('serial_check');
		element.blur();
		element.value = '';
		element.select();
	}
}

function support_id_check(element)
{
	var support_id = element.value;
	var starts_with = support_id.charAt(0);
	var invalidChar = /[^\d]/i;  //allowed characers: digits only!
	if ((support_id.length != 9) || (starts_with != 2) || (invalidChar.test(element.value))) 
	{
		alert_message('support_id_check');
		element.blur();
		element.value = '';
		element.select();
	}
}

function case_id_check(element)
{
	var support_id = element.value;
	var starts_with = support_id.charAt(0);
	var invalidChar = /[^\d]/i;  //allowed characers: digits only!
	if ((support_id.length != 7) || (starts_with != 1) || (invalidChar.test(element.value)))
	{
		alert_message('case_id_check');
		element.blur();
		element.value = '';
		element.select();
	}
}

function validate_po(element){
	if (element.value.length < 2) {
		alert(field["po_error"]);
		element.blur();
		element.value = '';
	}
}

function validate3cNum(){
}
function validate_eSupport_login(){
}


//-----------------------------  Alert messages  ------------------------

function alert_message(source)
{
	var max_message = new Array();
	max_message['en'] = "You have entered more than the maximum number of characters allowed for this form field!";
	max_message['de'] = "Sie haben mehr als die zulässige Anzahl an Zeichen für dieses Feld eingegeben.";
	max_message['fr'] = "Nbr. maximum de caractères dépassé pour ce formulaire";
	max_message['it'] = "Il numero di caratteri inseriti è superiore a quello consentito per questo campo!";
	max_message['es'] = "Ud ha introducido más caracteres de lospermitidos en este campo";
	max_message['nl'] = "U heeft meer tekens ingevoerd dan het maximum toegestane aantal voor dit veld!";
	
	var text_message = new Array(); // textarea:  tab/ returns filtered
	text_message['en'] = "Please don't use any text formatting elements, like TAB or carridge returns. Thank you!";
	text_message['de'] = "Bitte verwenden Sie keine Elemente zur Textformatierung wie Tabs oder Zeilenumbrüche. Vielen Dank!";
	text_message['fr'] = "Ne pas utiliser de fonctions de mise en page (par ex. tabulations, retour ..... etc ) Merci !";
	text_message['it'] = "Per favore non utilizzare nessun elemento di formattazione, come TAB o Return. Grazie!";
	text_message['es'] = "Por favor no use nigún elemento de texto como tabuladores o retorno de carro  (note to editors: used for texarea input fileds in forms)";
	text_message['nl'] = "Gebruik a.u.b. geen opmaakelementen zoals TAB's or returns. Dank u!";
	
	var num_message = new Array();
	num_message['en'] = "This is not a valid number or number format.	\r\r Please use the following format	\r\r (+xx) xxxx xxxxxxxx.\r\r";
	num_message['de'] = "Dies ist keine gültige Nummer oder ein ungültiges Nummernformat. \r\r Bitte verwenden Sie das folgende Format: \r\r (+xx) xxxx xxxxxxxx.\r\r ";
	num_message['fr'] = "Ce numéro ou le format de ce numéro n'est pas valide. 	\r\r SVP utiliser le format suivant 	\r\r (+xx) xxxx xxxxxxxx.\r\r";
	num_message['it'] = "Questo numero o formato non è valido. 	\r\r Per favore usate il seguente formato 	\r\r (+xx) xxxx xxxxxxxx.\r\r";
	num_message['es'] = "Este no es formato válido. \r\r Por favor use el siguiente formato: \r\r (+xx) xxxx xxxxxxxx.\r\r";
	num_message['nl'] = "Dit is geen geldig nummer of een incorrect formaat. \r\r Gebruik a.u.b. het volgende formaat \r\r (+xx) xxxx xxxxxxxx.\r\r";

	var num2_message = new Array();
	num_message['en'] = "This is not a valid number or number format.";
	num_message['de'] = "Dies ist keine gültige Nummer oder ein ungültiges Nummernformat.";
	num_message['fr'] = "Ce numéro ou le format de ce numéro n'est pas valide.";
	num_message['it'] = "Questo numero o formato non è valido.";
	num_message['es'] = "Este no es formato válido.";
	num_message['nl'] = "Dit is geen geldig nummer of een incorrect formaat.";

	var name_message = new Array();
	name_message['en'] = "This field contains invalid characters.	\n Please do not use symbols/numbers or punctuation marks.";
	name_message['de'] = "Dieses Feld enthält ungültige Zeichen. \n Bitte verwenden Sie keine Symbole, Nummern oder Interpunktionszeichen.";
	name_message['fr'] = "Ce champ contient des caractères non valides. \n SVP ne pas utiliser de symboles, de nombres ou de signes de ponctuations";
	name_message['it'] = "Questo campo contiene caratteri non validi.\n Per favore non usate simboli, numeri o punteggiatura.";
	name_message['es'] = "Este campo contiene carácteres no válidos.\n Por favor no utilice símbolos, números ni signos de puntuación.";
	name_message['nl'] = "Dit veld bevat ongeldige characters. 	\n Gebruik a.u.b. geen symbolen, nummers of leestekens.";
	
	var email_message = new Array();
	email_message['en'] = "This is not a valid email format.	\n	\r Please use the following format: \r\r joe@bloggs.com	\n";
	email_message['de'] = "Dies ist kein gültiges E-Mail-Format.	\n	\r Bitte verwenden Sie das folgende Format: \r\r joe@bloggs.com	\n";
	email_message['fr'] = "Le format de cette adresse email n'est pas valide.	\n	\r SVP utiliser le format suivant :	\r\r joe@bloggs.com	\n";
	email_message['it'] = "Questo indirizzo email non è valido. \n	\r Per favore usate usate il seguente formato: 	\r\r joe@bloggs.com	\n";
	email_message['es'] = "Este no es un formato válido de email.	\n 	\r Por favor, utilice el siguiente formato:	\r\r  joe@bloggs.com	\n";
	email_message['nl'] = "Dit is geen geldig email formaat. 	\n	\r Gebruik a.u.b. het volgende formaat 	\r\r  joe@bloggs.com	\n";
	
	var verify_message = new Array();
	verify_message['en'] = "Please check and re-type your email address";
	verify_message['de'] = "Ihre E-Mail-Adresse kann nicht bestätigt werden. Bitte überprüfen Sie Ihre Eingabe.";
	verify_message['fr'] = "Adresse email incorrecte. Veuillez vérifier de nouveau";
	verify_message['it'] = "L'indirizzo email non corrisponde. Per favore controllate e  reinserite l'indirizzo corretto";
	verify_message['es'] = "Su  dirección de correo electrónico no es válida. Por favor, revise y escriba de nuevo su dirección de correo electrónico";
	verify_message['nl'] = "Uw email adres komt niet overeen. Controleer het adres en voer het opnieuw in.";
	
	var serial_message = new Array();
	serial_message['en'] = "This is not a valid serial number.";
	serial_message['de'] = "Dies ist keine gültige Serien-Nummer.";
	serial_message['fr'] = "Ce numéro de série n'est pas valide.";
	serial_message['it'] = "Questo numero seriale non è valido.";
	serial_message['es'] = "Este no es un número de serie válido.";
	serial_message['nl'] = "Dit is geen geldig serienummer.";
	
	var support_id_message = new Array();
	support_id_message['en'] = "This is not a valid support ID number.";
	support_id_message['de'] = "Diese Support-ID ist nicht gültig.";
	support_id_message['fr'] = "support ID non valide";
	support_id_message['it'] = "Questo non è un ID di supporto valido";
	support_id_message['es'] = "Este no es un ID válido";
	support_id_message['nl'] = "Dit is geen geldige support ID";
	
	var case_id_message = new Array();
	case_id_message['en'] = "This is not a valid case ID number.";
	case_id_message['de'] = "Diese Case-ID ist nicht gültig.";
	case_id_message['fr'] = "case ID non valide";
	case_id_message['it'] = "Questo non è un ID di pratica valido";
	case_id_message['es'] = "Este no es un ID válido";
	case_id_message['nl'] = "Dit is geen geldige case ID";
	
	var perm_email_message = new Array();
	perm_email_message['en'] = "Please specify if we can contact you by email.";
	perm_email_message['de'] = "Please specify if we can contact you by email.";
	perm_email_message['fr'] = "Merci de nous indiquer si nous pouvons vous contacter par email.";
	perm_email_message['it'] = "Per favore indichi se possiamo contattarla via email.";
	perm_email_message['es'] = "Por favor, indique si podemos contactar con Ud.  por e-mail.";
	perm_email_message['nl'] = "Please specify if we can contact you by email.";
	
	var perm_call_message = new Array();
	perm_call_message['en'] = "Please specify if we can contact you by phone.";
	perm_call_message['de'] = "Please specify if we can contact you by phone.";
	perm_call_message['fr'] = "Merci de nous indiquer si nous pouvons vous contacter par téléphone.";
	perm_call_message['it'] = "Per favore indichi se possiamo contattarla telefonicamente.";
	perm_call_message['es'] = "Por favor, especifique si podemos contactar con usted por teléfono.";
	perm_call_message['nl'] = "Please specify if we can contact you by phone.";
	
	var perm_fax_message = new Array();
	perm_fax_message['en'] = "Please specify if we can contact you by fax.";
	perm_fax_message['de'] = "Please specify if we can contact you by fax.";
	perm_fax_message['fr'] = "Merci de nous indiquer si nous pouvons vous contacter par fax.";
	perm_fax_message['it'] = "Per favore indichi se possiamo contattarla via fax.";
	perm_fax_message['es'] = "Por favor, especifique si podemos contactar con usted por fax.";
	perm_fax_message['nl'] = "Please specify if we can contact you by fax.";
	
	var perm_mail_message = new Array();
	perm_mail_message['en'] = "Please specify if we can contact you by mail.";
	perm_mail_message['de'] = "Please specify if we can contact you by mail.";
	perm_mail_message['fr'] = "Merci de nous indiquer si nous pouvons vous contacter par courrier.";
	perm_mail_message['it'] = "Per favore indichi se possiamo contattarla con una lettera.";
	perm_mail_message['es'] = "Por favor, especifique si podemos contactar con usted por  correo ordinario.";
	perm_mail_message['nl'] = "Please specify if we can contact you by mail.";
	
	var perm_simple_message = new Array();
	perm_simple_message['en'] = "Please specify if you would like to be kept up-to-date";
	perm_simple_message['de'] = "Please specify if you would like to be kept up-to-date";
	perm_simple_message['fr'] = "Merci de nous indiquer si vous souhaitez reçevoir des mises à jour régulières";
	perm_simple_message['it'] = "Per favore indichi se gradisce essere tenuto al corrente delle novità";
	perm_simple_message['es'] = "Por favor, especifique si quiere estar informado de las últimas actualizaciones.";
	perm_simple_message['nl'] = "Please specify if you would like to be kept up-to-date";
	
	var supported_languages = "en,de,fr,it,es,nl";
	if(supported_languages.search(lang) == -1) lang = "en"; //default to english if not supported
	
	if(source == 'char_check') 		alert(max_message[lang]);
	if(source == 'textarea_check') 	alert(text_message[lang]);
	if(source == 'number_check') 	alert(num_message[lang]);
	if(source == 'num_check') 	alert(num2_message[lang]);
	if(source == 'name_check') 		alert(name_message[lang]);
	if(source == 'email_check') 	alert(email_message[lang]);
	if(source == 'verify_check') 	alert(verify_message[lang]);
	if(source == 'serial_check') 	alert(serial_message[lang]);
	if(source == 'support_id_check')alert(support_id_message[lang]);
	if(source == 'case_id_check') 	alert(case_id_message[lang]);
	if(source == 'perm_email_check')alert(perm_email_message[lang]);
	if(source == 'perm_call_check') alert(perm_call_message[lang]);
	if(source == 'perm_fax_check') 	alert(perm_fax_message[lang]);
	if(source == 'perm_mail_check') alert(perm_mail_message[lang]);
	if(source == 'perm_simple_check') alert(perm_simple_message[lang]);
}




// ---------------------------------- Form Test:  print all fields   -------------
function fieldNames()
{
	var newWindow = window.open("","Form_Tester");
	newWindow.document.open();
	newWindow.document.write("<h3>URL: "+ location.href + " &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Number of Form Fields:  " + document.form1.elements.length +"</h3>");
	newWindow.document.write('<table width="100%" border="1">');
	newWindow.document.write("<tr><td>No:</td><td><strong>Name:</strong></td><td><strong>Type:</strong></td><td><strong>Value:</strong></td><td><strong>No of elements?</strong></td></tr>");
	for(var i=0 ; i < document.form1.elements.length; i++)
	{
		newWindow.document.writeln("<tr>\
									<td>" + i + "</td>\
									<td>" + document.form1.elements[i].name + "</td>\
									<td><b>" + document.form1.elements[i].type	+ "</b></td>\
									<td>" + document.form1.elements[i].value + "</td>\
									<td>" + document.form1.elements[i].length + "</td></tr>");
	}
	newWindow.document.write('</table> <br><br><br>');
	
	// check for duplicate file names!
	newWindow.document.write('<h3>Fieldname ERROR: <font color="#FF0000">duplicate name</font></h3>');
	newWindow.document.write('<table width="100%" border="1">');
	newWindow.document.write('<tr><td>No.</td><td>Name:</td><td>No.</td><td>Name:</td></tr>');
	var duplicate = false;
	for(var i=0 ; i < document.form1.elements.length; i++)
	{
		if((document.form1.elements[i].type != "radio") && (document.form1.elements[i].type != "checkbox"))
		{
			var fieldname1 =  document.form1.elements[i].name;
			for(var n=0 ; n < document.form1.elements.length; n++)
			{
				if((document.form1.elements[n].type != "radio") && (document.form1.elements[n].type != "checkbox")) 
				{
					var fieldname2 = document.form1.elements[n].name;
					if((fieldname1 == fieldname2) && (n != i) &&  (n > i))
					{
						newWindow.document.write('<tr><td>'+i+'</td><td>'+fieldname1+'</td><td>'+n+'</td><td>'+fieldname2+'</td></tr>');
						duplicate = true;
					}
				}
			}
		}
	}
	if(!duplicate)
	{
		newWindow.document.write('<tr><td colspan="4"><h2>No duplicates found</h2></td></tr>');
	}
	newWindow.document.write('</table> <br><br><br>');
	
	
	
	// new table	print the value of drop boxes		
	newWindow.document.write("<h3>DROP BOXES</h3>");
	for(var i=0 ; i < document.form1.elements.length; i++) // print drop box contents
	{
		if(document.form1.elements[i].type == "select-one")
		{
			var dropbox = document.form1.elements[i];
			if((dropbox.options.length > 1) && (dropbox.options.length < 40))
			{
				newWindow.document.writeln('<h3>Selection Box: <font color="#ff0000">' + dropbox.name + '</font></h3>');
				newWindow.document.writeln('<table width="100%" border="1">');
				newWindow.document.writeln("<tr>\
											<td><strong>No</strong></td>\
											<td><strong>Options:</strong></td></tr>");
											
				for(var n=0 ; n < dropbox.options.length; n++) 
				{
					newWindow.document.writeln("<tr>\
												<td width='10'>" + n + "</td>\
												<td colspan='2'>" + dropbox.options[n].value + "&nbsp;</td</tr>");
				}
			}
		newWindow.document.write('</table><br><br>'); // end table
		}
	}
	
}

// ----------------   Utility functions -------------------------------------


//Enables or Disables a requird object and shows/hides its required star.
//Call from the form tag with the "onMouseOver" event.
//takes "Current value of compare object" "Value to compare to" "Star Object's Name in 'single quote'" "on color" "off color" "object to Enable/Disable"
//eg. enable_required_object(form.f1.value,'OTHER','o1_star','red','white',form.o1);

//5th Nov 03 - Matt Kirrane - "selected" parameter added to function to allow radio and checkbox elements to be passed.  If an array element IS passed, parameters "value" and "compare_value" can be anything as long as they're not identical.  E.g. "0" and "1" respectively.

function enable_required_object(value,compare_value,change_color_object_name,on_color,off_color,disable_object,selected)
{
	//Check if our two values match or if passing an array element for "selected", that it is TRUE.
	//If the expression resolves to TRUE, enable required form object
	if(value==compare_value || selected)
	{							//current value matches the compare value
		changeText_color(on_color,change_color_object_name);	//change color of object 1 to show it
		disable_object.disabled=false;							//enable object 2
	}
	//If the expression resolves to FALSE, disable required form object
	else
	{
		changeText_color(off_color,change_color_object_name);
		disable_object.disabled=true;
		
		disable_object.value="";				// reset the disabled objects value 
	}
}

function create_dayList()
{
  ret  = '';
  ret += '<option value=""></option>\n';
  for(i=1;i<=31;i++)
  	ret += '<option value="' + ((i<10) ? '0' : '') + i + '">' + ((i<10) ? '0' : '') + i + '</option>\n';
  return ret;
}


function create_monthList()
{
  ret  = '';
  ret += '<option value=""></option>\n';
  for(i=1;i<=12;i++)
  	ret += '<option value="' + months[i] + '">'+ months[i] + '</option>\n';
  return ret;
}


function create_yearList()
{
  ret  = '';
  ret += '<option value=""></option>\n';
  for(i=1998;i<=2006;i++)
    ret += '<option value="' + i + '">' + i + '</option>\n';
  return ret;
}


function enable_disable (element,test,selectbox)
{
	if(element.value == test )
	{
		selectbox.disabled = false;
		// vertical.options.selectedIndex = 0;
	}
	else
	{
		selectbox.disabled = true;
		selectbox.options.selectedIndex = 0;
	}
}


//------------------------------Permission functions  ----------------------------------------------------

//---- set Siebel values for all fields

var perm_ok = "17A01";
var perm_no = "17A02";
var perm_empty = "17A06";
var detail_perm = false; 	/* required to  test which perm-function is being called */
var simple_perm = false;	/* required to  test which perm-function is being called */

/*
perm_detail()
is a self contained function printing all required fields for the detailed permissions section
>>>>> 15 July 2004 > perm_detail() is now exactly the same as perm_simple() = Only one set of permissions now exist
*/

function perm_detail()
{
	if (opt == "out") // opt-out countries only:  value is set in the page template (UK only)  e.g. var opt = "out";
	{
		document.writeln('\
			<tr>\
				<td colspan="2">\
				<p>'+ field["legal"] + ' ' + field["perm_out"] + ' <input type="checkbox" name="dpa_out" onclick="evaluate_dpa(\'UK_FR\'); blur(this);" value="opt-out">' + field["perm_out_partners"] + ' <input type="checkbox" name="dpa_out_partners" onclick="evaluate_dpa(\'UK_FR\'); blur(this);" value="opt-out-3rdparty">.</p>\
				<p>&nbsp;</p>\
				</td>\
			</tr>');
	}
	else  			  // opt-in ALL other countries
	{
		simple_perm = true;
		document.writeln('\
			<tr>\
				<td colspan="2">\
				<p>'+ field["perm_intro"] +' <span class="red">*</span></p>\
				<p>'+ field["perm_optin"] +' <input type="radio" name="dpa" onclick="evaluate_dpa(\'in\'); blur(this);" value="opt-in" style="height:8px; vertical-align: 3px;">\
				<br>'+ field["perm_optout"] +' <input type="radio" name="dpa" onclick="evaluate_dpa(\'out\'); blur(this);" value="opt-out" style="height:8px; vertical-align: 3px;"></p>\
				<p>'+ field["legal"] +'</p>\
				<p>&nbsp;</p>\
				</td>\
			</tr>');
	}
	
	// alert("set hidden fields and pre-set to the perm "no-response" value");
	document.writeln('\
				<input type="hidden" name="perm_email" value="' + perm_empty + '">\
				<input type="hidden" name="perm_call" value="' + perm_empty + '">\
				<input type="hidden" name="perm_fax" value="' + perm_empty + '">\
				<input type="hidden" name="perm_mail" value="' + perm_empty + '">\
				<input type="hidden" name="perm_3rdparty" value="' + perm_empty + '">\
				');	
}

/*
perm_simple()
will print to screen either opt-in or opt-out fields. Depends on the page-template variable
required functions:
	- evaluate_dpa(dpa)
	- set_values(perm)
	
*/

function perm_simple()
{
	if (opt == "out") // opt-out countries only:  value is set in the page template (UK only)  e.g. var opt = "out";
	{
		document.writeln('\
			<tr>\
				<td colspan="2">\
				<p>'+ field["legal"] + ' ' + field["perm_out"] + ' <input type="checkbox" name="dpa_out" onclick="evaluate_dpa(\'UK_FR\')" value="opt-out">' + field["perm_out_partners"] + ' <input type="checkbox" name="dpa_out_partners" onclick="evaluate_dpa(\'UK_FR\')" value="opt-out-3rdparty">.</p>\
				<p>&nbsp;</p>\
				</td>\
			</tr>');
	}
	else  			  // opt-in ALL other countries
	{
		simple_perm = true;
		document.writeln('\
			<tr>\
				<td colspan="2">\
				<p>'+ field["perm_intro"] +' <span class="red">*</span></p>\
				<p>'+ field["perm_optin"] +' <input type="radio" name="dpa" onclick="evaluate_dpa(\'in\')" value="opt-in">\
				<br>'+ field["perm_optout"] +' <input type="radio" name="dpa" onclick="evaluate_dpa(\'out\')" value="opt-out"></p>\
				<p>'+ field["legal"] +'</p>\
				<p>&nbsp;</p>\
				</td>\
			</tr>');
	}
	
	// alert("set hidden fields and pre-set to the perm "no-response" value");
	document.writeln('\
				<input type="hidden" name="perm_email" value="' + perm_empty + '">\
				<input type="hidden" name="perm_call" value="' + perm_empty + '">\
				<input type="hidden" name="perm_fax" value="' + perm_empty + '">\
				<input type="hidden" name="perm_mail" value="' + perm_empty + '">\
				<input type="hidden" name="perm_3rdparty" value="' + perm_empty + '">\
				');	
}



function evaluate_dpa(dpa)	/*evaluate_dpa(dpa) used by: perm_simple()*/
{
	if(dpa == "in")
	{
		set_values("ok");
	}
	else if(dpa == "out")
	{
		set_values("no");
	}
	else // --> if(dpa == "UK_FR")
	{
		if(document.form1.dpa_out_partners.checked) // If statement added by Matthew Kirrane on 23/06/2004 to deal with 3rd Party Permissions question.
		{
			document.form1.perm_3rdparty.value = perm_no;
		}
		else
		{
			document.form1.perm_3rdparty.value = perm_empty;
		}
		
		if(document.form1.dpa_out.checked)
		{
			set_values("no");
		}
		else
		{
			set_values("reset");
		}
	}
}

function set_values(perm)  /*set_values(perm) used by: evaluate_dpa(dpa)*/
{
	if(perm == "ok")
	{
		document.form1.perm_email.value = perm_ok;
		document.form1.perm_call.value 	= perm_ok;
		document.form1.perm_fax.value 	= perm_ok;
		document.form1.perm_mail.value 	= perm_ok;
	} 	
	else if(perm == "no")
	{
		document.form1.perm_email.value = perm_no;
		document.form1.perm_call.value 	= perm_no;
		document.form1.perm_fax.value 	= perm_no;
		document.form1.perm_mail.value 	= perm_no;
	}		
	else
	{
		document.form1.perm_email.value = perm_empty;
		document.form1.perm_call.value 	= perm_empty;
		document.form1.perm_fax.value 	= perm_empty;
		document.form1.perm_mail.value 	= perm_empty;	
	}		
	// alert("Email value: " + document.form1.perm_email.value + "\n Call value: " + document.form1.perm_call.value + "\n Fax value: " + document.form1.perm_fax.value + "\n Mail value: " + document.form1.perm_mail.value + "\n  3Com Rep value: " + document.form1.rep_to_call.value + "\n  Comm req value: " + document.form1.comm_req.value + "\n");  // debug
}

/*
perm_check() 
checks what permissions have been set in the form and will create required error messages 
*/

function perm_check() /* called by the submit button of the form */
{
	if(detail_perm)
	{
		//alert("we are using detailed permissions");
		if(!document.form1.perm_email[0].checked && !document.form1.perm_email[1].checked)
		{
			alert_message('perm_email_check');
		} 
		else if(!document.form1.perm_call[0].checked && !document.form1.perm_call[1].checked) 
		{
			alert_message('perm_call_check');
		}
		else if(!document.form1.perm_fax[0].checked && !document.form1.perm_fax[1].checked)
		{
			alert_message('perm_fax_check');
		}
		else if(!document.form1.perm_mail[0].checked && !document.form1.perm_mail[1].checked)
		{
			alert_message('perm_mail_check');
		}
		else
		{
			document.form1.submit();
		}
	}
	else if(simple_perm)
	{
		// alert("We are using simple optin permissions");
		if(!document.form1.dpa[0].checked && !document.form1.dpa[1].checked)
		{
			alert_message('perm_simple_check');
		}
		else
		{
			//alert("Simple optin test suggests one radio button has been clicked!");
			document.form1.submit();
		}
	}
	else
	{
		//alert("Simple optout no checking!");
		document.form1.submit();
	}
	
}

//-------AREA OF INTEREST ----------------

function area_of_interest()
{

	document.writeln('\
			<tr>\
				<td class="normal" align="right" valign="top">'+ field["area_of_interest"] +': </td>\
				<td class="normal">\
					<input type="checkbox" name="voice" value="4GA03"> '+ field["interest_voice"] +'<br>\
 					<input type="checkbox" name="lan" value="4GA01"> '+ field["interest_lan"] +' <br>\
 					<input type="checkbox" name="wireless" value="4GA04"> '+ field["interest_wireless"] +'<br>\
 					<input type="checkbox" name="security" value="4GA02"> '+ field["interest_security"] +'<br>\
					<br>\
				</td>\
			</tr>\
			');
}

//-------AREA OF INTEREST US----------------

function area_of_interest_us()
{
	document.writeln('\
			<tr>\
				<td class="normal" align="right" valign="top">'+ field["area_of_interest_us"] +': </td>\
				<td class="normal">\
					<input type="checkbox" name="prof" value="3DA95"> '+ field["interest_prof"] +'<br>\
					<input type="checkbox" name="maint" value="3DA90"> '+ field["interest_maint"] +'<br>\
					<input type="checkbox" name="phone" value="3BA42"> '+ field["interest_phone"] +'<br>\
					<input type="checkbox" name="switch" value="3BA35"> '+ field["interest_switch"] +'<br>\
					<input type="checkbox" name="modular" value="3BA40"> '+ field["interest_modular"] +'<br>\
					<input type="checkbox" name="jack" value="3BA33"> '+ field["interest_jack"] +'<br>\
					<input type="checkbox" name="manage" value="3DA70"> '+ field["interest_manage"] +'<br>\
					<input type="checkbox" name="wireless" value="3BA43"> '+ field["interest_wireless"] +'<br>\
					<input type="checkbox" name="hubs" value="3BA02"> '+ field["interest_hubs"] +'<br>\
					<input type="checkbox" name="firewall" value="3BA38"> '+ field["interest_firewall"] +'<br>\
					<input type="checkbox" name="routers" value="3BA17"> '+ field["interest_routers"] +'<br>\
					<br>\
				</td>\
			</tr>\
			');
}

//-------PRODUCT QUANTITY ----------------
function product_quantity()
{
	document.writeln('\
			<tr>\
				<td class="normal" align="right" valign="top">'+ field["product_quantity"] +': </td>\
				<td class="normal">\<textarea cols="40" rows="5" name="response_note" wrap="soft" size="40" value="product_quantity"></textarea>\
			</td>\
			</tr>\
			');
}

//-------CURRENT USE ----------------
function currently_use()
{
	document.writeln('\
			<tr>\
				<td class="normal" align="right" valign="top">'+ field["currently_use"] +': </td>\
				<td class="normal">\
				<input type="radio" name="currently_use" value="yes"> '+ field["yes"] +'&nbsp;&nbsp;\
				<input type="radio" name="currently_use" value="no">'+ field["no"] +' \
			</td>\
			</tr>\
			');
}
