HERSHEYS.TrackandField = {
    ACTIVE_REG_MEET: false
};

HERSHEYS.TrackandField.initWizard = function(){
	
	HERSHEYS.TabbedBrowsing.init({
		navSelector: 		'.wizard .tabnav a',
		contentSelector: 	'.wizard .scroll',
		nextSelector: 		'.wizard-next',
		previousSelector: 	'.wizard-prev'
    });

	$(HERSHEYS.TabbedBrowsing).bind('NewItemShowing', function (e, data) {
		HERSHEYS.TrackandField.Analytics.track('wizard', $(data).attr('title'));
	});	
};
HERSHEYS.TrackandField.bindCoordinatorLookup = function(){
	
	var submit = $('.track-meet .submit');
    submit.bind('click', function () {
        var stateIn = $("select#sp").val();

        if (stateIn && stateIn != "select") {

            $('.track-meet .results').html('').addClass('loading');

            $("select#sp,#sp-radio").removeClass('error'); $('.red').remove();
            var data = { STATEPROVINCEID: stateIn };
            HERSHEYS.TrackandField.EventManagement.doWebservice('coordinators', data);
            HERSHEYS.TrackandField.Analytics.track('findCoordinator', data['STATEPROVINCEID']);
        } else {
            if (stateIn == 'select') {
                $('.red').remove();
                $("select#sp").addClass('error').after('<span class="red">*</span>');
            } else {
                $("select#sp").removeClass('error');
                $('.red').remove();
            }
        }
        return false;
    });

};
HERSHEYS.TrackandField.initFAQ = function(){
	
	HERSHEYS.TabbedBrowsing.init({
		navSelector: 		'.faq .question',
		contentSelector: 	'.faq .answer',
		expanded: 			true
	});
	
};

/* PAGE-SPECIFIC Initializations */
var initializations = {

    '/': function () {

		HERSHEYS.TabbedBrowsing.init({
			navSelector: 		'#home-tabbed-nav .nav a',
			contentSelector: 	'#home-tabbed-content .tabbedContent',
			'nextSelector': 	'.tabbedNext',
			'previousSelector': '.tabbedPrevious',
			'autoRotate': 		10000
        });

    },
    'parents/organize-a-track-meet': function () {
        HERSHEYS.TrackandField.initWizard();
    },
    'organizers/getting-started': function () {
       HERSHEYS.TrackandField.initWizard();
    },
    'parents/getting-started': function () {
       /* HERSHEYS.TrackandField.initWizard(); */
    },
    'volunteers/getting-started': function () {
        /* HERSHEYS.TrackandField.initWizard(); */
    },
    'organizers/organizer-faqs': function () {
        HERSHEYS.TrackandField.initFAQ();
    },
    'parents/parent-faqs': function () {
       HERSHEYS.TrackandField.initFAQ();
    },
    'track-meet-central/organize-a-track-meet': function () {
       HERSHEYS.TrackandField.initWizard();
    },
    'registration-confirmation': function () {
        var hash = decodeURIComponent(window.location.search),
            pieces = hash.split('&'),
            content = $('.maincontent'),
            rainDate;

        if (pieces[3] == "rainDate=") {
            rainDate = 'Rain Date: N/A';
        } else {
            rainDate = pieces[3].replace('rainDate=', 'Rain Date: ');
        }

        content.append('<p>' + pieces[0].replace('?eventLoc=', 'Event Location: ') + '</p>')
        .append('<p>' + pieces[1].replace('eventDate=', 'Event Date: ') + '</p>')
        .append('<p>' + pieces[2].replace('eventTime=', 'Event Time: ') + '</p>')
        .append('<p>' + rainDate + '</p>');
        content.append('<div class="page-break"></div><h3>Confirmation</h3>');
    },
    'organizers/find-a-state-provincial-territory-chair': function () {
		HERSHEYS.TrackandField.bindCoordinatorLookup();
    },
	'volunteers/find-a-state-provincial-territory-chair': function () {
		HERSHEYS.TrackandField.bindCoordinatorLookup();
    },
	'parents/find-a-state-provincial-territory-chair': function () {
		HERSHEYS.TrackandField.bindCoordinatorLookup();
    }};

if (!IS_MOBILE) {
    HERSHEYS.Utility.doPageInits(initializations);
}

