$(document).ready(function() {
	// Initialize check boxes
	var inevents = $('.INEVENTS');
	inevents.bind('click', function() {updateEvent(this.value);});
	
	for (var i=0; i < inevents.length; i++) {
		var eventName = inevents[i].value;
		updateEvent(eventName);		
		$('INPUT[NAME^=' + eventName + ']').bind(
			'click', eventName, function (event) {updateEvent(event.data);});
		$('SELECT[NAME^=' + eventName + ']').bind(
			'change', eventName, function (event) {updateEvent(event.data);});
	}
	
	$(".ANYDATE").bind('change', function () {
		var d = new Date(this.value);
		if (!d.getMonth())
			d = new Date(this.value.replace(/-/g, '/'));
		if (d.getFullYear() > 2012)
			d.setFullYear(d.getFullYear() - 100);
		if (d.getMonth()) {
			this.value =  (d.getMonth() + 1) + "/" + d.getDate() + "/" + d.getFullYear();
		}

	});
} )

function updateAllEvents() {

	var inevents = $('.INEVENTS');	
	for (var i=0; i < inevents.length; i++) {
		var eventName = inevents[i].value;
		updateEvent(eventName);	
	}
}

function updateEvent(eventName ) {
	var inevent  = $('.' + eventName + '.' + 'INEVENTS');
	var details  = $('.' + eventName + '.' + 'ENTERDETAILS');
	
	if (inevent.attr('checked')) {
		details.show();
	} else {
		details.hide();
	}
	
	var entry = new Object;
    $('[name^=' + eventName + ']').each (function(i) {
		entry[this.name.match(/\[(.*)\]/)[1]] = $(this);
	});


	var fee = allFees[eventName];
	switch (eventName) {
		case 'NATLOPEN': 
			var fee = allFees.NATLOPEN;
			if (entry['SECTION'].attr('value') == 'OPEN') {
				entry.U21OPEN.attr('disabled', false);
				fee += entry.U21OPEN.attr('checked') ? allFees.U21OPEN : 0;
			} else {
				entry.U21OPEN.attr('checked', false).attr('disabled', true);
			}
				
			if (entry.SENIOR1.attr('checked')) {
				fee += allFees.SENIOR1;
			}
			break;
			
		case 'KARPOV':
			updateEvent('SIMUL2'); 			
			updateEvent('GAME10'); 
			break;
			
		case 'SIMUL2': 
			var sec = $('SELECT[NAME*=ALTERNATE]').val();
			if ($('.KARPOV.INEVENTS').attr('checked') && (sec == 'GAREEV' || sec == 'AKOBIAN')) {
				inevent.attr('disabled', true).attr('checked', false);
			} else {
				inevent.attr('disabled', false);
			}
			break;			
			
		case 'GAME10': 
			if ($('.KARPOV.INEVENTS').attr('checked') && $('SELECT[NAME*=ALTERNATE]').val() == 'GAME10') {
				inevent.attr('disabled', true).attr('checked', false);
			} else {
				inevent.attr('disabled', false);
			}
			break;
			
		case 'CAMP':
			var sec = entry.SECTION.attr('value');
			var fee = (sec == 'AM' || sec == 'PM') ? allFees.CAMPHD : allFees.CAMP;
			if (sec == 'AM') {
				entry.TD.attr('checked', false).attr('disabled', true).val(0);
			} else {
				entry.TD.attr('disabled', false);
			}
			break;
			
		default:
			if (entry.COUNT != undefined && entry.FEE != undefined) {
				fee *=  entry.COUNT.val();
			}
			break;
	}
	entry.FEE.attr('value', roundNumber(fee,2));
	
	fees = 0;
	$("INPUT[NAME*='[FEE]']:visible").each(function () {fees += Number(this.value);});
	$("INPUT[NAME=FEECALC]").attr('value', "$" + roundNumber(fees, 2)).show();
	
}

function teamChanged() {
	var s = document.getElementsByName('YOUTH[TEAMCODE]')[0];
	var n = document.getElementsByName('YOUTH[TEAMNAME]')[0];
	var o = s.options[s.selectedIndex];;
	if  (o.value == 'NEW') {
		n.disabled = false;
	} else {
		n.disabled = true;
		n.value = o.value != '0' ? o.text : '';
	}
}

function roundNumber(number,decimal_points) {
	if(!decimal_points) return Math.round(number);
	if(number == 0) return "0.0000000000000".substr(0, decimal_points+2);

	var exponent = Math.pow(10,decimal_points);
	var num = Math.round((number * exponent)).toString();
	return num.slice(0,-1*decimal_points) + "." + num.slice(-1*decimal_points)
}

