var gradeToGroup = [ 0, 0, 0, 0, 0, 0, // K - 5
                     1, 1, 1, 1, 1, 1, 1 // 6 - 12
                   ];
var groupCost = [ 149, 249 ];
var groupGuidedCost = [ 100, 150 ];
var discounts = { 1: 0, 3: 5, 5: 10, 10: 15, 12: 20 };
var pmtStrs = { 1: "month", 3: "quarter", 5: "semester", 10: "school year", 12: "year" }

function g( id ) {
	return document.getElementById( id );
}

function sv( sel ) {
	return sel.options[ sel.selectedIndex ].value;
}

function changeGrade( sel, i, xx ) {
	var grade = sv( sel );
	var group = gradeToGroup[ grade ];
	var price = groupCost[ group ];

	if ( ! xx ) {
		updateQuote();
	}	
}

function toggleCC() {
  for ( i = 0; i < document.forms.quote.payMethod.length; i++ ) {
    if (document.forms.quote.payMethod[i].checked) {
      method = document.forms.quote.payMethod[i].value;
    }
  }
  if ( method != 'check' ) {
    g('credit_card_info').className = "";
  } else {
    g('credit_card_info').className = "default_hidden";
  }
}

function changeProgram( sel, i, xx ) {
	var program = sv( sel );
	
	if ( g('extra-student-2') ) {
		for ( var j = 2; j <= 4; j++ ) {
			if ( document.forms.quote[ "INC" + j ].checked ) {
				g( "extra-student-" + j ).className = 'active-student';
			} else {
				g( "extra-student-" + j ).className = 'inactive-student';
			}
		}	
	}

	
	if ( ! xx ) {
		updateQuote();
	}
}

function changePayment( sel ) {
	updateQuote();
}

function selectCallMe() {
	if ( !document.forms.quote.callme_areaCode.value && 
	     !document.forms.quote.callme_phoneNo.value )
	{
		if ( document.forms.quote.areacode_hm.value ) {
			document.forms.quote.callme_areaCode.value = 
				document.forms.quote.areacode_hm.value;
			document.forms.quote.callme_phoneNo.value = 
				document.forms.quote.phoneNo_hm.value;				
		} else {
			document.forms.quote.callme_areaCode.value = 
				document.forms.quote.areacode_wk.value;
			document.forms.quote.callme_phoneNo.value = 
				document.forms.quote.phoneNo_wk.value;							
		}
	}
	return true;
}

function updateQuote() {
	var total = 0;
	var children = 0;
	
	var summ = "";
	
	for ( var i = 1; i <= 4; i++ ) {
		var program = sv( document.forms.quote['program'+i] );
		
		if ( ( ! document.forms.quote['INC'+i] || document.forms.quote['INC'+i].checked ) && program != 'N' ) {			
			var grade = sv( document.forms.quote['grade'+i] );
			
			summ += "Student #" + i + ": Grade " + grade + "\n";
			
			var group = gradeToGroup[ grade ];
			var price = groupCost[ group ];
			
			if ( program == 'G' ) {
			  price += groupGuidedCost[ group ];
				summ += "One 2 One Study: $" + price + "\n";
			} else {
			  summ += "Independent Study: $" + price + "\n";
			}
			
			total += price;
			
			children++;
			
			summ += "\n"
		}				
	}
	
	summ += "Monthly subtotal: $" + total + "\n";
	
	var pmt = sv( document.forms.quote['payment'] );
	total *= pmt;
	
	if ( pmt > 1 ) {
		summ += "\nTimes " + pmt + " months =\n";
		summ += "$" + total + " per " + pmtStrs[pmt] + "\n";
	}
	
	if ( children > 1 || pmt > 1 ) {
		summ += "\nDiscounts:\n";	
	}
	
	var discount = 0;
	if ( children > 1 ) {
		discount = 5;
		summ += "   5% off - 2 or more children\n";
	}
	
	var discount = (children > 1) ? 5 : 0;
	discount += discounts[ pmt ];
	
	if ( discounts[pmt] ) {
		summ += "   " + discounts[pmt] + "% off - advance payment discount\n";
	}
	
	var dtotal = (100.0 - discount)/100.0 * total;
	
	summ += "\n";
	summ += "TOTAL: $" + (Math.round((dtotal) * 100) / 100) + " per " + pmtStrs[pmt];	
	

	
	document.forms.quote['summary'].value = summ;
}

