// main.js
var okColor   = '#002A5C';
var erColor   = '#f00';

var debug_msg = '';	

Array.prototype.in_array = function(p_val) {
	for(var i = 0, l = this.length; i < l; i++) {
		if(this[i] == p_val) {
			return true;
		}
	}
	return false;
};

function validate_form(){
	//alert('Validating form...');
	var error_msg = '';
	
	error_msg += validate_field('text',       'a',                           'Please enter a value for Diameter @ Nominal Pressure (A)\n');
	error_msg += validate_field('radio',      'a_unit',                      'You must select a unit type for Diameter @ Nominal Pressure (A)\n');
	error_msg += validate_field('text',       'b',                           'Please enter a value for Working Length @ Nominal Pressure (B)\n');
	error_msg += validate_field('radio',      'b_unit',                      'You must select a unit type for Working Length @ Nominal Pressure (B)\n');
	error_msg += validate_field('text',       'c',                           'Please enter a value for Proximal Neck ID (C)\n');
	error_msg += validate_field('radio',      'c_unit',                      'You must select a unit type for Proximal Neck ID (C)\n');
	error_msg += validate_field('text',       'd',                           'Please enter a value for Distal Neck ID (D)\n');
	error_msg += validate_field('radio',      'd_unit',                      'You must select a unit type for Distal Neck ID (D)\n');
	error_msg += validate_field('text',       'e',                           'Please enter a value for Proximal Neck Length (E)\n');
	error_msg += validate_field('radio',      'e_unit',                      'You must select a unit type for Proximal Neck Length (E)\n');
	error_msg += validate_field('text',       'f',                           'Please enter a value for Distal Neck Length (F)\n');
	error_msg += validate_field('radio',      'f_unit',                      'You must select a unit type for Distal Neck Length (F)\n');
	
	if( document.getElementById('k').value != '' ){
		error_msg += validate_field('radio',    'k_unit',                      'You must select a unit type for Proximal Cone Length (K)\n');
	}
	
	if( document.getElementById('l').value != '' ){
		error_msg += validate_field('radio',    'l_unit',                      'You must select a unit type for Distal Cone Length (L)\n');
	}
	
	if( document.getElementById('w').value != '' ){
		error_msg += validate_field('radio',    'w_unit',                      'You must select a unit type for Wall Thickness (W)\n');
	}
	
	error_msg += validate_field('text',       'material',                    'Please enter your Material\n');
	error_msg += validate_field('text',       'nominal_pressure',            'Please enter your Nominal Pressure\n');
	error_msg += validate_field('text',       'average_burst_pressure',      'Please enter your Average Burst Pressure\n');
	error_msg += validate_field('text',       'rated_burst_pressure',        'Please enter your Rated Burst Pressure\n');
	error_msg += validate_field('text',       'length_measurement_pressure', 'Please enter your Length Measurement Pressure\n');
	error_msg += validate_field('text',       'firstname',                   'Please enter your First Name\n');
	error_msg += validate_field('text',       'lastname',                    'Please enter your Last Name\n');
	error_msg += validate_field('text',       'title',                       'Please enter your Title\n');
	error_msg += validate_field('text',       'company',                     'Please enter your Company\n');
	error_msg += validate_field('text',       'address1',                    'Please enter your Address\n');
	error_msg += validate_field('text',       'city',                        'Please enter your City\n');
	error_msg += validate_field('text',       'state',                       'Please enter your State\n');
	error_msg += validate_field('text',       'zip',                         'Please enter your Zip\n');
	error_msg += validate_field('text',       'country',                     'Please enter your Country\n');
	error_msg += validate_field('text',       'phone',                       'Please enter your Phone\n');
	error_msg += validate_field('text',       'fax',                         'Please enter your Fax\n');
	error_msg += validate_field('text',       'email',                       'Please enter your Email\n');
	// error_msg += validate_field('text',       'interface_sales_contact',     'Please enter your Interface Sales Contact\n');
	
	if( document.getElementById('balloon_tubing_size_id').value != '' ){
		error_msg += validate_field('radio',    'balloon_tubing_size_id_unit',                      'You must select a unit type for Balloon Tubing Sizes I.D.\n');
	}
	
	if( document.getElementById('balloon_tubing_size_od').value != '' ){
		error_msg += validate_field('radio',    'balloon_tubing_size_od_unit',                      'You must select a unit type for Balloon Tubing Sizes O.D.\n');
	}

	if( debug_msg != '' ){ 
		alert( debug_msg );
	}
		
	if( error_msg == '' ){
		return true;
	}else{
		alert( error_msg );
		return false;
	}
}


