/* Copyright 2008, Attotron Biotechnologies Corporation */

/* Validation functions unique to the Simzymes catalog. See docs/read_me_jscript.html and docs/read_me_onload.html */

// var SIMZYMES_SEQUENCE_FORM_NAME = 'cart_quantity';
// form 1, element 3 is the sequence element on the oligo ordering page
// I guess these identifiers could change if fields are re-entered in different order; 
// check source of products page for custom oligo if this product is re-entered.
// <input type="text" name="id[txt_1]" size="50" maxlength="50" value="" id="attrib-1-0" /> 
var SIMZYMES_SEQUENCE_FORM_INDEX = 1;
var SIMZYMES_SEQUENCE_FIELD_INDEX = 4;	// there are 3 hiddne fields at top of form, then name, then sequence
var SIMZYMES_SEQUENCE_FIELD_NAME = 'id[txt_1]';
var SIMZYMES_SEQUENCE_FIELD_ID = 'attrib-1-0';
var SIMZYMES_INVALID_BASES_ERROR_MESSAGE = 'Invalid bases removed from sequence. Only non-ambiguous DNA bases [A, C, G, and T] are allowed.';

function simzymes_add_validation_handlers(){
	var seq_form = document.forms[SIMZYMES_SEQUENCE_FORM_INDEX];
	var seq_field = seq_form.elements[SIMZYMES_SEQUENCE_FIELD_INDEX];
	if ( (null != seq_field) && (seq_field['name']==SIMZYMES_SEQUENCE_FIELD_NAME) && (seq_field['id']==SIMZYMES_SEQUENCE_FIELD_ID) ){
		seq_field['onchange']=function(){simzymes_validate_sequence_field()};
		// seq_field['onchange']=simzymes_validate_sequence_field;	// doesn't work
		// alert( simzymes_get_field_info(seq_field));
		// alert( simzymes_get_form_info(seq_form));
	}
//	seq_form['onsubmit']=function(){simzymes_verify_sequence_field()};
}

function simzymes_validate_sequence_field(){
	var field = document.forms[SIMZYMES_SEQUENCE_FORM_INDEX].elements[SIMZYMES_SEQUENCE_FIELD_INDEX];
	field.value=simzymes_validate_oligo( field.value );
}

function simzymes_verify_sequence_field(){	// doesn' t look like we nned this...
	var field = document.forms[SIMZYMES_SEQUENCE_FORM_INDEX].elements[SIMZYMES_SEQUENCE_FIELD_INDEX];
	return field.value==simzymes_validate_oligo( field.value );
}

function simzymes_validate_oligo(inSeq){
	var seq = inSeq.toUpperCase();
	var alphabet = 'ACGT';
	var validSeq = '';
	for (var i=0; i< seq.length; i++){
		if ( alphabet.indexOf(seq.charAt(i)) >= 0 ){
			validSeq += seq.charAt(i);
		}
	}
	if (seq != validSeq) alert(SIMZYMES_INVALID_BASES_ERROR_MESSAGE);
	return validSeq;
}

/********** DEBUGGING FUNCTIONS **********/

function simzymes_get_field_info(field){
	var msg = "simzymes_get_field_info:\n";
	for (var i in field) {
		msg += i + "\t" + field[i] + "\n";
	}
	return msg;
}

function simzymes_get_form_info(frm){
	var msg = "simzymes_get_form_info:\n";
	for (var i in frm){
		msg += i + "\t" + frm[i] + "\n";
	}
	return msg;
}

function simzymes_get_page_info(){	// for debugging
	var msg = "simzymes_get_page_info debug:\n"
	for (var i=0; i<document.forms.length; i++) {
		var f = document.forms[i];
		msg += 'i=' + i + ": f=" + f + ", f.name=" + f['name'] + "\n";
	}
	return(msg);
}