HERSHEYS.TrackandField.TrackMeet = {

    RegistrationData:   "", //this is used for the Xml data containing the form data from the registration modal; used to submit to Meet Manager and send email notification to event coordinator

    init: function () {

		$('#group-1-activities').children('input').attr('disabled', 'disabled');
		$('#group-2-activities').children('input').attr('disabled', 'disabled');
		$('#group-3-activities').children('input').attr('disabled', 'disabled');

        //registration validation
        //group activities
        var relayCheckbox = $('.is-relay');
        var relayDiv = $('#relay');

        //show relay div when relay is checked
        relayCheckbox.bind('click', function () {
            var n = $('.is-relay:checked').length;
            if (n != 0) {
                relayDiv.show();
                relayDiv.children().children().children('input').addClass('required');
            } else {
                relayDiv.hide();
                relayDiv.children().children().children('input').removeClass('required');
                //reset relay team year
                $('input[name=relay-age]').removeAttr('checked');
            }
        });

        //disable other groups if you check one group section. re-enable when group is all unchecked
        var allGroupChecks = $('.group-activities input:checkbox');


        // PARTICIPANT AGE (DISABLE APPROPRIATE CHECKBOXES)
		$('#reg-age').bind('blur', function () {
			
            $('#relay').hide();
            var age = $('#reg-age').val();
			
			if (age == 14 || age == 13) {
				$('#group-1-activities').children('input').attr('checked', '');
				$('#group-1-activities').children('input').attr('disabled', 'disabled');
				$('#group-2-activities').children('input').attr('checked', '');
				$('#group-2-activities').children('input').attr('disabled', 'disabled');
				$('#group-3-activities').children('input').removeAttr('disabled');

                $('#born-1').attr('checked', '');
                $('#born-1').attr('disabled', 'disabled');
                $('#born-2').attr('checked', '');
                $('#born-2').attr('disabled', 'disabled');
                $('#born-3').removeAttr('disabled');
                $('#born-3').attr('checked', 'checked');

			} else if (age == 12 || age == 11) {
				$('#group-1-activities').children('input').attr('checked', '');
				$('#group-1-activities').children('input').attr('disabled', 'disabled');
				$('#group-2-activities').children('input').removeAttr('disabled');
				$('#group-3-activities').children('input').attr('checked', '');
				$('#group-3-activities').children('input').attr('disabled', 'disabled');

                $('#born-1').attr('checked', '');
                $('#born-1').attr('disabled', 'disabled');
                $('#born-2').removeAttr('disabled');
                $('#born-2').attr('checked', 'checked');
                $('#born-3').attr('checked', '');
                $('#born-3').attr('disabled', 'disabled');

			} else if (age == 10 || age == 9) {
				$('#group-1-activities').children('input').removeAttr('disabled');
				$('#group-2-activities').children('input').attr('checked', '');
				$('#group-2-activities').children('input').attr('disabled', 'disabled');
				$('#group-3-activities').children('input').attr('checked', '');
				$('#group-3-activities').children('input').attr('disabled', 'disabled');

                $('#born-1').removeAttr('disabled');
                $('#born-1').attr('checked', 'checked');
                $('#born-2').attr('checked', '');
                $('#born-2').attr('disabled', 'disabled');
                $('#born-3').attr('checked', '');
                $('#born-3').attr('disabled', 'disabled');
			} 
            else {
//				$('#group-1-activities').children('input').removeAttr('disabled');
//				$('#group-2-activities').children('input').removeAttr('disabled');
//				$('#group-3-activities').children('input').removeAttr('disabled');
				$('#group-1-activities').children('input').attr('disabled', 'disabled');
				$('#group-2-activities').children('input').attr('disabled', 'disabled');
				$('#group-3-activities').children('input').attr('disabled', 'disabled');

                $('#born-1').attr('checked', '');
                $('#born-1').attr('disabled', 'disabled');
                $('#born-2').attr('checked', '');
                $('#born-2').attr('disabled', 'disabled');
                $('#born-3').attr('checked', '');
                $('#born-3').attr('disabled', 'disabled');
			}
        });

        allGroupChecks.bind('click', function (e) {
            var otherGroupChecks = $(this).parent().siblings('.group-activities').children('input:checkbox');
            otherGroupChecks.attr('disabled', 'disabled');

            var index = $(this).parent().attr('id').split('-')[1];
            //automatically populate relay team year
            $('#born-' + index).attr('checked', 'checked');

            var n = $(this).siblings('input:checked').length;
            if ($(this).attr("checked") == false && n == 0) {
                otherGroupChecks.attr('disabled', '');
            }

            //allow only 2 track and 1 field activity, or 2 field and 1 track activity -- group 3 relay counts as 1 track
            var checkTrack = $(this).parent().children('.act-track:checked');
            var checkField = $(this).parent().children('.act-field:checked');
            var uncheckedSiblingTrack = $(this).siblings('.act-track[checked=false]');
            var uncheckedSiblingField = $(this).siblings('.act-field[checked=false]');

            //if there's at least 1 track checked, do check
            //else re-enable all  -- would only work if there's only 2 field activities
            if (checkTrack.length > 0) {
                //if there's 2 tracks checked, only allow 1 field to be checked
                //else re-enable all
                if (checkTrack.length > 1) {
                    uncheckedSiblingTrack.attr('disabled', 'disabled');
                    if (checkField.length == 1) {
                        uncheckedSiblingField.attr('disabled', 'disabled');
                    } else {
                        uncheckedSiblingField.attr('disabled', '');
                    }
                } else {
                    uncheckedSiblingTrack.attr('disabled', '');
                    uncheckedSiblingField.attr('disabled', '');
                }
                //if there's 2 fields checked, only allow 1 track to be checked
                if (checkField.length > 1) {
                    if (checkTrack.length == 1) {
                        uncheckedSiblingTrack.attr('disabled', 'disabled');
                    } else {
                        uncheckedSiblingTrack.attr('disabled', '');
                    }
                }
            } else {
                uncheckedSiblingTrack.attr('disabled', '');
                uncheckedSiblingField.attr('disabled', '');
            }
        });

        //move this locate track meet functionality
        $('#search_zip').bind('click', function () {
            var zipIn = $("input#zip").val();
            var meetType = $("#zip-radio").val();

            if (zipIn && meetType != 'select') {

                $('.track-meet .results').html('').addClass('loading');

                $("input#zip,#zip-radio").removeClass('error'); $('.red').remove();
                var data = { ZIP: zipIn, RANGEMILES: 50, EVENTTYPEID: meetType, STATEPROVINCEID: -1 };
                HERSHEYS.TrackandField.EventManagement.doWebservice('events', data);

				HERSHEYS.TrackandField.Analytics.track('findTrackByZip', {zip : data['ZIP'], type : meetType});
            } else {
                if (meetType == 'select') {
                    $('.red').remove();
                    $("#zip-radio").addClass('error').after('<span class="red">*</span>');
                } else {
                    $("#zip-radio").removeClass('error');
                    $('.red').remove();
                }
                if (zipIn == '') {
                    $("input#zip").addClass('error');
                } else {
                    $("input#zip").removeClass('error');
                }
            }

            return false;

        });
        $('#search_state').bind('click', function () {
            var stateIn = $("select#sp").val();
            var meetType = $("#sp-radio").val();

            if (stateIn && stateIn != "select" && meetType != 'select') {

                $('.track-meet .results').html('').addClass('loading');

                $("select#sp,#sp-radio").removeClass('error'); $('.red').remove();
                var data = { ZIP: -1, RANGEMILES: -1, EVENTTYPEID: meetType, STATEPROVINCEID: stateIn };
                HERSHEYS.TrackandField.EventManagement.doWebservice('events', data);

                HERSHEYS.TrackandField.Analytics.track('findTrackByState', {state : data['STATEPROVINCEID'], type : meetType});
            } else {
                if (meetType == 'select') {
                    $("#sp-radio").siblings('.red').remove();
                    $("#sp-radio").addClass('error').after('<span class="red">*</span>');
                } else {
                    $("#sp-radio").removeClass('error');
                    $("#sp-radio").siblings('.red').remove();
                }
                if (stateIn == 'select') {
                    $("select#sp").siblings('.red').remove();
                    $("select#sp").addClass('error').after('<span class="red">*</span>');
                } else {
                    $("select#sp").removeClass('error');
                    $("select#sp").siblings('.red').remove();
                }
            }

            return false;

        });

		$('#zip, #zip-radio').bind('keydown', function(event){ 
					if(event.keyCode == 13){ 	
						$('#search_zip').click(); 				
						return false; 			  
					}
		});
		$('#sp, #sp-radio').bind('keydown', function(event){ 
					if(event.keyCode == 13){ 	
						$('#search_state').click(); 				
						return false; 			  
					}
		});

        $('#submit-age').bind('click', function () {
	
			var month = $('#age-month').attr('value');
			var year  = $('#age-year').attr('value');
			var day = $('#age-day').attr('value');
		
            HERSHEYS.Services.agecheck({
                year: year,
                month: month,
                day: day,

                success: function () {
					HERSHEYS.TrackandField.Analytics.track('regInit', month + '-' + day + '-' + year);
                    $('#age-check').hide();
                    $('#registration').show();
                    $.fancybox.resize();
                    $('#fancybox-wrap').height($(window).height() - 80);
                    $('#fancybox-inner').height($('#fancybox-wrap').height() - 50);
                },
                failure: function () {
					HERSHEYS.TrackandField.Analytics.track('dobFail', month + '-' + day + '-' + year);
                    $('#age-check').hide();
                    $('#failed').removeClass('hidden').show();
                    $.fancybox.resize();
                }
            });
        });

        $('#registration-submit').bind('click', function () {
            
            //$('#missingFieldsText').remove();
            $('#incorrectFieldsText li').remove();

            var regSuccess = true;

            var fields = '<?xml version="1.0" encoding="utf-16"?><regData>';

            $("#registration input[type!=submit], #registration select").each(function () {
                var regKey = $(this).attr('id');

                if ($(this).is(':radio') || $(this).is(':checkbox')) {
                    fields = fields + '<' + regKey + '><![CDATA[' + $(this).is(':checked') + ']]></' + regKey + '>';
                } else {
                    fields = fields + '<' + regKey + '><![CDATA[' + $(this).val() + ']]></' + regKey + '>';
                }

                if (validateFields($(this))) {
                    $(this).removeClass('error');
                } else {
                    $(this).addClass('error');
                    regSuccess = false;
                }
            });

            //individual field validations have passed, validate the DOB which consists of multiple form fields...
            if(regSuccess)
            {
                if(!validateDOB($('#reg-month').val(), $('#reg-day').val(), $('#reg-year').val()))
                {
                    $('#reg-month').addClass('error');
                    $('#reg-day').addClass('error');
                    $('#reg-year').addClass('error');
                    regSuccess = false;
                }
                else
                {
                    $('#reg-month').removeClass('error');
                    $('#reg-day').removeClass('error');
                    $('#reg-year').removeClass('error');
                }
            }

            //now compare DOB to the age at end of year for the participant to make sure they match...
            if(regSuccess)
            {
                if(!compareDobToEndOfYearAge($('#reg-year').val(), $('#reg-age').val()))
                {
                    $('#reg-age').addClass('error');
                    $('#reg-month').addClass('error');
                    $('#reg-day').addClass('error');
                    $('#reg-year').addClass('error');
                    regSuccess = false;
                }
                else
                {
                    $('#reg-age').removeClass('error');
                    $('#reg-month').removeClass('error');
                    $('#reg-day').removeClass('error');
                    $('#reg-year').removeClass('error');
                }
            }

            //finally, make sure there are no issues with the selected event(s)...
            if(regSuccess)
            {
               if(!validateEventSelection())
               {
                    $('#group-container').addClass('error');
                    regSuccess = false;
               }
               else
               {
                    $('#group-container').removeClass('error');
               } 
            }

            fields += '</regData>';
            HERSHEYS.TrackandField.TrackMeet.RegistrationData = fields;

            //alert($('#incorrectFieldsText').html())

            if (regSuccess) {

                $('#registration #submit_progress').css('display', 'block');

                $('#register-pop #print_registration_form').html($('#fancybox-inner #register-pop #registration').clone().html());

                $('#fancybox-inner #register-pop #registration :input[name]').each(function () {
                    $('#register-pop #print_registration_form input[name=' + $(this).attr('name') + ']').val($(this).val());
                });

                var data = { REGISTRATIONDATA: fields, EVENTID: HERSHEYS.TrackandField.ACTIVE_REG_MEET };
                HERSHEYS.TrackandField.EventManagement.doWebservice('registration', data);
                
				//$('#missingFieldsText').remove();
                $('#incorrectFieldsText li').remove();

            }else{
//                $('#incorrectFieldsText').append("<li>Please enter all required fields.</li>");
//				if (!$('#missingFieldsText').length){
///					$('p.footnote').before('<p id="missingFieldsText" style="color: red">Please fill out all required fields.</p>');
//				}
			}
        });

        /* GREG'S REMOVING THIS BECAUSE HE THINK IT'S NO LONGER NEEDED. PLEASE DELETE IF YOU AGREE..
        $('.confirm').live('click', function () {
        clearFormElements('#registration');
        $.fancybox.close();
        $('#registration').show();
        $('#success').hide();
        }); */

    }

};