function validate_field( field_type, field_id, error_msg, label_id ){
	//alert('Validating field: '+field_id);
	var field_valid = false;
	// set label_id = lbl_field_id unless specified otherwise.
	if( label_id == null ) label_id = 'lbl_'+field_id;
	//alert('Label ID...'+label_id);
	// switch on field type & call appropriate validation functions...
	switch( field_type ){
		case 'text':
  		field_valid = validate_text_field( field_id );
			break;
		case 'checkbox':
		 	field_valid = validate_checkbox( field_id );
				break;
		case 'radio':
		 	field_valid = validate_radio( field_id );
			break;
		case 'num_only':
  		field_valid = validate_text_field( field_id );
			if( field_valid ) field_valid = validate_digits( field_id );
			break;
		case 'cc_exp_set':
			field_valid = validate_cc_exp_set( field_id );
			break;
		case 'select':
  		field_valid = validate_select_field( field_id );
			break;
	}
	
	var label_o = document.getElementById(label_id);
	if( label_o ){
		if( field_valid ){
			label_o.style.color = okColor;
			return "";
		}else{
			label_o.style.color = erColor;
			return error_msg;
		}
	}else{
		debug_msg += "Unable to find Label: "+label_id+"\n";
	}
}

function validate_text_field( field_id ){
	//alert('validate text field: '+field_id);
	if( !document.getElementById(field_id) ){	alert('Could not find field id: '+field_id); return false; }
	if(  document.getElementById(field_id).value == "") { return false; }else{ return true; }
}

function validate_checkbox( field_id ){
	//alert('validate text field: '+field_id);
	if( !document.getElementById(field_id) ){	alert('Could not find field id: '+field_id); return false; }
	if(  document.getElementById(field_id).checked == false ) { return false; }else{ return true; }
}

function validate_radio( group_name ){
	var radios = document.getElementsByName( group_name );
	var i;
	for (i = 0; i < radios.length; i++) {
		if (radios[i].checked) return true;
	}
	return false; 
}

function validate_select_field( field_id ){
	//alert('validate select field: '+field_id);
	if( !document.getElementById(field_id) ){	alert('Could not find field id: '+field_id); return false; }
	if(  document.getElementById(field_id).selectedIndex == 0) { return false; }else{ return true; }
}

function validate_digits( field_id ){
	//alert('validate select field: '+field_id);
	if( !document.getElementById(field_id) ){	alert('Could not find field id: '+field_id); return false; }
	if(  document.getElementById(field_id).value == "") { return false; }else{ return true; }
	return false;
}

function is_numeric(evt){
	var charCode = (evt.which) ? evt.which : event.keyCode;
	if(charCode > 31 && (charCode < 48 || charCode > 57)) return false;
	return true;
}

function is_phone_char(evt){
	var charCode = (evt.which) ? evt.which : event.keyCode;
	//alert(charCode);
	if( charCode == 32  ) { return true; } // space
	if( charCode == 43  ) { return true; } // plus
	if( charCode == 45  ) { return true; } //minus
	if( charCode == 120 ) { return true; } // lower x
	if( charCode == 88  ) { return true; } // upper x
	if(charCode > 31 && ( charCode < 48 || charCode > 57 )) { return false; } // invalid chars
	return true;
}

function alert_char_code(evt){
	var charCode = (evt.which) ? evt.which : event.keyCode;
	alert(charCode);
	return true;
}

function data_change(field){
	var check = true;
  var value = field.value; //get characters
	//check that all characters are digits, ., -, or ""
	for(var i=0;i < field.value.length; ++i){
		var new_key = value.charAt(i); //cycle through characters
		if(((new_key < "0") || (new_key > "9")) && !(new_key == "")){
			check = false;
			break;
		}
	}
	//apply appropriate colour based on value
	if(!check){
		field.style.backgroundColor = "red";
	}else{
		field.style.backgroundColor = "white";
	}
}
