$(document).ready(function(){
	if ($('#tabs').length > 0) {
		$('#tabs').tabs();
	}
	tooltip.init();
	promo.init();
	racePrice.init();
	utility.init();
	menu.init();
});

var menu = {
	init: function(){
		$('#header ul#menu li ul').hide();
		$('#header ul#menu li').hover(
			function () {
				$(this).children('ul').show();
			},function(){
				$(this).children('ul').hide();
			});
	}
}

var utility = {
	 init: function(){
	    $('#newsletter').hide();
	    
	    $('#Submit').click(function() {
	        $.ajax({
                type: "POST",
                url: "/services/emailer.asmx/Subscribe",
                data: "{'email':'" + $('#Email').val() + "'}",
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                success: function(result){
                    $('#info').removeClass('hidden');
                    $('#info').append('<li>' + result + '</li>');
	                $('#Email').val('');
                },
                error: function(xhr, status, error){
                    var err = eval("(" + xhr.responseText + ")");
                    alert(err.Message)
                }
            });
	    });
	    
		utility.showNewsletter();
	},
	
	popupGreybox: function(title, url){
		GB_showFullScreen(title, url);
	},

	stripNonNumeric: function(str){
		str += '';
		var rgx = /^\d|\.|-$/;
		var out = '';
		for(var i = 0; i < str.length; i++){
			if(rgx.test(str.charAt(i))){
				if(!((str.charAt(i) == '.' && out.indexOf( '.' ) != -1) ||
					(str.charAt(i) == '-' && out.length != 0))){
					out += str.charAt(i);
				}
			}
		}
		return out;
	},
	
	showNewsletter: function(){
		$('#newsletterPopup').click(function(){
			$('#overlay').remove();
			//var width = $('body').width();
//			$('#overlay').height($('body').get(0).scrollHeight + 'px');
//			$('#overlay').remove();
//			var tellAFriendWidth = $('#newsletter').width();
//			var left = (width - tellAFriendWidth) / 2;
//			$('#newsletter').css('left', left);
			$('#newsletter').show();

			var overlay = '<div id="overlay" class="ui-widget-overlay" style="z-index: 250;"/>'
			$('body').append(overlay);
			$('html,body')({
				scrollTop: 0
			});


			return false;
		})

		$('#newsletter #closeNewsletter').click(function(){
			$('#newsletter').hide();
			$('#overlay').remove();
			return false;
		})
	},
	
	showMovie: function(){
		$('#loadMoviePopup').click(function(){
			$('#overlay').remove();
			var width = $('body').width();
			$('#overlay').height($('body').get(0).scrollHeight + 'px');
			$('#overlay').remove();
			var tellAFriendWidth = $('#moviePopup').width();
			var left = (width - tellAFriendWidth) / 2;
			$('#moviePopup').css('left', left);
			$('#moviePopup').show();

			var overlay = '<div id="overlay" class="ui-widget-overlay" style="z-index: 250;"/>'
			$('body').append(overlay);
			$('html,body').animate({
				scrollTop: 0
			}, 1000);


			return false;
		})

		$('#moviePopup #closeMoviePopup').click(function(){
			$('#moviePopup').hide();
			$('#overlay').remove();
			return false;
		})
	},
	
	faq:  function(){
		$('.faq dd').hide();
		$('.faq dt').click(function(){
			$(this).next('dd').toggle();
		})
	}
}

var rotateBanner = {
	totalRaces: 0,
	currentMarker: 0,
	currentBanner: 0,
	
	init: function(){
		rotateBanner.totalRaces = races.length;
		$('#banner h1 a').text(races[0].name);
		$('#banner h2').text(races[0].location);
		$('#banner h1 a').attr('href', races[0].url);
		if (races[0].begin == races[0].end) {
			$('#banner span').text(races[0].begin);
		}
		else {
			$('#banner span').text(races[0].begin + ' - ' + races[0].end);
		}
		$('#banner img').attr('src', races[0].imageurl);
		rotateBanner.rotate();
	},
	
	rotate: function(){
		if (rotateBanner.totalRaces > 1) {
			setInterval(function(){
				rotateBanner.updateBanner();
			}, 6000);
		}
	},
	
	updateBanner: function(){
		rotateBanner.currentMarker = rotateBanner.currentMarker + 1;
		rotateBanner.currentBanner = rotateBanner.currentBanner + 1;
		
		if (rotateBanner.currentMarker >= rotateBanner.totalRaces) {
			rotateBanner.currentMarker = 0;
		}
		
		/*if(rotateBanner.currentBanner >= rotateBanner.totalBanners){
		 rotateBanner.currentBanner = 0;
		 }*/
		$('#banner h1 a').text('');
		$('#banner span').text('');
		
		$('#banner img').fadeOut('fast', function(){
			if (races[rotateBanner.currentMarker].imageurl == '') {
				$(this).attr('src', '/webresources/images/banner0.jpg');
			}
			else {
				$(this).attr('src', races[rotateBanner.currentMarker].imageurl);
			}
			
			$(this).fadeIn('slow');
			$('#banner h1 a').text(races[rotateBanner.currentMarker].name);
			$('#banner h1 a').attr('href', races[rotateBanner.currentMarker].url);
			$('#banner h2').text(races[rotateBanner.currentMarker].location);
			if (races[rotateBanner.currentMarker].begin == races[rotateBanner.currentMarker].end) {
				$('#banner span').text(races[rotateBanner.currentMarker].begin);
			}
			else {
				$('#banner span').text(races[rotateBanner.currentMarker].begin + ' - ' + races[rotateBanner.currentMarker].end);
			}
		});
	}
}