function onLoad() {
	for ( var i = 1; i <= 4; i++ ) {
		changeGrade( document.forms.quote['grade'+i], i, 1 );
		changeProgram( document.forms.quote['program'+i], i, 1 );
	}
	
	changePayment();
}

function validateForm( form ) {
	// REV
var _error = false;
var i;
if (isa_empty(rev_value( form['firstName_p'] ))) {
	if( rev_error("Please specify your first name", { 'field' : 'firstName_p' }, form) )
		return false;
	_error = true;
}
if (isa_empty(rev_value( form['lastName_p'] ))) {
	if( rev_error("Please specify your last name", { 'field' : 'lastName_p' }, form) )
		return false;
	_error = true;
}
if (!(isa_email(rev_value( form['email_p'] )))) {
	if( rev_error("Please specify a valid email address", { 'field' : 'email_p' }, form) )
		return false;
	_error = true;
}
if (isa_empty(rev_value( form['street1'] ))) {
	if( rev_error("Please specify your mailing address", { 'field' : 'street1' }, form) )
		return false;
	_error = true;
}
if (isa_empty(rev_value( form['city'] ))) {
	if( rev_error("Please specify your city", { 'field' : 'city' }, form) )
		return false;
	_error = true;
}
if (rev_value( form['country'] ) == "USA") {
	if (!(isa_state(rev_value( form['state'] )))) {
		if( rev_error('Please enter a valid state code', { 'field' : 'state' }, form) )
			return false;
		_error = true;
	}
}
else if ((rev_value( form['country'] )).match( /^ca(nada)?$/i )){
	if (!(isa_province(rev_value( form['state'] )))) {
		if( rev_error('Please enter a valid province code', { 'field' : 'state' }, form) )
			return false;
		_error = true;
	}
}
else if (isa_empty(rev_value( form['country'] ))){
	if( rev_error('Please specify your country', { 'field' : 'country' }, form) )
		return false;
	_error = true;
}

if (isa_empty(rev_value( form['zipcode'] ))) {
	if( rev_error("Please specify your zip/postal code", { 'field' : 'zipcode' }, form) )
		return false;
	_error = true;
}
if (!(((((isa_nonempty(rev_value( form['areacode_wk'] ))  && isa_nonempty(rev_value( form['phoneNo_wk'] )))))  || (((isa_nonempty(rev_value( form['areacode_hm'] ))  && isa_nonempty(rev_value( form['phoneNo_hm'] )))))))) {
	if( rev_error("Please specify at least one complete phone number", { 'field' : 'areacode_wk' }, form) )
		return false;
	_error = true;
}
if (isa_empty(rev_value( form['userType'] ))) {
	if( rev_error("Please specify your relationship to the students you are registering", { 'field' : 'userType' }, form) )
		return false;
	_error = true;
}
var _loop_i;
var _list_i=rev_make_range(1, 4);
for ( _loop_i in _list_i ){
	i= _list_i[_loop_i];
	if (((i == 1  || rev_value( form['INC' + '' + i] )))) {
		if (isa_empty(rev_value( form['STD' + '' + i + '' + '_firstName'] ))) {
			if( rev_error((("Please enter a valid first name for student #"  + '' + i)), { 'field' : ((('STD'  + '' + i) + '' + '_firstname')) }, form) )
				return false;
			_error = true;
		}
		if (isa_empty(rev_value( form['STD' + '' + i + '' + '_lastName'] ))) {
			if( rev_error((("Please enter a valid last name for student #"  + '' + i)), { 'field' : ((('STD'  + '' + i) + '' + '_lastname')) }, form) )
				return false;
			_error = true;
		}
		if (!(((isa_email(rev_value( form['STD' + '' + i + '' + '_email'] ))  || rev_value( form['STD' + '' + i + '' + '_email'] ) == 'none') || isa_empty(rev_value( form['STD' + '' + i + '' + '_email'] ))))) {
			if( rev_error((("Please enter a valid email address or 'none' for student #"  + '' + i)), { 'field' : ((('STD'  + '' + i) + '' + '_email')) }, form) )
				return false;
			_error = true;
		}
		if (!((rev_value( form['program' + '' + i] ) == 'I'  || rev_value( form['program' + '' + i] ) == 'G'))) {
			if( rev_error((("Please select a program type for student #"  + '' + i)), { 'field' : (('program'  + '' + i)) }, form) )
				return false;
			_error = true;
		}
		if (!((rev_value( form['grade' + '' + i] ) >= 0  && rev_value( form['grade' + '' + i] ) <= 12))) {
			if( rev_error((("Please select a valid grade for student #"  + '' + i)), { 'field' : (('grade'  + '' + i)) }, form) )
				return false;
			_error = true;
		}
		if ((rev_value( form['grade' + '' + i] ) >= 6  && !(((((rev_value( form['math' + '' + i] )  || rev_value( form['lang' + '' + i] )) || rev_value( form['sci' + '' + i] )) || rev_value( form['ssci' + '' + i] )))))) {
			if( rev_error((("Please select at least one subject for student #"  + '' + i)), { 'field' : (('math'  + '' + i)) }, form) )
				return false;
			_error = true;
		}
		if (!(isa_date_mmsddsyyyy(rev_value( form['STD' + '' + i + '' + '_birthday'] )))) {
			if( rev_error((("Please enter a valid birthday in mm/dd/yyyy format for student #"  + '' + i)), { 'field' : ((('STD'  + '' + i) + '' + '_birthday')) }, form) )
				return false;
			_error = true;
		}
		if (!(in_array( rev_value( form['STD' + '' + i + '' + '_gender'] ), rev_array_concat('M', 'F') ))) {
			if( rev_error((("Please select the gender of student #"  + '' + i)), { 'field' : ((('STD'  + '' + i) + '' + '_gender')) }, form) )
				return false;
			_error = true;
		}
	}
	
}

if (!(in_array( rev_value( form['payment'] ), rev_array_concat(1, 3, 5, 10, 12) ))) {
	if( rev_error("Please select a plan length", { 'field' : 'payment' }, form) )
		return false;
	_error = true;
}
if (!(in_array( rev_value( form['payMethod'] ), rev_array_concat('creditCard', 'check', 'callMe', 'phoneIn') ))) {
	if( rev_error("Please select a payment method", { 'field' : 'payMethod' }, form) )
		return false;
	_error = true;
}
if (rev_value( form['payMethod'] ) != 'check') {
	if (!(in_array( rev_value( form['creditCard'] ), rev_array_concat('VISA', 'MC') ))) {
		if( rev_error("Please select either VISA or MasterCard", { 'field' : 'creditCard' }, form) )
			return false;
		_error = true;
	}
	if (rev_value( form['creditCard'] ) == 'VISA') {
		if (!(isa_visa_number(rev_value( form['cc_number'] )))) {
			if( rev_error("Please enter a valid credit card number.  Do not include spaces or dashes.  Please also make sure you have selected the correct credit card type.", { 'field' : 'cc_number' }, form) )
				return false;
			_error = true;
		}
	}
	else {
		if (!(isa_mastercard_number(rev_value( form['cc_number'] )))) {
			if( rev_error("Please enter a valid credit card number.  Do not include spaces or dashes.  Please also make sure you have selected the correct credit card type.", { 'field' : 'cc_number' }, form) )
				return false;
			_error = true;
		}
	}
	
}
else if (rev_value( form['payMethod'] ) == 'callMe'){
	if (isa_empty(rev_value( form['callme_areaCode'] ))) {
		if( rev_error("Please specify the area code we should use to call for payment information.", { 'field' : 'callme_areaCode' }, form) )
			return false;
		_error = true;
	}
	if (isa_empty(rev_value( form['callme_phoneNo'] ))) {
		if( rev_error("Please specify the phone number we should call for payment information.", { 'field' : 'callme_phoneNo' }, form) )
			return false;
		_error = true;
	}
	if (isa_empty(rev_value( form['cm_question'] ))) {
		if( rev_error("Please specify a security question.", { 'field' : 'cm_question' }, form) )
			return false;
		_error = true;
	}
	if (isa_empty(rev_value( form['cm_answer'] ))) {
		if( rev_error("Please specify the answer to your security question.", { 'field' : 'cm_answer' }, form) )
			return false;
		_error = true;
	}
}

return !_error;
}

// FUNCTIONS THAT HANDLE REV RESULTS

function rev_fatal( message, params, form ) {
	if ( params['field'] ) {
		try {
			form[ params['field'] ].focus();
			form[ params['field'] ].select();
		} catch (e) {
		}
	}

	alert( message );

	return true;
}

function rev_error( message, params, form ) {
	if ( params['field'] ) {
		try {
			form[ params['field'] ].focus();
			form[ params['field'] ].select();
		} catch (e) {
		}
	}

	alert( message );

	return true;
}

function rev_warning( message ) {
	alert( message );

	return false;
}