function lookupRatings() {
	var f = document.getElementById('uscfFrame');

	var id = document.getElementsByName('PLAYER[USCFID]')[0];
	var ln = document.getElementsByName('PLAYER[LASTNAME]')[0];
	var fn = document.getElementsByName('PLAYER[FIRSTNAME]')[0];
	var su = document.getElementsByName('SUPPDATE')[0].value;

	var q = '?SUPPDATE=' + su;
	if (id.value)
		q += '&name=' + id.value;
	else if (ln.value.length > 2) {
		q += '&name=' + ln.value;
		if (fn.value)	q += ',' + fn.value;
	}

	f.style.display = 'block';
	f.src = '/uscf/uscflookup.php' + q;
	return void(0);
}

function hideIfPresent(name) {
	var e = document.getElementById(name);
	if (!e) return;

	if (!e.defaultDisplay)
		e.defaultDisplay = e.style.display;
	e.style.display = 'none';
}

function hideRatingInfo() {
	hideIfPresent('INFO_EXPIRES');
	hideIfPresent('INFO_RATING');
	hideIfPresent('INFO_TITLE');
	hideIfPresent('INFO_FIDE RATING');
	hideIfPresent('INFO_FIDE ID');
	hideIfPresent('INFO_USCF ST');
	hideIfPresent('INFO_FIDE ST');
	hideIfPresent('INFO_USCF NAME');
}

function setFromRatings(uscfdata) {
	var f = document.getElementById('uscfFrame');
	f.style.display = 'none';

	if (!uscfdata)  return void(0);

	var id = document.getElementsByName('PLAYER[USCFID]')[0];
	var ln = document.getElementsByName('PLAYER[LASTNAME]')[0];
	var fn = document.getElementsByName('PLAYER[FIRSTNAME]')[0];
	var st = document.getElementsByName('PLAYER[STATE]')[0];
	var cn = document.getElementsByName('PLAYER[COUNTRY]')[0];
	var rd = document.getElementById('ratingDisplay');

	id.value = uscfdata.uscfid.value;
	fn.value = uscfdata.firstname.value;
	ln.value = uscfdata.lastname.value;
	st.value = uscfdata.state.value;
	cn.value = uscfdata.country.value;

	hideRatingInfo();
	rd.innerHTML = uscfdata.displayString.value;

	return void(0);
}

function openEditWindow(url, target, height, width, options) {
	if (!target) target='editentry';
	if (!width)  width= 640;
	if (!height) height=820;
	if (!options) options = "scrollbars=yes,status=yes,resize=yes";
	var opt = options + ",width=" + width + ",height=" + height;
	var w = window.open(url, target, opt);
	w.focus();
	return void(0);
}

function resubmit(form) {
	form.ACTION.value = 'SUBMIT';
	form.submit();
}


function checkEFF (form) {
	if (form.EFFDATE.value != form.EFFDATE.defaultValue) {
		form.ACTIONKLUDGE.value = 'SUBMIT';
	    resubmit(form);
	}
}

function setCellDisp (name, state) {
	cell = document.getElementById('PAYINFO' + name);
	cell.style.display = state ? 'table-cell' : 'none';
}

function checkPayType (form, oldvalue) {
	var newvalue = form.PAYTYPE.value;
	if (newvalue != oldvalue && (newvalue == 'FREE' || oldvalue == 'FREE'))
		resubmit(form);

	var types = ['CHECKNO', 'CHECKDT', 'PAYOR', 'AUTH', 'REASON', 'CCINFO', 'AMOUNT'];
	for (var i = 0; i < types.length; i++)
	setCellDisp(types[i], false);

	setCellDisp('CHECKNO', false);
	setCellDisp('CHECKDT', false);
	setCellDisp('AUTH',    false);
	setCellDisp('CCINFO',  false);
	setCellDisp('REASON',  false);
	setCellDisp('PAYOR',   true);
	setCellDisp('AMOUNT',  true);

	if (newvalue == 'FREE') {
		setCellDisp('AUTH', true);
		setCellDisp('REASON', true);
		setCellDisp('PAYOR', false);
		setCellDisp('AMOUNT',false);
	}

	if (newvalue == 'CHECK') {
		setCellDisp('CHECKNO', true);
		setCellDisp('CHECKDT', true);
	}

	if (newvalue == 'CHARGE') {
		setCellDisp('CCINFO', true);
	}
}

function recordPayment(form) {
	form.ACTION.value = 'RECORD';
	form.submit();
}