var pageTasks = {
	sameShippingAddress: function(){
		$('#sameShippingAddress').click(function(){
			if ($(this).attr('checked')) {
				$('#ctl00_ContentPlaceHolder1_ccName').attr('value', $('#ctl00_ContentPlaceHolder1_firstName').attr('value') + ' ' + $('#ctl00_ContentPlaceHolder1_lastName').attr('value'));
				$('#ctl00_ContentPlaceHolder1_ccAddress').attr('value', $('#ctl00_ContentPlaceHolder1_address').attr('value'));
				$('#ctl00_ContentPlaceHolder1_ccCity').attr('value', $('#ctl00_ContentPlaceHolder1_city').attr('value'));
				$('#ctl00_ContentPlaceHolder1_ccStateList').val($('#ctl00_ContentPlaceHolder1_stateList').val());
				$('#ctl00_ContentPlaceHolder1_ccZipCode').attr('value', $('#ctl00_ContentPlaceHolder1_zipCode').attr('value'));
			}
			else {
				$('#ctl00_ContentPlaceHolder1_ccName').attr('value', '');
				$('#ctl00_ContentPlaceHolder1_ccAddress').attr('value', '');
				$('#ctl00_ContentPlaceHolder1_ccCity').attr('value', '');
				$('#ctl00_ContentPlaceHolder1_ccStateList').val(0);
				$('#ctl00_ContentPlaceHolder1_ccZipCode').attr('value', '');
			}
		})
	},
	
	sameShoppingShippingAddress: function(){
		$('#sameShoppingShippingAddress').click(function(){
			if ($(this).attr('checked')) {
				$('#ctl00_ContentPlaceHolder1_Name').attr('value', $('#ctl00_ContentPlaceHolder1_FirstName').attr('value') + ' ' + $('#ctl00_ContentPlaceHolder1_LastName').attr('value'));
				$('#ctl00_ContentPlaceHolder1_SAddress1').attr('value', $('#ctl00_ContentPlaceHolder1_Address1').attr('value'));
				$('#ctl00_ContentPlaceHolder1_SAddress2').attr('value', $('#ctl00_ContentPlaceHolder1_Address2').attr('value'));
				$('#ctl00_ContentPlaceHolder1_SCity').attr('value', $('#ctl00_ContentPlaceHolder1_City').attr('value'));
				$('#ctl00_ContentPlaceHolder1_SStatelist').val($('#ctl00_ContentPlaceHolder1_StateList').val());
				$('#ctl00_ContentPlaceHolder1_SZip').attr('value', $('#ctl00_ContentPlaceHolder1_PostalCode').attr('value'));
			}
			else {
				$('#ctl00_ContentPlaceHolder1_Name').attr('value', '');
				$('#ctl00_ContentPlaceHolder1_SAddress1').attr('value', '');
				$('#ctl00_ContentPlaceHolder1_SAddress2').attr('value', '');
				$('#ctl00_ContentPlaceHolder1_SStatelist').val(0);
				$('#ctl00_ContentPlaceHolder1_SCity').attr('value', '');
				$('#ctl00_ContentPlaceHolder1_SZip').attr('value', '');
			}
		})
	},
	
	deactivateSubmitButton: function(){
		$('.submit').click(function(){
			$('.submit').css('display', 'none');
			$('#loader').removeClass('hidden');
		})
	}
}

var tooltip = {
	init: function(){
		$('.popup').click(function(){
			var id = $(this).attr('rel');
			$('#' + id).dialog({
				title: $(this).attr('title'),
				bgiframe: true,
				modal: true,
				closeOnEscape: true,
				overlay: {
					backgroundColor: '#000000',
					opacity: 0.5
				},
				buttons: {
					Cancel: function(){
						$(this).dialog('close');
					}
				}
			});
			$('#' + id).dialog('open');
		})
	}
}


var eventGallery = {
	page: 0,
	totalImages: 0,
	totalPages: 0,
	currentMarker: 0,
	
	init: function(){
		if ($('#galleryPreview').length > 0) {
			eventGallery.setFirstImage();
			eventGallery.activateThumbnails();
			eventGallery.paging();
			eventGallery.totalImages = $('#thumbnail ul img').length;
			eventGallery.totalPages = Math.ceil(eventGallery.totalImages / 6);
			$('.count').text('1 of ' + eventGallery.totalImages);
		}
	},
	
	setFirstImage: function(){
		var thumbPath = $('#thumbnail ul img:first').attr('src');
		var alt = $('#thumbnail ul img:first').attr('alt')
		$('#loader').css('display', '');
		eventGallery.loadImage(thumbPath, alt);
		eventGallery.checkPagingLinks();
	},
	
	checkPagingLinks: function(){
		if (eventGallery.page == 0) {
			$('#thumbnail #previous').addClass('disabled');
		}
		else if (eventGallery.page == eventGallery.totalPages - 1) {
			$('#thumbnail #next').addClass('disabled');
		}
		else {
			$('#thumbnail #previous').removeClass('disabled');
			$('#thumbnail #next').removeClass('disabled');
		}
	},
	
	paging: function(){
		$('#next').click(function(){
			var okToPage = eventGallery.getPagingStatus('next');
			if (okToPage) {
				$('#thumbnail ul').css('display', 'none');
				var currentTop = $('#thumbnail ul').css('top');
				var newTop = parseInt(currentTop) - 220;
				eventGallery.page = eventGallery.page + 1;
				eventGallery.checkPagingLinks();
				$('#thumbnail ul').css('top', newTop + 'px');
				$('#thumbnail ul').show('drop', {
					direction: 'down'
				}, 500);
			}
			return false;
		})
		$('#previous').click(function(){
			var okToPage = eventGallery.getPagingStatus('previous');
			if (okToPage) {
				eventGallery.page = eventGallery.page - 1;
				eventGallery.checkPagingLinks();
				$('#thumbnail ul').css('display', 'none');
				var currentTop = $('#thumbnail ul').css('top');
				var newTop = parseInt(currentTop) + 220;
				
				$('#thumbnail ul').css('top', newTop + 'px');
				$('#thumbnail ul').show('drop', {
					direction: 'up'
				}, 500);
			}
			return false;
		})
	},
	
	getPagingStatus: function(direction){
		if (direction == 'next') {
			if (eventGallery.page < (eventGallery.totalPages - 1)) {
				return true;
			}
		}
		else if (direction == 'previous') {
			if (eventGallery.page > 0) {
				return true;
			}
		}
		
	},
	
	activateThumbnails: function(){
		$('#thumbnail ul').click(function(event){
			var target = $(event.target);
			if ($(target).attr('nodeName').toLowerCase() == 'a') {
				target = $('img', target);
				event.preventDefault();
			}
			if ($(target).attr('nodeName').toLowerCase() == 'img') {
				var thumbPath = $(target).attr('src');
				var alt = $(target).attr('alt');
				$('#preview img:eq(1)').fadeOut('fast', function(){
					$('#loader').css('display', '');
				})
				eventGallery.currentMarker = $('#thumbnail ul img').index(target);
				eventGallery.loadImage(thumbPath, alt);
				return false;
			}
			
		})
	},
	
	loadImage: function(thumbPath, alt){
		$('#preview img:eq(1)').fadeOut('fast', function(){
			$(this).remove();
		})
		var mediumPath = thumbPath.replace(/thumb/, 'medium')
		var img = new Image();
		$(img).load(function(){
			$(this).hide();
			$(this).fadeIn('slow', function(){
			
				$('#preview #loader').after(img);
				var imageWidth = $(this).width();
				var left = (700 - imageWidth) / 2;
				$('#preview p:first').text(alt);
				//$('#preview p').fadeIn('fast');
				$('.count').text(eventGallery.currentMarker + 1 + ' of ' + eventGallery.totalImages);
				$('#preview img:eq(1)').css('margin-left', left);
				$('#loader').css('display', 'none');
			})
		}).attr('src', mediumPath);
	}
}