HERSHEYS.TrackandField.DrawJPLData = {

    registration: function (data) {

        if (data['RESPONSEXML']['PARAMETERS']['STATUS']) {

            if(data['RESPONSEXML']['PARAMETERS']['STATUS'] == "1")
            {
                var fields = HERSHEYS.TrackandField.TrackMeet.RegistrationData;
                HERSHEYS.TrackandField.TrackMeet.RegistrationData = '';

                HERSHEYS.Services.registercoordinatoremail({
                    location: escape($('#event-loc').html()),
                    date: $('#event-date').text(), 
                    time: $('#event-time').text(), 
                    raindate: $('#rain-date').text(), 
                    coordinatoremail: $('#coordinator-email').text(),
                    registrationdata: escape(fields), //escape because we're passing Xml; asp.net will complain otherwise
                    success: function () {
                        $('#registration #submit_progress').css('display', 'none');

			            HERSHEYS.TrackandField.Analytics.track('regComplete');

                        $('#registration').hide();
                        $('#success').removeClass('hidden').show();

                        var eventLoc = $("#event-loc").html().replace(/<\/?[^>]+>/gi, ' '),
                            rainDate,
                            eventDate = $("#event-date").text(),
                            eventTime = $("#event-time").text();
                        if ($("#rain-date")) { rainDate = '&rainDate=' + $("#rain-date").html(); }

                        $('#success .confirm-link').bind('click', function () {
                            window.print();
                            return false;
                        });
                        //$('#success .confirm-link').attr('href', '/registration-confirmation.aspx?eventLoc=' + eventLoc + '&eventDate=' + eventDate + '&eventTime=' + eventTime + rainDate);

                        $.fancybox.resize();
                    },
                    failure: function () {
                        // since this is simply sending an email to the event coordinator (registration has already occurred successfully), there's really no need to tell the user that there was an error...
                        // - instead, just perform the same actions as we do for a successful web service call (success function above)...
                        $('#registration #submit_progress').css('display', 'none');

			            HERSHEYS.TrackandField.Analytics.track('regComplete');

                        $('#registration').hide();
                        $('#success').removeClass('hidden').show();

                        var eventLoc = $("#event-loc").html().replace(/<\/?[^>]+>/gi, ' '),
                            rainDate,
                            eventDate = $("#event-date").text(),
                            eventTime = $("#event-time").text();
                        if ($("#rain-date")) { rainDate = '&rainDate=' + $("#rain-date").html(); }

                        $('#success .confirm-link').bind('click', function () {
                            window.print();
                            return false;
                        });
                        //$('#success .confirm-link').attr('href', '/registration-confirmation.aspx?eventLoc=' + eventLoc + '&eventDate=' + eventDate + '&eventTime=' + eventTime + rainDate);

                        $.fancybox.resize();

                    }
                });
            }
        } else {
            alert('There was a problem submitting your request, please try again.');
        }

    },
    events: function (data) {
        var resultsDiv = $('.results');

        if (data['EVENTXML']['EVENTS']) {
            var obj;

            //if there's more than 1 event, set object
            if (data['EVENTXML']['EVENTS']['EVENT'][0]) {
                obj = data['EVENTXML']['EVENTS']['EVENT'];
            } else {
                obj = data['EVENTXML']['EVENTS'];
            }

			var foundClosedMeet = false;

            $.each(obj, function (i, item) {
	
				var closedMeet = item['ISCLOSEDMEET'] === "0" ? false : true;
				if (closedMeet) foundClosedMeet = true;
				
				var eventTypeWrapper = resultsDiv.find('div.' + item['EVENTTYPE'].toLowerCase().replace('/', ''));
				if (!eventTypeWrapper.length)
					//eventTypeWrapper = $('<div class="event ' + item['EVENTTYPE'].toLowerCase().replace('/', '') + '">');
                    eventTypeWrapper = $('<div class="event ' + item['EVENTTYPE'].toLowerCase().replace(/\//g, '') + '">');
				
				resultsDiv.append(eventTypeWrapper);
				
                var eventList = eventTypeWrapper.append('<table class="event-' + i + '"></table><hr />'),
                    eventListdiv = $('.event-' + i),
                    eventLocation = item['FACILITY'] + '<br />' + item['ADDRESS'] + '<br />' + item['CITY'] + ', ' + item['STATEPROVINCE'].slice(0, 2) + ' ' + item['ZIP'],
                    eventDate = item['EVENTDATE'],
                    eventTime = item['EVENTTIME'],
                    rainDate;
                
                //get the coordinator's email address so we can add it as the 'email' attribute on the registration link (see below)...
                var coordinatoremail = '';
                if(item['COORDINATOREMAIL'])
                {
                    coordinatoremail = item['COORDINATOREMAIL'];
                }

                //make the table

				if (closedMeet){
					eventListdiv.append('<tr><td><span>Event Type</span></td><td><b>Closed Meet</b></td></tr>');
				}
                
                eventListdiv.append('<tr><td><span>Event Date</span></td><td>' + eventDate + '</td></tr>')
                            .append('<tr><td><span>Event Time</span></td><td>' + eventTime + '</td></tr>');
                if (item['RAINDATE']) {
                    rainDate = item['RAINDATE'].split('T')[0];
                    eventListdiv.append('<tr><td><span>Rain Date</span></td><td>' + rainDate + '</td></tr>');
                } else {
                    rainDate = '';
                }

				var description 	= item['DESCRIPTION'] ? '<tr><td><span>Description</span></td><td>' + item['DESCRIPTION'] + '</td></tr>' : '';
				var notes           = item['NOTES'] ? '<tr><td><span>Registration<br />Instructions</span></td><td>' + item['NOTES'] + '</td></tr>' : ''; 
				
				
                //eventListdiv.append('<tr><td><span>Coordinator</span></td><td>' + item['COORDINATORNAME'] + '</td></tr>')
                //            .append('<tr><td><span>Phone</span></td><td>' + item['COORDINATORPHONE'] + '</td></tr>')
                //            .append('<tr><td><span>Email</span></td><td><a href="mailto:' + item['COORDINATOREMAIL'] + '">' + item['COORDINATOREMAIL'] + '</a></td></tr>')
                //            .append('<tr><td><span>Address</span></td><td>' + eventLocation + '</td></tr>')
				//			  .append(description)
				//			  .append(notes);

                eventListdiv.append('<tr><td><span>Coordinator</span></td><td>' + item['COORDINATORNAME'] + '</td></tr>')
                            .append('<tr><td><span>Phone</span></td><td>' + item['COORDINATORPHONE'] + '</td></tr>')
                            .append('<tr><td><span>Email</span></td><td><a href="mailto:' + item['COORDINATOREMAIL'] + '">' + item['COORDINATOREMAIL'] + '</a></td></tr>')
                            .append('<tr><td><span>Address</span></td><td>' + eventLocation + '</td></tr>')
							.append(notes);

                // Get URL actual page
                var pagina = self.location.href.match( /\/([^/]+)$/ )[1];
                
                // If page is "register-for-a-track-meet.aspx"
                //if (pagina == 'register-for-a-track-meet.aspx') {
                    // Enable event
                    if (closedMeet == false){
                        //insert register button if local
                        if (item['EVENTTYPE'] == 'Local') {
                            eventListdiv.after('<a class="fancy override_leaving" href="#register-pop" eventid="' + item['ID'] + '" loc="' + eventLocation + '" date="' + eventDate + '" time="' + eventTime + '" rain="' + rainDate + '" email="' + coordinatoremail + '">Register for Event Listed Above</a>');
                        }
                    }
                //}


            });
            resultsDiv.children('.local').before('<h4>Local Meets</h4>');
            //resultsDiv.children('.stateprovince').before('<h4>State/Province/Territory Meets</h4>');
            resultsDiv.children('.stateprovterr').before('<h4>State/Province/Territory Meets</h4>');
            resultsDiv.children('.district').before('<h4>District Meets</h4>');

			if (foundClosedMeet){
				resultsDiv.prepend("<p class='closedMeetText'>Closed Meets are limited to participants within a particular group such as school fun/field days, programs with specific enrollment, or any meet restricted by local agencies/organizations. These meets are not open to the general public.</p>");
			}

            resultsDiv.removeClass('loading');
        } else {
            $('.track-meet .results').html("No events match your search!").removeClass('loading');
        }

    },
    coordinators: function (data) {
        var resultsDiv = $('.results');
       
        var result = data['COORDINATORXML']['COORDINATORS'];
        
        if (result) {

            var obj;
            var Regional;
            var State;

            //if there's more than 1 event, set object
            if (result['COORDINATOR'][0]) {
                obj = result['COORDINATOR'];
            } else {
                obj = result;
            }
			
            $.each(obj, function (i, item) {
                
                var coordAddress2;

                if (item['ADDRESS2'] == null || item['ADDRESS2'] == '' || !item['ADDRESS2']) {
                    coordAddress2 = '';
                } else {
                    coordAddress2 = item['ADDRESS2'] + '<br />';
                }
				
				var role = '';

				if (typeof item['ROLE'] != 'undefined') {
                    switch(item['ROLE']){
						case 'State/Province': role = "State/Province/Territory Chair"; break;
						case 'Regional': role = "Regional Coordinator"; break; 
					}
                }

                var coordList = resultsDiv.append('<div class="event ' + item['ROLE'].toLowerCase().replace('/', '') + '"><table class="event-' + i + '"></table></div>'),
                    coordListdiv = $('.event-' + i),
                    coordLocation = item['ADDRESS1'] + '<br />' + coordAddress2 + item['CITY'] + ', ' + item['STATEPROVINCE'].slice(0, 2) + ' ' + item['ZIP'];

                switch(role){
				    case 'State/Province/Territory Chair': 
                            State = ('<tr><td></td><td><span>' + role + '</span></td></tr>');
						    State += ('<tr><td><span>Name</span></td><td>' + item['NAME'] + '</td></tr>');
                            State += ('<tr><td><span>Email</span></td><td><a href="mailto:' + item['EMAIL'] + '">' + item['EMAIL'] + '</a></td></tr>');
                            State += ('<tr><td><span>Address</span></td><td>' + coordLocation + '</td></tr>');
                            State += ('<tr><td><span>Phone</span></td><td>' + item['PHONE'] + '</td></tr>');
                        break;
				    case 'Regional Coordinator':
                            Regional = ('<tr><td></td><td><span>' + role + '</span></td></tr>');
						    Regional += ('<tr><td><span>Name</span></td><td>' + item['NAME'] + '</td></tr>');
                            Regional += ('<tr><td><span>Email</span></td><td><a href="mailto:' + item['EMAIL'] + '">' + item['EMAIL'] + '</a></td></tr>');
                            Regional += ('<tr><td><span>Address</span></td><td>' + coordLocation + '</td></tr>');
                            Regional += ('<tr><td><span>Phone</span></td><td>' + item['PHONE'] + '</td></tr>');
                        break; 
			    }

            }
			);
				
				var coordListdiv_0 = $('.event-0'), coordListdiv_1 = $('.event-1');
                //var coordListdiv_0 = $('.event-COORDINATOR'), coordListdiv_1 = $('.event-COORDINATOR');
                //make the table
                coordListdiv_0.append(State)
				coordListdiv_1.append(Regional);

/*
I love this but it has to go as per a new layout. 
           	resultsDiv.children('.local:first').before('<h4>Local Coordinators</h4>');
            resultsDiv.children('.stateprovince:first-child').before('<h4>State/Provincial Chair</h4>');
            resultsDiv.children('.district:first-child').before('<h4>District Coordinators</h4>');
			resultsDiv.children('.district:first-child').before('<h4>Regional Coordinator</h4>');
*/
			resultsDiv.prepend('<h4>State/Province/Territory Chair</h4><br />');
            resultsDiv.removeClass('loading');
        } else {
            $('.track-meet .results').html("No events match your search!").removeClass('loading');
        }
    }
}




function clearFormElements(ele) {

    $(ele).find(':input').each(function () {
        switch (this.type) {
            case 'password':
            case 'select-multiple':
            case 'select-one':
            case 'text':
            case 'textarea':
                $(this).val('');
                break;
            case 'checkbox':
            case 'radio':
                this.checked = false;
        }
    });

}
$(document).ready(function () {

        // TRACK DOWNLOADS
	function trackOmniDownload(pDownloadType, pCategory) {
	    var s = s_gi(s_account);
	    s.templtv = s.linkTrackVars; 	//Saving the original state of the variables
	    s.templte = s.linkTrackEvents; 	//Saving the original state of the variables
	    s.linkTrackVars = "events,eVar6"; //Defining the list of variables that will be sent in the server call	
	    s.eVar6 = s.prop17 = pDownloadType + ":" + pCategory
	    s.linkTrackEvents = "event21";
	    s.events = "event21"; 	//Passing the value into s.events

	    s.tl(true, 'o', 'download'); //Server call

	    if (s.templtv) {
	        s.linkTrackVars = s.templtv; //reassigning the variables to the original state
	    }
	    if (s.templte) {
	        s.linkTrackEvents = s.templte; //reassigning the variables to the original state
	    }
	}

	$('a[href*=pdf]').attr('target', '_blank');
	$('a[href*=pdf]').bind('click', function () {
	    var title = $(this).html();
	    title = title.split('<img')[0] || $(this).attr('title') || 'Missing Link Title';

	    trackOmniDownload('PDF', title);
	});     
        
        
    if (!IS_MOBILE) {

        /* Enable leaving notice binding */
        HERSHEYS.Utility.leavingNotice({
            'transparency': HERSHEYS.transparency,
            'title': 'hersheystrackandfield.com'
        });

        $('a[href^=https://meetmanager]:not(".override_leaving")').fancybox({ 'href': '#leavingEventManager' });
        $('#leavingEventManager .leaving_stay').click(function () { $.fancybox.close(); })

        HERSHEYS.transparency.init();

    } else {
        /* Mobile initializations */
    }

    HERSHEYS.ShareThis.init();

    if ($.browser.msie && ($.browser.version < 7)) {
        DD_belatedPNG.fix('.wizard-hero,.wizard-top,.wizard-bot,.png-fix');

        //callout hover for IE6
        $(".callout li").mouseover(function () {
            $(this).addClass("over");
        }).mouseout(function () {
            $(this).removeClass("over");
        });
    }
    $('.fancyimg').fancybox({
        'padding': 25,
        'titlePosition': 'over',
        'titleFormat': function (title, currentArray, currentIndex, currentOpts) {
            return '<span id="fancybox-title-over">Image ' + (currentIndex + 1) + ' / ' + currentArray.length + ' ' + title + '</span>';
        }
    });
    $(".fancy").live('click', function () {
        var href = $(this).attr('href'),
            eventLocation = $(this).attr('loc'),
            eventTime = $(this).attr('time'),
            eventDate = $(this).attr('date'),
            rainDate = $(this).attr('rain');
            coordinatoremail = $(this).attr('email');

        HERSHEYS.TrackandField.ACTIVE_REG_MEET = $(this).attr('eventid') || null;
		HERSHEYS.TrackandField.Analytics.track('regInit', HERSHEYS.TrackandField.ACTIVE_REG_MEET);


        $.fancybox({
            'href': href,
            'padding': 25,
            'width': 510,
            'height': 'auto',
            'autoDimensions': false,
			'hideOnOverlayClick' : false,
            'onStart': function () {
                if (href) {
                    /* this will reset the age check so if someone tries to re-register for another meet, it
                    askes them again for their age */
                    $('#register-pop').children().hide();
                    $('#register-pop #age-check').removeClass('hidden').show();
                }
            },
            'onComplete': function () {
                //pre populate local meet descriptions
                if (href) {
                    if (href == '#register-pop' || href.split('#')[1] == 'register-pop') {

                        $("#event-loc").html(eventLocation);
                        $("#event-date").text(eventDate);
                        $("#event-time").text(eventTime);
                        if (rainDate) {
                            $("#rain-date").parent().show();
                            $("#rain-date").text(rainDate);
                        } else {
                            $("#rain-date").parent().hide();
                        }
                        if(coordinatoremail)
                        {
                            $("#coordinator-email").text(coordinatoremail);
                        }
                    }
                }
            }
        });

        return false;
    });
});

function validateDOB(month, day, year) {

	var isValidDate = true;
    
    if (!$('#incorrectFieldsText').length){
		$('p.footnote').before('<ul id="incorrectFieldsText" style="color: red"></ul>');
    }

    var month = parseInt(month);
    var day = parseInt(day);
    var year = parseInt(year);

    if(isNaN(month) || isNaN(day) || isNaN(year))
    {
        $('#incorrectFieldsText').append("<li>Please enter a valid date of birth for the participant.</li>");
        return false;
    }    

    var isLeapYear = false;

    if(year % 4 == 0)
    {
        if(year % 100 == 0)
        {
            if(year % 400 == 0)
            {
                isLeapYear = true;                
            }
        }
        else
        {
            isLeapYear = true;
        }
    }

    if(month < 1 || month > 12) { isValidDate = false; }

    switch(month)
    {
        case 4:
        case 6:
        case 9:
        case 11:
            if(day < 1 || day > 30) { isValidDate = false }
            break;
        case 2:
            if(isLeapYear)
            {
                if(day < 1 || day > 29) { isValidDate = false }
            }
            else
            {
                if(day < 1 || day > 28) { isValidDate = false }
            }
            break;
        default:
            if(day < 1 || day > 31) { isValidDate = false }
            break;
    }

    if(!isValidDate)
    {
        $('#incorrectFieldsText').append("<li>Please enter a valid date of birth for the participant.</li>");
        return false;
    }

    //DOB is a valid date, now check to make sure the participant will be between 9 and 14 years old this year...
    var today = new Date();
    var currentYear = today.getFullYear();

    var minYear = (currentYear - 14);
    var maxYear = (currentYear - 9);

    if(year < minYear || year > maxYear) 
    { 
        $('#incorrectFieldsText').append("<li>Participant must be between 9 and 14 years old this year.</li>");
        return false; 
    }

    return true;
}

function compareDobToEndOfYearAge(dobYear, endOfYearAge)
{
    var today = new Date();
    var currentYear = today.getFullYear();

    if(endOfYearAge != (currentYear - dobYear))
    {
        $('#incorrectFieldsText').append("<li>Participant age as of the end of the current year doesn't match the date of birth.</li>");
        return false; 
    }

    return true;
}

function validateEventSelection()
{
    //basic check to make sure at least one event was selected...
	if ($('.group-activities input:checked').length == 0) {
	    $('#group-container').addClass('error');
        //this is the event field check; only add the error message to the list once...
        if(!$("#incorrectFieldsText li:contains('Please select at least 1 event for the participant.')").length)
        {
            $('#incorrectFieldsText').append("<li>Please select at least 1 event for the participant.</li>");
        }
        return false;
	}

    return true;
}

function validateFields(field) {

	if (!$('#incorrectFieldsText').length){
		$('p.footnote').before('<ul id="incorrectFieldsText" style="color: red"></ul>');
    }

   	var value = $.trim(field.val());

	if (field.hasClass('required') && (value == "" || value == 'select')) {
        //this is the required field check; only add the error message to the list once...
        if(!$("#incorrectFieldsText li:contains('Please enter all required fields.')").length)
        {
            $('#incorrectFieldsText').prepend("<li>Please enter all required fields.</li>");
        }
	    return false;
	}

	if (field.hasClass('email') && !HERSHEYS.Utility.validate('email', value)) {
        if (field.is('#reg-email'))
        {
            $('#incorrectFieldsText').append("<li>Please enter a valid Parent/Guardian email address.</li>");
        }
        if (field.is('#reg-emailconfirm'))
        {
            $('#incorrectFieldsText').append("<li>Please enter a valid Parent/Guardian confirm email address.</li>");
        }

	    return false;
	}
	
	if (field.is('#reg-emailconfirm') && field.val().toLowerCase() !== $('#reg-email').val().toLowerCase()){
        $('#incorrectFieldsText').append("<li>Parent/Guardian email and confirm emails must match.</li>");
		return false;
	}

	if ($('input[name=tshirtsize]:checked').length < 1) {
	    $('input[name=tshirtsize]').parent().addClass('error');
		if (field.is('[name=tshirtsize]')){
			return false;
		}
	} else {
	    $('input[name=tshirtsize]').parent().removeClass('error');
	}

	if ($('input[name=reg-gender]:checked').length < 1) {
	    $('input[name=reg-gender]').parent().addClass('error');
		if (field.is('[name=reg-gender]')){
			return false;
		}
	} else {
	    $('input[name=reg-gender]').parent().removeClass('error');
	}

////TODO: timmy: probably need to add in check to make sure too many events weren't selected...
////	    if ($('.group-activities input:checked').length < 3) {
//	    if ($('.group-activities input:checked').length == 0) {
//	        $('#group-container').addClass('error');
//            //this is the event field check; only add the error message to the list once...
//            if(!$("#incorrectFieldsText li:contains('Please select at least 1 event for the participant.')").length)
//            {
//                $('#incorrectFieldsText').append("<li>Please select at least 1 event for the participant.</li>");
//            }
//            return false;
//	    } else {
//	        $('#group-container').removeClass('error');
//	    }

    if(field.is('#reg-age'))
    {
        var age = parseInt(value);
        if (isNaN(age))
        {
            $('#incorrectFieldsText').append("<li>Please enter a valid age as of the end of the current year.</li>");
            return false;                
        }
		if (age < 9 || age > 14) 
        {
            $('#incorrectFieldsText').append("<li>Participant must be between 9 and 14 years old this year.</li>");
            return false;                
        }
    }

	if (field.is('#parent-pn') || field.is('#emergency-pn')){

        var regex = /^[01]?[- .]?(\([2-9]\d{2}\)|[2-9]\d{2})[- .]?\d{3}[- .]?\d{4}$/;
        if (regex.test(value)) {
            //phone is good
        }
        else {
            if (field.is('#parent-pn'))
            {
                $('#incorrectFieldsText').append("<li>Please enter a valid Parent/Guardian phone number.</li>");
            }
            if (field.is('#emergency-pn'))
            {
                $('#incorrectFieldsText').append("<li>Please enter a valid Emergency Contact phone number.</li>");
            }
                
            return false;
        }
	}

	return true;
	
};
HERSHEYS.TrackandField.EventManagement = (function () {


    var doWebserviceCall = function (which, data) {

        var doCall = false;

        switch (which) {

            case 'events':
                /*
                EVENTTYPEID : -1 (All), 0 (Local), 1 (District) or 2 (State/Province)
                ZIP : 5-digit number or for Canadian postal codes it must be in the format A0A0A0, where A is a letter and 0 is a digit. Replace spaces if the user enters them.
                RANGEMILES: number containing only the characters 0-9 or -1 if searching by state/province.
                STATEPROVINCEID ID of a State or Province or -1 if searching by zip code. See the last page of documentation for the table of states and provinces.
                */
                var url = 'vml_events.ashx';
                doCall = true;

                break;
            case 'coordinators':
                /*
                */
                var url = 'vml_coordinators.ashx';
                doCall = true;

                break;
            case 'registration':
                /*
                EVENTTYPEID : -1 (All), 0 (Local), 1 (District) or 2 (State/Province)
                ZIP : 5-digit number or for Canadian postal codes it must be in the format A0A0A0, where A is a letter and 0 is a digit. Replace spaces if the user enters them.
                RANGEMILES: number containing only the characters 0-9 or -1 if searching by state/province.
                STATEPROVINCEID ID of a State or Province or -1 if searching by zip code. See the last page of documentation for the table of states and provinces.
                */
                
                var url = 'vml_eventregistrations.ashx';
                doCall = true;

                break;
            default:
                break;

        }

        if (doCall) {
            $.ajax({
                'url': 'https://meetmanager.hersheystrackandfield.com/services/' + url + '?SECID=vml251210',
                'dataType': 'jsonp',
                'data': data,
                success: HERSHEYS.TrackandField.DrawJPLData[which],
                error: function () { alert('We are sorry, there has been an error communicating with Event Management. Please try again later.') }
            });
        } else {
            $.error('Webservice call not being made.');
        }

    };

    return {
        doWebservice: doWebserviceCall
    }

})();

HERSHEYS.TrackandField.Analytics = {};

HERSHEYS.TrackandField.Analytics.track = function (which, data) {
  var s = s_gi(s_account);
  s.templtv = s.linkTrackVars;          /*Saving the original state of the variables*/
  s.templte = s.linkTrackEvents;         /*Saving the original state of the variables*/
    var prefix = 'hersheys:trackandfield:';
    switch (which) {
                     
            	case 'print':
			s.linkTrackVars = 'eVar36,prop26';
                        s.linkTrackEvents = 'event16';
                        s.events = "event16";
                        s.eVar36 = s.prop26 = "trackandfield:print:find a track meet registration";
                        s.tl(true,'o','print registration form');
                        
			break;
		case 'regInitDOB':
			s.events   = "event15";
			s.pageName =  prefix + 'track meet central:find a track meet:dob';
			s.prop2    =  prefix + 'track meet central';
			s.prop3    =  prefix + 'track meet central:find a track meet';
                        s.prop4  = s.prop1 = prefix + 'track meet central:find a track meet:dob';
			s.prop26   = s.eVar36 = prefix + 'find a track meet';
			s.t();
			break;
                
                case 'regInit':
                        s.events   = "event18";
			s.pageName =  prefix + 'track meet central:find a track meet:form initiation';
			s.prop2    =  prefix + 'track meet central';
			s.prop3    =  prefix + 'track meet central:find a track meet';
                        s.prop4  = s.prop1 = prefix + 'track meet central:find a track meet:form initiation';
			s.prop26   = s.eVar36 = prefix + 'find a track meet';
			s.t();
			break;
                        
		case 'regComplete':
			s.events   = "event16";
			s.pageName =  prefix + 'track meet central:find a track meet:register complete';
			s.prop2    =  prefix + 'track meet central';
			s.prop3    =  prefix + 'track meet central:find a track meet';
                        s.prop4  = s.prop1 = prefix + 'track meet central:find a track meet:register complete';
			s.prop26   = s.eVar36 = prefix + 'find a track meet';
			s.t();
			break;
		
		case 'wizard':
			
                        if (window.location.href.indexOf('/parents') != -1){
                                s.linkTrackVars = 'eVar38,prop29';
                                s.linkTrackEvents = 'event18';
                                s.events   = 'event18';
                                s.prop29   = s.eVar38 = 'hersheys:trackandfield:parents:getting started:' + data.toLowerCase();
                                s.tl(true,'o','parents asset interaction');
                        }else if (window.location.href.indexOf('/organizers/') != -1){
                                s.linkTrackVars = 'eVar38,prop29';
                                s.linkTrackEvents = 'event18';
                                s.events   = 'event18';
                                s.prop29   = s.eVar38 = 'hersheys:trackandfield:organizers:getting started:' + data.toLowerCase();
                                s.tl(true,'o','organizers asset interaction');     
                        }else if (window.location.href.indexOf('/volunteers/') != -1){
                                s.linkTrackVars = 'eVar38,prop29';
                                s.linkTrackEvents = 'event18';
                                s.events   = 'event18';
                                s.prop29   = s.eVar38 = 'hersheys:trackandfield:volunteers:getting started:' + data.toLowerCase();
                                s.tl(true,'o','volunteers asset interaction');
                         }
			break;

        case 'findCoordinator':
			s.events   = "event16";
			s.pageName =  prefix + 'organizers:find a coordinator:search results';
			s.prop2    =  prefix + 'organizers';
			s.prop3    =  prefix + 'organizers:find a coordinator';
                        s.prop4    = s.prop1  = prefix + 'organizers:find a coordinator:search results';
			s.prop26   = s.eVar36 = prefix + 'find a coordinator';
                        s.t();
                        
            break;

        case 'findTrackByZip':
			s.events   = "event16,event18";
			s.pageName =  prefix + 'track meet central:find a track meet:search results';
			s.prop2    =  prefix + 'track meet central';
			s.prop3    =  prefix + 'track meet central:find a track meet';
                        s.prop4    = s.prop1  = prefix + 'track meet central:find a track meet:search results';
			s.prop26   = s.eVar36 = prefix + 'find a track meet';
                        s.prop29   = s.eVar38 = prefix + 'find a track meet:by zip';
                        s.t();
                        
            break;
		case 'findTrackByState':
			s.events   = "event16,event18";
			s.pageName =  prefix + 'track meet central:find a track meet:search results';
			s.prop2    =  prefix + 'track meet central';
			s.prop3    =  prefix + 'track meet central:find a track meet';
                        s.prop4    = s.prop1  = prefix + 'track meet central:find a track meet:search results';
			s.prop26   = s.eVar36 = prefix + 'find a track meet';
                        s.prop29   = s.eVar38 = prefix + 'find a track meet:by state';
                        s.t();
                        
            break;
    }
}
