// JavaScript Document

function click_all(form, flag) {
	form.all.checked = flag;
	form.economic_update.checked = flag;
	form.invest_insights.checked = flag;
	form.new_products.checked = flag;
}

//this returns the element (object)
function GEId(e){
	
	switch(e)
	{
		case 'P_venue':
			return oform.P_venue;
			break;
		case 'P_catering':
			return oform.P_catering;
			break;
		case 'P_useful_info':
			return oform.P_useful_info;
			break;
		case 'P_overall':
			return oform.P_overall;
			break;
		case 'P_recommend_friends':
			return oform.P_recommend_friends;
			break;
		case 'existingcustomer':
			return oform.existingcustomer;
			break;	
		case 'eventid':
			return oform.eventid;
			break;		
		default:
			return document.getElementById(e);
		
	}
	
}

//this returns the label reference of the form element
function GetLabel(e) {
	switch(e)
	{	
	default:
	  return 'lbl' + e;
	}
}

function get_field_error_msg(field) {
	switch(field)
	{
		case 'firstname': case 'lastname':
			break;
		case 'postcode':
			return 'Postcode needs to be a 4 digit number'
			break;
		case 'tel':
			return 'Contact Number needs to be 8 to 10 characters'
			break;
		default:
			return null;
	}
}

//validates a field based on a certain definition
function validate_field(name, value)
{	
	var returnvalue;

	switch(name)
	{
	case 'email': case 'confirmemail':	
	  return value.value.match(/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/);
	  break;
	case 'firstname':
		//accept alpha characters only
	  return value.value.match(/^([a-zA-Z\-\s])+$/);	
	  break;
	case 'lastname':
	  //accept alpha characters only	
	  return value.value.match(/^([a-zA-Z\-\'\s])+$/);
	  break;	
	case 'address':
	  return value.value.match(/^[\w\s\/\.]+$/);
	  break;
	case 'suburb':
	  return value.value.match(/^([a-zA-Z\s])+$/);	
	  break;
	case 'postcode':
	  return value.value.match(/^\d{4}/);
	  break;
	case 'tel':
	  return value.value.match(/^\d{8,10}/);
	  break;	  
	case 'eventid': case 'existingcustomer': case 'P_venue': case 'P_catering': case 'P_useful_info': case 'P_overall': case 'P_recommend_friends':	
	  //default value	
	  returnvalue = false;	
	
	  if(name == 'eventid' && value == null) {	
		  return false;
	  } else if(value.checked != null) {
		  returnvalue = value.checked;
	  } else {	
		  for(var index = 0; index < value.length; index++)
		  {
			  if(value[index].checked) {
				  returnvalue = true;
			  }
		  }
	  }
	  return returnvalue;
	  break;
	default:
	   return value.value.length > 0;	  
	}	
}

function validate_form(form){
	var error=false;		
	var highlight = false;
	var v_purchase;
	var first_error = '';
	var add_error_msg = '\n\n';
	
	//save copy of form globally
	oform = form;
	
	for (i=0; i<input.length; i++)
	{
		switch(input[i])
		{
			//any special conditions
			case 'confirmemail':
				if((!validate_field(input[i],form.confirmemail)) || !(form.confirmemail.value == form.email.value)) {
					error=true;
					highlight = true;
				}
				break;	 
			default:
				if (!validate_field(input[i],GEId(input[i]))){	
					error=true;
					highlight = true;
				}
		}
		
		//put in place any addition error messages
		if(highlight && get_field_error_msg(input[i]) != null) {
			add_error_msg = add_error_msg + get_field_error_msg(input[i]) + '\n\n';
		}
		
		//color code error
		GEId(GetLabel(input[i])).style.color = highlight ? "#ff0000" : "#ffffff";				
		highlight = false;
		first_error = (first_error == '' && error) ? GetLabel(input[i]) : first_error;
		
	}
	if (error == true) {
		alert('Please complete all mandatory fields' + add_error_msg);
		GEId(first_error).scrollIntoView(true);
		return false;
	} else 
		return true;
}