var account = {
	statusMessage: '',
	
	init: function(){
		account.getSideBar();
		account.getUpcomingEvents();
		account.updateMessage();
	},
	
	updateMessage: function(){
		if (account.statusMessage != '') {
			$('#statusMessage').css('display', '');
			$('#statusMessage').html(account.statusMessage);
		}
	},
	
	getSideBar: function(){
		$.ajax({
			type: "POST",
			url: "/services/userinfo.asmx/GetSideBar",
			data: "{}",
			contentType: "application/json; charset=utf-8",
			dataType: "json",
			success: function(result){
				account.populateSideBar(result);
			},
			error: function(xhr, status, error){
				var err = eval("(" + xhr.responseText + ")");
				alert(err.Message)
			}
		});
	},
	
	populateSideBar: function(userInfo){
		$('#myLogin').html(userInfo.Email);
		$('#myNumber').html(userInfo.MemberNumber);
		$('#myExpDate').html(userInfo.MemberExpDate);
		$('#myDivision').html(userInfo.DefaultDivision);
		$('#myClass').html(userInfo.DefaultClass);
	},
	
	getUpcomingEvents: function(){
		$.ajax({
			type: "POST",
			url: "/services/userinfo.asmx/GetUpcomingEvents",
			data: "{'pageNumber':'1','pageSize':'100'}",
			contentType: "application/json; charset=utf-8",
			dataType: "json",
			success: function(result){
				account.populateEvents(result);
			},
			error: function(xhr, status, error){
				var err = eval("(" + xhr.responseText + ")");
				alert(err.Message)
			}
		});
	},
	
	populateEvents: function(userEvents){
		if (userEvents.length == 0) {
			$('#upcomingEvents').css('display', 'none');
			$('#noEvents').css('display', '');
		}
		else {
			$('#upcomingEvents').css('display', '');
			$('#noEvents').css('display', 'none');
			$('#upcomingEvents tbody tr').remove();
			for (var i = 0; i < userEvents.length; i++) {
				var html = '';
				var href = '<a href="/races/' + userEvents[i].SeasonName + '/' + userEvents[i].Slug + '.aspx" title="' + userEvents[i].Name + '">' + userEvents[i].Name + '</a>';
				var reg = '';
				
				if (userEvents[i].IsRegistered) {
					reg = 'Registered';
				}
				else {
					reg = '<a href="/races/' + userEvents[i].SeasonName + '/' + userEvents[i].Slug + '/Register.aspx" title="Register for' + userEvents[i].Name + '">Register</a>';
				}
				
				html += (i % 2 == 0 ? '<tr class="alt">' : '<tr>');
				html += '<td>' + href + '</td>';
				html += '<td>' + userEvents[i].EventDate + '</td>';
				html += '<td>' + userEvents[i].Location + '</td>';
				html += '<td>' + reg + '</td>';
				html += '</tr>';
				
				$('#upcomingEvents tbody').append(html);
			}
		}
	},

	forgot: function(){
		account.submitEmail();
		$('.forgot').click(function(){
			$('#forgot').dialog({
				title: 'Retrieve your password',
				bgiframe: true,
				modal: true,
				closeOnEscape: true,
				overlay: {
					backgroundColor: '#000000',
					opacity: 0.5
				}
			});
			$('#forgot').dialog('open');
			return false;
		})       
	},

	submitEmail: function(){
		$('#submitForgot').click(function(){
			$.ajax({
				type: "POST",
				url: "/services/userinfo.asmx/SendPassword",
				data: "{'email':'" + $('#email').attr('value') + "'}",
				contentType: "application/json; charset=utf-8",
				dataType: "json",
				success: function(result){
					if(result){
						$('#forgot').dialog('close');
						$('#email').attr('value', '');
						$('#details h1').after('<ul class="information"><li>You password has been sent to the email account you entered.</li></ul>')
					}
					else{
						$('#forgot .form').before('<ul><li>The email you entered was not found in our system.</li></ul>');
					}
				},
				error: function(xhr, status, error){
					var err = eval("(" + xhr.responseText + ")");
					alert(err.Message)
				}
			});
			return false;
		})

		
	}
}

var raceList = {
	currentPage: 1,
	lastPage: 1,
	column: 'Gender',
	direction: 'Asc',
	raceDate: '',
	showHotelTab: true,
	showPrizeTab: true,
	
	init: function(){
		if (!raceList.showHotelTab) {
			$('#hotelTab').hide();
		}
		
		if (!raceList.showPrizeTab) {
			$('#prizeTab').hide();
		}
		
		raceList.getRacerCount();
	},
	
	getRacerCount: function(){
		$.ajax({
			type: "POST",
			url: "/services/raceinfo.asmx/GetRacerCount",
			data: "{'raceKey':'" + raceList.key + "'}",
			contentType: "application/json; charset=utf-8",
			dataType: "json",
			success: function(result){
				$('#totalEntrants').text(result);
				raceList.populateRacerCount(result);
			},
			error: function(xhr, status, error){
				var err = eval("(" + xhr.responseText + ")");
				alert(err.Message)
			}
		});
	},
	
	populateRacerCount: function(count){
		var currentDate = new Date();
				
		if (count >= 25) {
			raceList.getRacers(raceList.currentPage);
		}
		else {
			$('#entry_tab .pager').css('display', 'none');
			$('#entry_tab #raceEntrants').css('display', 'none');
			$('#entry_tab').append('<p>Race list is coming soon.</p>');
			$('#paging').css('display', 'none');
		}
		if(raceList.maxEntrants != 0 && currentDate < raceList.raceDate){
			var nearFull = 0.8 * raceList.maxEntrants;
			if(count >= nearFull){
				$('#nearlyFull').removeClass('hidden');
			}
		}        
	},
	
	pageRacers: function(elem, pageNumber){
		if (!$(elem).hasClass('disabled')) {
			raceList.getRacers(pageNumber)
		}
	},
	
	viewAllRacers: function(){
		if ($('#paging').hasClass('all')) {
			$('#paging').removeClass('all').addClass('page');
			$.ajax({
				type: "POST",
				url: "/services/raceinfo.asmx/GetAllRacers",
				data: "{'raceKey':'" + raceList.key + "', 'sortColumn':'" + raceList.column + "', 'sortDirection':'" + raceList.direction + "'}",
				contentType: "application/json; charset=utf-8",
				dataType: "json",
				success: function(result){
					raceList.populateRacers(result);
					$('.pager').css('visibility', 'hidden');
					
				},
				error: function(xhr, status, error){
					var err = eval("(" + xhr.responseText + ")");
					alert(err.Message)
				}
			});
			
		}
		else {
			$('#paging').removeClass('page').addClass('all');
			raceList.getRacers(1);
			$('.pager').css('visibility', 'visible');
		} 
	},
	
	getRacers: function(pageNumber){
		raceList.currentPage = pageNumber;
		$.ajax({
			type: "POST",
			url: "/services/raceinfo.asmx/GetRacers",
			data: "{'raceKey':'" + raceList.key + "', 'pageSize':'5', 'pageNumber':'" + pageNumber + "', 'sortColumn':'" + raceList.column + "', 'sortDirection':'" + raceList.direction + "'}",
			contentType: "application/json; charset=utf-8",
			dataType: "json",
			success: function(result){
				raceList.populateRacers(result);
			},
			error: function(xhr, status, error){
				var err = eval("(" + xhr.responseText + ")");
				alert(err.Message)
			}
		});
		
		$.ajax({
			type: "POST",
			url: "/services/raceinfo.asmx/GetRacerPageCount",
			data: "{'raceKey':'" + raceList.key + "', 'pageSize':'5'}",
			contentType: "application/json; charset=utf-8",
			dataType: "json",
			success: function(result){
				raceList.populateCount(result)
			},
			error: function(xhr, status, error){
				var err = eval("(" + xhr.responseText + ")");
				alert(err.Message)
			}
		});
	},
	
	populateRacers: function(items){
		$('#raceEntrants tbody tr').remove();
		
		if (items.length > 0) {
			var html = '';
			
			for (var i = 0; i < items.length; i++) {
				if (i % 2 == 0) {
					html += '<tr>';
				}
				else {
					html += '<tr class="alt">';
				}
				
				html += '<td>' + items[i].FullName + '</td>';
				html += '<td>' + items[i].ClassName + '</td>';
				html += '<td>' + items[i].Gender + '</td>';
				html += '<td>' + items[i].Age + '</td>';
				html += '</tr>';
			}
			
			$('#raceEntrants tbody').append(html);
		}
	},
	
	populateCount: function(result){
		$('#pageList option').remove();
		for (var i = 1; i <= result; i++) {
			var html = '<option value="' + i + '">' + i + '</option>';
			$('#pageList').append(html);
		}
		$('#pageList').val(raceList.currentPage);
		
		raceList.lastPage = result;
		if (raceList.currentPage == 1) {
			$('#firstPage').attr('class', 'disabled');
			$('#prevPage').attr('class', 'disabled');
		}
		else {
			$('#firstPage').attr('class', '');
			$('#prevPage').attr('class', '');
		}
		
		if (raceList.currentPage == raceList.lastPage) {
			$('#lastPage').attr('class', 'disabled');
			$('#nextPage').attr('class', 'disabled');
		}
		else {
			$('#lastPage').attr('class', '');
			$('#nextPage').attr('class', '');
		}
	},
	
	sortProducts: function(name){
		raceList.column = name;
		if (raceList.direction == 'Desc') {
			raceList.direction = 'Asc';
		}
		else {
			raceList.direction = 'Desc';
		}
		
		raceList.getRacers(raceList.currentPage);
	}
}

var loginUtility = {
	init: function(){
		loginUtility.getStatus();
		loginUtility.getCart();

	},
	
	getCart: function(){
		$.ajax({
			type: "POST",
			url: "/services/userinfo.asmx/GetCart",
			data: "{}",
			contentType: "application/json; charset=utf-8",
			dataType: "json",
			success: function(result){
				loginUtility.populateCart(result);
			},
			error: function(xhr, status, error){
				var err = eval("(" + xhr.responseText + ")");
				alert(err.Message)
			}
		});
	},
	
	populateCart: function(cart){
		if (cart != 0) {
			$('#cart').append($('<li><a href="/cart/">Items in Cart: ' + cart + '</a></li>'));
		}
	},
	
	getStatus: function(){
		$.ajax({
			type: "POST",
			url: "/services/userinfo.asmx/GetLoginStatus",
			data: "{}",
			contentType: "application/json; charset=utf-8",
			dataType: "json",
			success: function(result){
				loginUtility.populateLogin(result);
			},
			error: function(xhr, status, error){
				var err = eval("(" + xhr.responseText + ")");
				alert(err.Message)
			}
		});
	},
	
	populateLogin: function(firstName){
		$('#utility li').remove();
		
		if (firstName.length != 0) {
			$('#utility').append($('<li class=name></li>').text('Welcome ' + firstName));
			$('#utility').append($('<li></li>').html('<a href="/account" title="My Account">My Account</a>'));
			$('#utility').append($('<li></li>').html('<a href="/signout.aspx" title="Logout">Logout</a>'));
		}
		else {
			$('#utility').append($('<li></li>').html('<a href="/signin.aspx" title="Login">Login</a>'));
		}

		//just check for the free stuff
		
		if(validation.checkEvent == true){
			validation.checkEventType();
		}
	}
}


var validation = {
	init: function() {
		$('.required').blur(function() {
			validation.nonempty($(this));
		})
		
		$('.email').blur(function() {
			validation.email($(this));
		})
		
		$('.zipcode').blur(function() {
			validation.zipcode($(this));
		})
		
		$('.selection').blur(function() {
			validation.selection($(this));
		})
				
		$('.creditCard').blur(function() {
			validation.creditCard($(this));
		});

		/*$('.expMonth').blur(function(){
		validation.expirationMonth($(this));
		})
		$('.expYear').blur(function(){
		validation.expirationYear($(this));
		})
		 */
		var numIssues = validation.submit_form();
		if (numIssues > 0) {
			return false;
		}
		else {
			return true;
		}
	},

	email: function(elem) {
		var re = /^(([a-zA-Z0-9_\-\.]+)@([a-zA-Z0-9_\-\.]+)\.([a-zA-Z]{2,5}){1,25})+([;.](([a-zA-Z0-9_\-\.]+)@([a-zA-Z0-9_\-\.]+)\.([a-zA-Z]{2,5}){1,25})+)*$/;
		var result = re.exec($(elem).attr('value'));
		if (result == null) {
			validation.clear(elem);
			$(elem).addClass('issue')
			$(elem).after('<span class="message">You need to include a valid email</span>')

		}
		else {
			if ($('#utility li.name').length == 0) {
				$.ajax({
					type: "POST",
					url: "/services/userinfo.asmx/CheckEmail",
					data: "{'email':'" + $(elem).attr('value') + "'}",
					contentType: "application/json; charset=utf-8",
					dataType: "json",
					success: function(result){
						if(result){
							$(elem).after('<span class="message">This email has already been registered as a member</span>')
						}
						else{
							validation.clear(elem);
						}
					},
					error: function(xhr, status, error){
						var err = eval("(" + xhr.responseText + ")");
						alert(err.Message)
					}
				})
			}
			
		}

	},

	zipcode: function(elem) {
		var re = /^\d{5}(-\d{4})?$/;
		var result = re.exec($(elem).attr('value'));
		if (result == null && $(elem).is(':enabled')) {
			validation.clear(elem);
			$(elem).addClass('issue')
			$(elem).after('<span class="message">You need to include a valid zipcode</span>')
		}
		else {
			validation.clear(elem);
		}
	},

	nonempty: function(elem) {
		if ($(elem).attr('value') == '' && $(elem).is(':enabled')) {
			validation.clear(elem);
			$(elem).addClass('issue')
			$(elem).after('<span class="message">This field cannot be empty</span>')
		}
		else {
			validation.clear(elem);
		}
	},

	selection: function(elem) {
		if ($(elem).val() == 0 && $(elem).is(':enabled')) {
			validation.clear(elem);
			$(elem).addClass('issue')
			$(elem).after('<span class="message">You need to make a selection.</span>')
		}
		else {
			validation.clear(elem);
		}
	},

	terms: function(elem) {
		if ($('input', elem).attr('checked') == true) {
			$('input', elem).attr('checked', 'checked');
			validation.clear(elem);
		}
		else {
			$('input', elem).attr('checked', '');
			validation.clear(elem);
			$(elem).addClass('issue')
			$(elem).parent('label').after('<span class="message">You need to agree to the waiver before continuing.</span>')
		}
	},

	creditCard: function(elem) {
		var ccNumb = $(elem).attr('value');
		var valid = "0123456789" // Valid digits in a credit card number
		var len = ccNumb.length; // The length of the submitted cc number
		var iCCN = parseInt(ccNumb); // integer of ccNumb
		var sCCN = ccNumb.toString(); // string of ccNumb
		sCCN = sCCN.replace(/^s+|s+$/g, ''); // strip spaces
		var iTotal = 0; // integer total set at zero
		var bNum = true; // by default assume it is a number
		var bResult = false; // by default assume it is NOT a valid cc
		var temp; // temp variable for parsing string
		var calc; // used for calculation of each digit
		for (var j = 0; j < len; j++) {
			temp = "" + sCCN.substring(j, j + 1);
			if (valid.indexOf(temp) == "-1") {
				bNum = false;
			}
		}
		if (!bNum) {
			bResult = false;
		}
		if ((len == 0) && (bResult)) {
			bResult = false;
		}
		else {
			if (len >= 15) {
				for (var i = len; i > 0; i--) { // LOOP throught the digits of the card
					calc = parseInt(iCCN) % 10; // right most digit
					calc = parseInt(calc); // assure it is an integer
					iTotal += calc; // running total of the card number as we loop - Do Nothing to first digit
					i--; // decrement the count - move to the next digit in the card
					iCCN = iCCN / 10; // subtracts right most digit from ccNumb
					calc = parseInt(iCCN) % 10; // NEXT right most digit
					calc = calc * 2; // multiply the digit by two
					switch (calc) {
						case 10:
							calc = 1;
							break; //5*2=10 & 1+0 = 1
						case 12:
							calc = 3;
							break; //6*2=12 & 1+2 = 3
						case 14:
							calc = 5;
							break; //7*2=14 & 1+4 = 5
						case 16:
							calc = 7;
							break; //8*2=16 & 1+6 = 7
						case 18:
							calc = 9;
							break; //9*2=18 & 1+8 = 9
						default:
							calc = calc; //4*2= 8 &   8 = 8  -same for all lower numbers
					}
					iCCN = iCCN / 10;
					iTotal += calc;
				}
				if ((iTotal % 10) == 0) {
					bResult = true;
				}
				else {
					bResult = false;
				}
			}
		}
		//if ($('#registrationFee').text().toLowerCase() != 'free' && $('#registrationFee').text().toLowerCase() != '$0.00') {
		
		if (!bResult && $(elem).is(':enabled')) {
			validation.clear(elem);
			$(elem).addClass('issue');
			$(elem).after('<span class="message">You need to use a valid credit card.</span>')
		}
		else {
			validation.clear(elem);
		}
	},

	expirationMonth: function(elem) {
		var expMonth = $(elem).val();
		var expYear = $('.expYear').val();
		validation.expiration(expMonth, expYear);
	},

	expirationYear: function(elem) {
		var expMonth = $('.expMonth').val();
		var expYear = $(elem).val();
		validation.expiration(expMonth, expYear);
	},

	expiration: function(expMonth, expYear) {
		var date = new Date();
		var month = date.getMonth() + 1;
		var year = date.getFullYear();
		if ((expMonth < month) && (expYear < year)) {
			validation.clear(elem);
			$(elem).addClass('issue');
			$(elem).after('<span class="message">You need to use a valid credit card.</span>')
		}
	},

	clear: function(elem) {
		$(elem).removeClass('issue');
		$(elem).next('.message').remove();
		$(elem).parent('label').next('.message').remove();
	},

	submit_form: function() {
		$('.form input, .form textarea, .form select').trigger('blur');
		validation.terms($('.terms'));

		validation.checkEventType();

		var issues = $('.form .issue').length;
		if (issues != 0) {
			$('.form .issue:eq(0)').focus();
			return issues;
		}
		else {
			return 0;
		}
	},

	checkEventType: function() {
		if ($('#utility li.name').length > 0) {
			$('#loginInfo').hide();
			if($('.buyMisc input').length > 0){
				if($('.buyMisc input').attr('checked')){
					if ($('#registrationFee').text().toLowerCase() == 'free' || $('#registrationFee').text().toLowerCase() == '0.00') {
						$('#formRaceFee .required, #formRaceFee .email, #formRaceFee .zipcode, #formRaceFee .creditCard, #formRaceFee .selection').removeAttr('disabled');
						$('#formRaceFee .required, #formRaceFee .email, #formRaceFee .zipcode, #formRaceFee .creditCard, #formRaceFee .selection').removeClass('disabled');
					}
				}
				else{
					if ($('#registrationFee').text().toLowerCase() == 'free' || $('#registrationFee').text().toLowerCase() == '0.00') {
						$('#formRaceFee .required, #formRaceFee .email, #formRaceFee .zipcode, #formRaceFee .creditCard, #formRaceFee .selection').attr('disabled', 'disabled');
						$('#formRaceFee .required, #formRaceFee .email, #formRaceFee .zipcode, #formRaceFee .creditCard, #formRaceFee .selection').addClass('disabled');
					}                
				}
			}
			else{
				if ($('#registrationFee').text().toLowerCase() == 'free' || $('#registrationFee').text().toLowerCase() == '0.00') {
					$('#formRaceFee .required, #formRaceFee .email, #formRaceFee .zipcode, #formRaceFee .creditCard, #formRaceFee .selection').attr('disabled', 'disabled');
					$('#formRaceFee .required, #formRaceFee .email, #formRaceFee .zipcode, #formRaceFee .creditCard, #formRaceFee .selection').addClass('disabled');
				}
			}
		}
	}
}

var raceMetadata = {
	defaultDivision: 0,
	defaultClass: 0,

	init: function() {
		raceMetadata.defaultDivision = $('#ctl00_ContentPlaceHolder1_defaultDivision').attr('value');
		raceMetadata.defaultClass = $('#ctl00_ContentPlaceHolder1_defaultClass').attr('value');
		raceMetadata.setupEvents();
		raceMetadata.getDivisions();
		raceMetadata.buyMisc();
		
		//hackish way to set the first element that is not the select to be preselected for event registration
		setTimeout(function() {
			if (raceMetadata.selectFirst === true) {
				var secondOption = $('.divisionList option:eq(1)').attr('value');
				if (typeof (secondOption) !== 'undefined') {
					$('.divisionList').val(secondOption);
					$('.divisionList').trigger('change');
				}
			}

		}, 1000)

		if ($('#utility li.name').length > 0) {
			$('#loginInfo').hide();
		}

		if($('#ctl00_ContentPlaceHolder1_miscFee').length > 0){
			var miscFee = $('#ctl00_ContentPlaceHolder1_miscFee').attr('value');

			if(miscFee == "$0.00"){
				$('#misc').hide();
			}
		}
		
	},


	buyMisc: function(){
		$('.buyMisc input').click(function(){
			if($(this).attr('checked')){
				if ($('#registrationFee').text().toLowerCase() == 'free' || $('#registrationFee').text().toLowerCase() == '0.00') {
					$('#formRaceFee .required, #formRaceFee .email, #formRaceFee .zipcode, #formRaceFee .creditCard, #formRaceFee .selection').removeAttr('disabled');
					$('#formRaceFee .required, #formRaceFee .email, #formRaceFee .zipcode, #formRaceFee .creditCard, #formRaceFee .selection').removeClass('disabled');
				}
			}
			else{
				if ($('#registrationFee').text().toLowerCase() == 'free' || $('#registrationFee').text().toLowerCase() == '0.00') {
					$('#formRaceFee .required, #formRaceFee .email, #formRaceFee .zipcode, #formRaceFee .creditCard, #formRaceFee .selection').attr('disabled', 'disabled');
					$('#formRaceFee .required, #formRaceFee .email, #formRaceFee .zipcode, #formRaceFee .creditCard, #formRaceFee .selection').addClass('disabled');
				}
			}
		})
	},

	getDivisions: function() {
		if (raceMetadata.raceKey != undefined) {
			$.ajax({
				type: "POST",
				url: "/services/divisions.asmx/GetDivisionsByRace",
				data: "{'raceKey':'" + raceMetadata.raceKey + "'}",
				contentType: "application/json; charset=utf-8",
				dataType: "json",
				success: function(result) {
					if (result.length > 0) {
						raceMetadata.populateDivisions(result);
					}
					else {
						$.ajax({
							type: "POST",
							url: "/services/divisions.asmx/GetDivisions",
							data: "{}",
							contentType: "application/json; charset=utf-8",
							dataType: "json",
							success: function(result) {
								raceMetadata.populateDivisions(result);
							},
							error: function(xhr, status, error) {
								var err = eval("(" + xhr.responseText + ")");
								alert(err.Message)
							}
						});
					}
				},
				error: function(xhr, status, error) {
					var err = eval("(" + xhr.responseText + ")");
					alert(err.Message)
				}
			});
		}
		else {
			$.ajax({
				type: "POST",
				url: "/services/divisions.asmx/GetDivisions",
				data: "{}",
				contentType: "application/json; charset=utf-8",
				dataType: "json",
				success: function(result) {
					raceMetadata.populateDivisions(result);
				},
				error: function(xhr, status, error) {
					var err = eval("(" + xhr.responseText + ")");
					alert(err.Message)
				}
			});
		}
	},


	populateDivisions: function(divisions) {
		$('.divisionList').append($('<option value="0">Select...</option>'));
		for (var i = 0; i < divisions.length; i++) {
			$('.divisionList').append($('<option></option>').val(divisions[i].Key).html(divisions[i].Name));
		}
		$('.divisionList').val(raceMetadata.defaultDivision);
		raceMetadata.getClasses();
	},

	getClasses: function() {
		var division = $('.divisionList').val();
		$.ajax({
			type: "POST",
			url: "/services/divisions.asmx/GetClasses",
			data: "{'divisionKey':'" + division + "'}",
			contentType: "application/json; charset=utf-8",
			dataType: "json",
			success: function(result) {
				raceMetadata.populateClasses(result);

			},

			error: function(xhr, status, error) {
				var err = eval("(" + xhr.responseText + ")");
				alert(err.Message)
			}
		});
	},

	populateClasses: function(classes) {
		$('.classList option').remove();
		$('.classList').append($('<option value="0">Select...</option>'));
		for (var i = 0; i < classes.length; i++) {
			$('.classList').append($('<option></option>').val(classes[i].Key).html(classes[i].Name));
		}
		$('.classList').val(raceMetadata.defaultClass);
	},

	setupEvents: function() {
		$('.divisionList').change(function() {
			raceMetadata.getClasses();
		})
	},

	setStatus: function() {
		$('#ctl00_ContentPlaceHolder1_defaultClass').attr('value', $('.classList').val());
		$('#ctl00_ContentPlaceHolder1_defaultDivision').attr('value', $('.divisionList').val());
	}
}

var promo ={
	init: function(){
		$('.promoCode').blur(function(){
			var code = $(this).attr('value');
			if(code.length > 0){
				$.ajax({
					type: "POST",
					url: "/services/raceinfo.asmx/GetDiscount",
					data: "{'promoCode':'" + code + "'}",
					contentType: "application/json; charset=utf-8",
					dataType: "json",
					success: function(result){

						if(result > 0){
							var memberFee = utility.stripNonNumeric($('#registrationFee').text());
							var nonMemberFee = utility.stripNonNumeric($('#nonMemberRegistrationFee').text());
							var memberFee = promo.memberFee;
							var nonMemberFee = promo.nonMemberFee;
							var newMemberFee = memberFee - (result * memberFee);
							var newNonMemberFee = nonMemberFee - (result * nonMemberFee);
							if(newMemberFee == 0){
								$('#registrationFee').text('FREE');
							}
							else{
								$('#registrationFee').text('$' + newMemberFee.toFixed(2));
							}
							if(newNonMemberFee == 0){
								$('#nonMemberRegistrationFee').text('FREE');
							}
							else{
								$('#nonMemberRegistrationFee').text('$' + newNonMemberFee.toFixed(2));
							}
							$('#promoMessage').remove();
							$('.promoCode').after('<span id="promoMessage">Your promo code has been applied.</span>')
						}
						else{
							$('#promoMessage').remove();
							$('.promoCode').after('<span id="promoMessage">You have used an invalid promo code.</span>')
						}
					},

					error: function(xhr, status, error){
						var err = eval("(" + xhr.responseText + ")");
						alert(err.Message)
					}
				});
			}
		})
	}
  } 
	var racePrice = {
	init: function(){
		$('.racePrice').change(function(){
			var id = $(this).attr('value');
			if(id.length > 0){
				$.ajax({
					type: "POST",
					url: "/services/raceinfo.asmx/GetPricing",
					data: "{'Key':'" + id + "'}",
					contentType: "application/json; charset=utf-8",
					dataType: "json",
					success: function(result){
						racePrice.populatePrice(result);  
					},

					error: function(xhr, status, error){
						var err = eval("(" + xhr.responseText + ")");
						alert(err.Message)
					}
				});
			}
		})
	},
	
	 populatePrice: function(price) {
		$('#registrationFee').text('$' + price.MemberPrice.toFixed(2));
		$('#nonMemberRegistrationFee').text('$' + price.NonMemberPrice.toFixed(2));
		promo.memberFee = utility.stripNonNumeric($('#registrationFee').text());
		promo.nonMemberFee = utility.stripNonNumeric($('#nonMemberRegistrationFee').text());
		
		if ($('#utility li.name').length > 0) {
			if (price.MemberPrice.toFixed(2) == '0.00')
			{
				$('#raceFee input').each(function() {
					$(this).removeClass('required');
					$(this).attr('disabled', 'disabled');
				});
				
				$('#raceFee select').each(function() {
					if ($(this).attr('id') != 'ctl00_ContentPlaceHolder1_PriceList' && $(this).attr('id') != 'ctl00_ContentPlaceHolder1_MemberPriceList')
					{
						$(this).removeClass('required');
						$(this).attr('disabled', 'disabled');
					}
				});
				
				$('#paymentSection').hide();
			}
		} else {
			if (price.NonMemberPrice.toFixed(2) == '0.00')
			{
				$('#raceFee input').each(function() {
					$(this).removeClass('required');
					$(this).attr('disabled', 'disabled');
				});
				
				$('#raceFee select').each(function() {
					if ($(this).attr('id') != 'ctl00_ContentPlaceHolder1_PriceList' && $(this).attr('id') != 'ctl00_ContentPlaceHolder1_MemberPriceList')
					{
						$(this).removeClass('required');
						$(this).attr('disabled', 'disabled');
					}
				});
				
				$('#paymentSection').hide();
			}
		}
	   
	}

}

function cancelGB_Window(){
	window.parent.window.parent.location.reload();
}


function closeGB_Window(){
	window.parent.window.parent.GB_hide();
}

var sponsorTags = {
	tagContainer: '#tags',
	hiddenTags: '#ctl00_ContentPlaceHolder1_Tags',
	listOfTags: '#listOfTags',
	selectedTags: '#selectedTags',

	init: function(){
		sponsorTags.getAllTags();
		sponsorTags.getCategoryTags();
		sponsorTags.saveCategoryTags();
		sponsorTags.deleteCategoryTag();
	},

	getAllTags: function(){
		$.ajax({
			type: "POST",
			url: "/services/sponsors.asmx/GetTags",
			data: "{}",
			contentType: "application/json; charset=utf-8",
			dataType: "json",
			success: function(result) {
				if(result > 0){
					var allTags = [];
					for(var i=0; i<result.length; i++){
						allTags.push(result[i].Tag);
					}

					$(sponsorTags.selectedTags).autocomplete(allTags, {
						width: 170,
						maxItemsToShow: 4,
						highlight: false,
						multiple: true,
						multipleSeparator: " ",
						scroll: true,
						scrollHeight: 150
					});
				}
			},
			error: function(xhr, status, error) {
				var err = eval("(" + xhr.responseText + ")");
				alert(err.Message)
			}
		});
	},

	
	getCategoryTags: function(){
		var list = $(sponsorTags.hiddenTags).val();
		if(list.length > 0){
			list = list.split(';');
			var lis = '';
			for(var i=0; i<list.length; i++){
				lis = lis + sponsorTags.buildTag(list[i]);
			}
			$(sponsorTags.listOfTags).append(lis);
		}
	},

	saveCategoryTags: function(){
		$(sponsorTags.selectedTag).keypress(function(event){
			if(event.keyCode == 13){
				var newTag = $.trim($(sponsorTags.selectedTags).val());
				$(sponsorTags.listOfTags).append(sponsorTags.buildTag(newTag));
				$(sponsorTags.selectedTags).val('');
				sponsorTags.updateHiddenTags();
				return false;
			}
		})
	},

	updateHiddenTags: function(){
		$(sponsorTags.hiddenTags).val('');
		$('li', sponsorTags.listOfTags).each(function(){
			$(sponsorTags.hiddenTags).val($(sponsorTags.hiddenTags).val() + $(this).text() + ';');
		})
	},

	deleteCategoryTag: function(){
		$(sponsorTags.listOfTags).click(function(event){
			var target = $(event.target);
			if($(target).attr('nodeName').toLowerCase() == 'img'){
				var parent = $(target).parents('li');
				if(parent.length > 0){
					$(parent).remove();
					sponsorTags.updateHiddenTags();
				}
			}
			return false;
		})
	},

	buildTag: function(title){
		return '<li>'+ title + '<a href="#" class="delete"><img src="/webresources/images/icons/close.gif" alt="" /></a></li>';
	}
}

var raceTags = {
	tagContainer: '#tags',
	hiddenTags: '#ctl00_ContentPlaceHolder1_Tags',
	listOfTags: '#listOfTags',
	selectedTags: '#selectedTags',

	init: function(){
		raceTags.getAllTags();
		raceTags.getCategoryTags();
		raceTags.saveCategoryTags();
		raceTags.deleteCategoryTag();
	},

	getAllTags: function(){
		$.ajax({
			type: "POST",
			url: "/services/raceinfo.asmx/GetTags",
			data: "{}",
			contentType: "application/json; charset=utf-8",
			dataType: "json",
			success: function(result) {
				if(result.length > 0){
					var allTags = [];
					for(var i=0; i<result.length; i++){
						allTags.push(result[i].Tag);
					}
					
					$(raceTags.selectedTags).autocomplete(allTags, {
						width: 170,
						maxItemsToShow: 4,
						highlight: false,
						multiple: true,
						multipleSeparator: " ",
						scroll: true,
						scrollHeight: 150
					});
				}
			},
			error: function(xhr, status, error) {
				var err = eval("(" + xhr.responseText + ")");
				alert(err.Message)
			}
		});
	},
	
	getCategoryTags: function(){
		var list = $('#ctl00_ContentPlaceHolder1_Edit1_Tags').val();
		
		if(list != undefined){
			if(list.length > 0){
				list = list.split(';');
				var lis = '';
				for(var i=0; i<list.length; i++){
					lis = lis + raceTags.buildTag(list[i]);
				}
				$(raceTags.listOfTags).append(lis);
			}
		}        
	},

	saveCategoryTags: function(){
		$(raceTags.selectedTag).keypress(function(event){
			if(event.keyCode == 13){
				var newTag = $.trim($(raceTags.selectedTags).val());
				
				if (newTag.length > 0) {
					$(raceTags.listOfTags).append(raceTags.buildTag(newTag));
					$(raceTags.selectedTags).val('');
					raceTags.updateHiddenTags();
				}
				return false;
			}
		})
	},

	updateHiddenTags: function(){
		$('#ctl00_ContentPlaceHolder1_Edit1_Tags').val('');
		$('li', raceTags.listOfTags).each(function(){
			$('#ctl00_ContentPlaceHolder1_Edit1_Tags').val($('#ctl00_ContentPlaceHolder1_Edit1_Tags').val() + $(this).text() + ';');
		})
	},

	deleteCategoryTag: function(){
		$(raceTags.listOfTags).click(function(event){
			var target = $(event.target);
			if($(target).attr('nodeName').toLowerCase() == 'img'){
				var parent = $(target).parents('li');
				if(parent.length > 0){
					$(parent).remove();
					raceTags.updateHiddenTags();
				}
			}
			return false;
		})
	},

	buildTag: function(title){
		return '<li>'+ title + '<a href="#" class="delete"><img src="/webresources/images/icons/close.gif" alt="" /></a></li>';
	}
}

var raceAffiliates = {
	affiliateContainer: '#myAffiliates',
	hiddenAffiliates: '#ctl00_ContentPlaceHolder1_Affiliates',
	listOfAffiliates: '#listOfAffiliates',
	selectedAffiliates: '#selectedAffiliate',

	init: function(){
		raceAffiliates.getAllAffiliates();
		raceAffiliates.getAffiliates();
		raceAffiliates.saveAffiliates();
		raceAffiliates.deleteAffiliates();
	},

	getAllAffiliates: function(){
		$.ajax({
			type: "POST",
			url: "/admin/services/adminutilities.asmx/GetAffiliates",
			data: "{}",
			contentType: "application/json; charset=utf-8",
			dataType: "json",
			success: function(result) {
				if(result.length > 0){
					var allTags = [];
					for(var i=0; i<result.length; i++){
						allTags.push(result[i].FullName + '-' + result[i].AffiliateKey);
					}
					
					$(raceAffiliates.selectedAffiliates).autocomplete(allTags, {
						width: 170,
						maxItemsToShow: 4,
						highlight: false,
						multiple: true,
						multipleSeparator: " ",
						scroll: true,
						scrollHeight: 150
					});
				}
			},
			error: function(xhr, status, error) {
				var err = eval("(" + xhr.responseText + ")");
				alert(err.Message)
			}
		});
	},
	
	getAffiliates: function(){
		var list = $('#ctl00_ContentPlaceHolder1_Edit1_Affiliates').val();
		
		if(list != undefined){
			if(list.length > 0){
				list = list.split(';');
				var lis = '';
				for(var i=0; i<list.length; i++){
					raceAffiliates.getAffiliate(list[i]);
				}
				$(raceAffiliates.listOfAffiliates).append(lis);
			}
		}        
	},
	
	getAffiliate: function(affiliateKey) {
	   $.ajax({
			type: "POST",
			url: "/admin/services/adminutilities.asmx/GetAffiliate",
			data: "{'affiliateKey':'" + affiliateKey + "'}",
			contentType: "application/json; charset=utf-8",
			dataType: "json",
			success: function(result) {
				var t = result.FullName + ' -' + result.AffiliateKey;
				var lis = '';
				lis = lis + raceAffiliates.buildAffiliates(t);
				$(raceAffiliates.listOfAffiliates).append(lis);
			},
			error: function(xhr, status, error) {
				var err = eval("(" + xhr.responseText + ")");
				alert(err.Message)
			},
			async: false
		}); 
	},

	saveAffiliates: function(){
		$(raceAffiliates.selectedTag).keypress(function(event){
			if(event.keyCode == 13){
				var newTag = $.trim($(raceAffiliates.selectedAffiliates).val());
				
				if (newTag.length > 0) {
					$(raceAffiliates.listOfAffiliates).append(raceAffiliates.buildAffiliates(newTag));
					$(raceAffiliates.selectedAffiliates).val('');
					raceAffiliates.updatehiddenAffiliates();
				}
				return false;
			}
		})
	},

	updatehiddenAffiliates: function(){
		$('#ctl00_ContentPlaceHolder1_Edit1_Affiliates').val('');
		$('li', raceAffiliates.listOfAffiliates).each(function(){
			var affiliateKey = $(this).text().split("-");
			
			$('#ctl00_ContentPlaceHolder1_Edit1_Affiliates').val($('#ctl00_ContentPlaceHolder1_Edit1_Affiliates').val() + affiliateKey[1] + ';');
		})
	},

	deleteAffiliates: function(){
		$(raceAffiliates.listOfAffiliates).click(function(event){
			var target = $(event.target);
			if($(target).attr('nodeName').toLowerCase() == 'img'){
				var parent = $(target).parents('li');
				if(parent.length > 0){
					$(parent).remove();
					raceAffiliates.updatehiddenAffiliates();
				}
			}
			return false;
		})
	},

	buildAffiliates: function(title){
		return '<li>'+ title + '<a href="#" class="delete"><img src="/webresources/images/icons/close.gif" alt="" /></a></li>';
	}
}

var raceAttributes = {
	attributeContainer: '#myAttributes',
	hiddenAttributes: '#ctl00_ContentPlaceHolder1_RaceAttributes',
	listOfAttributes: '#listOfAttributes',
	selectedAttributes: '#selectedAttribute',

	init: function(){
		raceAttributes.getAllAttributes();
		raceAttributes.getAttributes();
		raceAttributes.saveAttributes();
		raceAttributes.deleteAttributes();
	},

	getAllAttributes: function(raceKey){
//        TODO: Need to add the race attributes to the race edit page
//        $.ajax({
//            type: "POST",
//            url: "/admin/services/adminutilities.asmx/GetAttributes",
//            data: "{'raceKey':'" + raceKey + "'}",
//            contentType: "application/json; charset=utf-8",
//            dataType: "json",
//            success: function(result) {
//                if(result.length > 0){
//                    var allTags = [];
//                    for(var i=0; i<result.length; i++){
//                        allTags.push(result[i].Name);
//                    }
//                    
//                    $(raceAttributes.selectedAttributes).autocomplete(allTags, {
//                        width: 170,
//                        maxItemsToShow: 4,
//                        highlight: false,
//                        multiple: true,
//                        multipleSeparator: " ",
//                        scroll: true,
//                        scrollHeight: 150
//                    });
//                }
//            },
//            error: function(xhr, status, error) {
//                var err = eval("(" + xhr.responseText + ")");
//                alert(err.Message)
//            }
//        });
	},
	
	getAttributes: function(){
		var list = $('#ctl00_ContentPlaceHolder1_Edit1_RaceAttributes').val();
		
		if(list != undefined){
			if(list.length > 0){
				list = list.split(';');
				var lis = '';
				for(var i=0; i<list.length; i++){
					raceAttributes.getAttribute(list[i]);
				}
				$(raceAttributes.listOfAttributes).append(lis);
			}
		}        
	},
	
	getAttribute: function(attributeKey) {
	   $.ajax({
			type: "POST",
			url: "/admin/services/adminutilities.asmx/GetAttribute",
			data: "{'attributeKey':'" + attributeKey + "'}",
			contentType: "application/json; charset=utf-8",
			dataType: "json",
			success: function(result) {
				var t = result.FullName + ' -' + result.AttributeKey;
				var lis = '';
				lis = lis + raceAttributes.buildAttributes(t);
				$(raceAttributes.listOfAttributes).append(lis);
			},
			error: function(xhr, status, error) {
				var err = eval("(" + xhr.responseText + ")");
				alert(err.Message)
			},
			async: false
		}); 
	},

	saveAttributes: function(){
		$(raceAttributes.selectedTag).keypress(function(event){
			if(event.keyCode == 13){
				var newTag = $.trim($(raceAttributes.selectedAttributes).val());
				
				if (newTag.length > 0) {
					$(raceAttributes.listOfAttributes).append(raceAttributes.buildAttributes(newTag));
					$(raceAttributes.selectedAttributes).val('');
					raceAttributes.updatehiddenAttributes();
				}
				return false;
			}
		})
	},

	updatehiddenAttributes: function(){
		$('#ctl00_ContentPlaceHolder1_Edit1_RaceAttributes').val('');
		$('li', raceAttributes.listOfAttributes).each(function(){
			var attributeKey = $(this).text().split("-");
			
			$('#ctl00_ContentPlaceHolder1_Edit1_RaceAttributes').val($('#ctl00_ContentPlaceHolder1_Edit1_RaceAttributes').val() + attributeKey[1] + ';');
		})
	},

	deleteAttributes: function(){
		$(raceAttributes.listOfAttributes).click(function(event){
			var target = $(event.target);
			if($(target).attr('nodeName').toLowerCase() == 'img'){
				var parent = $(target).parents('li');
				if(parent.length > 0){
					$(parent).remove();
					raceAttributes.updatehiddenAttributes();
				}
			}
			return false;
		})
	},

	buildAttributes: function(title){
		return '<li>'+ title + '<a href="#" class="delete"><img src="/webresources/images/icons/close.gif" alt="" /></a></li>';
	}
}
