var organizationSearchLink = "/organization/find/";
var teamSearchLink = "/team/powerstats_find/";
var athleteSearchLink ="/team/search_player/";
var scheduleSearchLink ="/team/results_and_schedules/";
var individualLeaderboardSearchLink = "/team/individual_leaderboard/";
var teamLeaderboardSearchLink = "/team/leaderboard/";

var selectedStateId = 0;
var selectedSchoolId = 0;
var selectedSportId = 0;

var schoolFinderIsOpen = 0;

$(document).ready(function(){
	
	$('.wrapper-middle').click(function(evt){
			slideUpAllDropdowns();
	});
	

	$("#find-athlete").click(findAthlete_onClick);
	$("#find-team").click(findTeam_onClick);
	$("#find-school").click(findSchool_onClick);
	$("#results-standings").click(resultsStandings_onClick);
	$("#individual-leaderboards").click(individualLeaderboards_onClick);
	$("#team-leaderboards").click(teamLeaderboards_onClick);
	
	$(".close-dropdown").click(function(){ 
		$(this).parent().parent().hide();
		
		if($("#find-school-dropdown").is(":visible")){
			$("#find-school-dropdown").hide();
		}
		
		if($("#find-sport-dropdown").is(":visible")){
			$("#find-sport-dropdown").hide();
		}
	});
	
	

	
	
	
	function vvParseSchoolData(data){
		schoolFinderIsOpen = 1;
		var parsed = [];
		for(var i=0; data && i < data.length; i++){
			parsed[parsed.length] = {
					data:[data[i]['DataOrganization']['Name'] + " <br/><span style='font-size:10px;'>" + data[i]['DataOrganization']['City'] + ", " + data[i]['DataOrganization']['State'] + "</span>"], 
					value:data[i]['DataOrganization']['OrganizationID'], 
					result:data[i]['DataOrganization']['Name']};

		}
		return parsed;
	}

	
	$("#athlete-search-button").click(athleteSearchButton_onClick);
	$("#school-search-button").click(schoolSearchButton_onClick);
	$("#team-search-button").click(teamSearchButton_onClick);
	$("#individual-leaderboard-search-button").click(individualLeaderboardSearchButton_onClick);
	$("#team-leaderboard-search-button").click(teamLeaderboardSearchButton_onClick);
	$("#results-search-button").click(scheduleSearchButton_onClick);
	

	$('#athlete-name').keypress(function(event){
		if (event.keyCode == '13'){
			athleteSearchButton_onClick();
		}
	});

	$('#athlete-school').keypress(function(event){
		if (event.keyCode == '13' && schoolFinderIsOpen == 0){
			athleteSearchButton_onClick();
		}
	});
	
	$('#team-school').keypress(function(event){
		if (event.keyCode == '13' && schoolFinderIsOpen == 0){
			teamSearchButton_onClick();
		}
	});

	
	$('#school-city-name').keypress(function(event){
		if (event.keyCode == '13' && schoolFinderIsOpen == 0){
			schoolSearchButton_onClick();
		}
	});
	
	$('#results-school, #start-date, #end-date').keypress(function(event){
		if (event.keyCode == '13' && schoolFinderIsOpen == 0){
			scheduleSearchButton_onClick();
		}
	});
	
	var schoolSearchBaseUrl = '/organization/find/{STATEID}/limit:25.json';
	
	
	$(".school-search").keydown(function (evt){
		  var targetId = $(evt.currentTarget).attr('id');
		  var elementId = targetId + '-id';
		  schoolFinderIsOpen = 0;
		  $('#' + elementId).attr('value', '');
		  
		  
		  // UPDATE THE URL TO REFLECT THE CURRENT STATE
		  //............................................
		  var wrapper = $("#" + targetId).parent().parent();
		  var stateId = $("select:first", wrapper).val();
		  if(_isEmpty(stateId)){
			  $(".school-search").setOptions({
				  minChars: 99
			  });
		  }
		  else{
			  $(".school-search").setOptions({
				  minChars: 3,
				  url: schoolSearchBaseUrl.replace('{STATEID}', stateId)
			  });
		  }
	});

	$(".school-search").autocomplete('/organization/find/{STATEID}/limit:25.json',
			{
				minChars: 3,
				matchSubset:false,
				dataType: 'json',
				selectFirst: false,
				max:25,
				parse: vvParseSchoolData,
				cacheLength: 1
			}
	);	

	
	
	$("#search-field").keydown(function (evt){
		  var targetId = $(evt.currentTarget).attr('id');
		  var elementId = targetId + '-id';
		  schoolFinderIsOpen = 0;
		  $('#' + elementId).attr('value', '');
	});
	
	$("#search-field").autocomplete('/organization/find/+/limit:25.json',
			{
				minChars: 1,
				matchSubset:false,
				dataType: 'json',
				selectFirst: false,
				max:25,
				parse: vvParseSchoolData,
				cacheLength: 1
			}
	);
	
	
	$(".school-search").result(function (evt, data, formatted){
		  var targetId = $(evt.currentTarget).attr('id');
		  var elementId = targetId + '-id';
		  schoolFinderIsOpen = 0;
		  $('#' + elementId).attr('value', formatted);
	});
	$("#search-field").result(function (evt, data, formatted){
		  document.location = '/organization/view/' + formatted;
		  return;
	})
	
	$(".setVarVeeHome-link").click(setVarVeeHome_onClick);
	
	
	hideAllDropdowns();
	
});

function athleteName_onClick() {
	slideUpSchoolDropdownIfVisible();
	slideUpSportDropdownIfVisible();
}

function findAthlete_onClick(event) {
	if($("#find-athlete-dropdown").is(":visible")) {
		slideUpAllDropdowns();
	} else {
		slideUpAllDropdowns();
		$("#find-athlete-dropdown").slideDown();
		//$("#athlete-state").focus();
	}
}

function findTeam_onClick(event) {
	if($("#find-team-dropdown").is(":visible")) {
		slideUpAllDropdowns();
	} else {
		slideUpAllDropdowns();
		$("#find-team-dropdown").slideDown();
		//$("#team-state").focus();
	}
}

function findSchool_onClick(event) {
	$("#find-school-dropdown").css("left", "253px");
	$("#find-school-dropdown").css("top", "148px");
	
	if($("#find-school-dropdown").is(":visible")) {
		slideUpAllDropdowns();
	} else {
		slideUpAllDropdowns();
		$("#find-school-dropdown .dropdown-filter-search").show();
		$("#find-school-dropdown").slideDown();
		//$("#school-city-name").focus();
	}
}

function resultsStandings_onClick(event) {
	if($("#results-dropdown").is(":visible")) {
		slideUpAllDropdowns();
	} else {
		slideUpAllDropdowns();
		$("#results-dropdown").slideDown();
		//$("#results-state").focus();
	}
}

function individualLeaderboards_onClick(event) {
	if($("#individual-leaderboard-dropdown").is(":visible")) {
		slideUpAllDropdowns();
	} else {
		slideUpAllDropdowns();
		$("#individual-leaderboard-dropdown").slideDown();
		//$("#individual-leaderboard-state").focus();
	}
}

function teamLeaderboards_onClick(event) {
	if($("#team-leaderboard-dropdown").is(":visible")) {
		slideUpAllDropdowns();
	} else {
		slideUpAllDropdowns();
		$("#team-leaderboard-dropdown").slideDown();
		//$("#team-leaderboard-state").focus();
	}
}







function slideUpAllDropdowns() {
	$("#find-athlete-dropdown").slideUp();
	$("#find-team-dropdown").slideUp();
	$("#results-dropdown").slideUp();
	$("#find-school-dropdown").slideUp();
	$("#find-sport-dropdown").slideUp();
	$("#individual-leaderboard-dropdown").slideUp();
	$("#team-leaderboard-dropdown").slideUp();
	
	$(".dropdown-results-selected").removeClass("dropdown-results-selected");

	if($("#find-school-dropdown").parent().is(":visible")){
		$("#find-school-dropdown .dropdown-filter-search").hide();
	}
	
	if($("#find-sport-dropdown").parent().is(":visible")){
		$("#find-sport-dropdown .dropdown-filter-search").hide();
	}
}

function hideAllDropdowns() {
	$("#find-athlete-dropdown").hide();
	$("#find-team-dropdown").hide();
	$("#results-dropdown").hide();
	$("#find-school-dropdown").hide();
	$("#find-sport-dropdown").hide();
	$("#individual-leaderboard-dropdown").hide();
	$("#team-leaderboard-dropdown").hide();
}











function setupSchoolResultsClickHandlers() {
	
	$(".school-dropdown-results-row").click(schoolResult_onClick);
	$(".school-dropdown-results-alt").click(schoolResult_onClick);
}

function setupSportResultsClickHandlers() {
	
	$(".sport-dropdown-results-row").click(sportResult_onClick);
	$(".sport-dropdown-results-alt").click(sportResult_onClick);
}


function schoolResult_onClick() {
	
	$(".school-dropdown-results-row").removeClass("dropdown-results-selected");
	$(".school-dropdown-results-alt").removeClass("dropdown-results-selected");
	
	$(this).addClass("dropdown-results-selected");
	
	if($("#find-athlete-dropdown").is(":visible")) {
		$("#athlete-school").val($(this).children("strong").html());
		$("#find-school-dropdown").hide();
	} else if($("#find-team-dropdown").is(":visible")) {
		$("#team-school").val($(this).children("strong").html());
		$("#find-school-dropdown").hide();
	} else if($("#results-dropdown").is(":visible")) {
		$("#results-school").val($(this).children("strong").html());
		$("#find-school-dropdown").hide();
	} else if($("#individual-leaderboard-dropdown").is(":visible")) {
		$("#individual-leaderboard-school").val($(this).children("strong").html());
		$("#find-school-dropdown").hide();
	} else if($("#team-leaderboard-dropdown").is(":visible")) {
		$("#team-leaderboard-school").val($(this).children("strong").html());
		$("#find-school-dropdown").hide();
	}

	$("#school-city-name").val($(this).children("strong").html());
	selectedSchoolId = $(this).children("span").html();
}



function sportResult_onClick() {
	
	$(".sport-dropdown-results-row").removeClass("dropdown-results-selected");
	$(".sport-dropdown-results-alt").removeClass("dropdown-results-selected");
	
	$(this).addClass("dropdown-results-selected");
	
	if($("#find-athlete-dropdown").is(":visible")) {
		$("#athlete-sport").val($(this).children("strong").html());
		$("#find-sport-dropdown").hide();
	} else if($("#find-team-dropdown").is(":visible")) {
		$("#team-sport").val($(this).children("strong").html());
		$("#find-sport-dropdown").hide();
	} else if($("#results-dropdown").is(":visible")) {
		$("#results-sport").val($(this).children("strong").html());
		$("#find-sport-dropdown").hide();
	} else if($("#individual-leaderboard-dropdown").is(":visible")) {
		$("#individual-leaderboard-sport").val($(this).children("strong").html());
		$("#find-sport-dropdown").hide();
	} else if($("#team-leaderboard-dropdown").is(":visible")) {
		$("#team-leaderboard-sport").val($(this).children("strong").html());
		$("#find-sport-dropdown").hide();
	}
	
	$("#sport-name").val($(this).children("strong").html());
	selectedSportId = $(this).children("span").html();
	
}



function schoolCityName_onChange() {
	
	if($("#school-city-name").val().length > 1) {
	
		$("#school-dropdown-results-list").html("<img src=\"/img/ajax-loader.gif\" style=\"padding-left:90px;\" />");
		
		$.get('/organization/find/' + _getElementValue('results-state') + '/' + $("#school-city-name").val() + '.json', function(data) {
			
			var alt = false;
			var newRow = "";
			
			$("#school-dropdown-results-list").empty();
		  $.each(data, function() {
			  $.each(this, function(k, v) {
			  	if(alt) {
			  		newRow = '<div class="school-dropdown-results-alt">';
			  	} else {
			  		newRow = '<div class="school-dropdown-results-row">';
			  	}
			    newRow += "<strong>" + v.Name + "</strong><span style=\"display:none;\">" + v.OrganizationID + "</span><br />" + v.City;
			    newRow += "</div>";
			    
			    $("#school-dropdown-results-list").append(newRow);
			    
			    alt = true;
			  });
			});
	
			setupSchoolResultsClickHandlers();
	
		}, 'json');
	
	}

}











function sportName_onChange() {
	
	if($("#sport-name").val().length > 1) {
		
		$("#sports-dropdown-results-list").html("<img src=\"/img/ajax-loader.gif\" style=\"padding-left:90px;\" />");
	
		$.get('/sport/find/' + $("#sport-name").val() + '.json', function(data) {
			
			var alt = false;
			var newRow = "";
			
			$("#sport-dropdown-results-list").empty();
		  $.each(data, function() {
			  $.each(this, function(k, v) {
			  	if(alt) {
			  		newRow = '<div class="sport-dropdown-results-alt">';
			  	} else {
			  		newRow = '<div class="sport-dropdown-results-row">';
			  	}
			    newRow += "<strong>" + v.Name + "</strong><span style=\"display:none;\">" + v.SportID + "</span><br />";
			    newRow += "</div>";
			    
			    $("#sport-dropdown-results-list").append(newRow);
			    
			    alt = true;
			  });
			});
	
			setupSportResultsClickHandlers();
	
		}, 'json');
	
	}

}





function athleteSearchButton_onClick() {
	var athleteName = _getElementValue('athlete-name');
	selectedStateId = _getElementValue('athlete-state');
	selectedSportId =  _getElementValue('athlete-sport');
	
	var schoolName = _getElementValue('athlete-school');
	var schoolId = _getElementValue('athlete-school-id');
	
	var url = athleteSearchLink + selectedStateId + "/"  + athleteName + "/" + schoolName + "/" + selectedSportId;
	if(!_isEmpty(schoolId)){
		url += "/" + schoolId;
	}
	
	
	var hasErrors = false;
	if(_isEmpty(athleteName)){
		_setError('label-athlete-name', 'Athlete Last Name is required');
		hasErrors = true;
	}
	else{
		_setRequired('label-athlete-name', 'Athlete Last Name');
	}
	
	
	if(_isEmpty(selectedStateId)){
		_setError('athlete-state-label', 'State is required');
		hasErrors = true;
	}
	else{
		_setRequired('athlete-state-label', 'State');
	}
	

	// SUBMIT
	if(!hasErrors){
		window.location = url + "/ss:1";
	}

	
}





function schoolSearchButton_onClick() {
	var selectedStateId = _getElementValue('school-state');	
	var schoolName = _getElementValue('school-city-name');
	var schoolId = _getElementValue('school-city-name-id');
	
	
	var hasErrors = false;
	if(_isEmpty(selectedStateId)){
		_setError('school-state-label', 'State is required');
		hasErrors = true;
	}
	else{
		_setRequired('school-state-label', 'State');
	}
	
	
	if(!hasErrors){
		var url = organizationSearchLink + selectedStateId + "/" + schoolName;
		if(!_isEmpty(schoolId)){
			url += "/" + schoolId;
		}
		window.location = url + "/ss:1";
	}
}





function teamSearchButton_onClick() {
	selectedStateId = _getElementValue('team-state');
	selectedSportId =  _getElementValue('team-sport');
	
	
	var schoolName = _getElementValue('team-school');
	var schoolId = _getElementValue('team-school-id');
	
	
	var hasErrors = false;
	if(_isEmpty(selectedStateId)){
		_setError('team-state-label', 'State is required');
		hasErrors = true;
	}
	else{
		_setRequired('team-state-label', 'State');
	}
	
	
	if(!hasErrors){
		var url = teamSearchLink + selectedStateId + "/"  + selectedSportId + "/" + schoolName;
		
		if(!_isEmpty(schoolId)){
			url += "/" + schoolId;
		}
		
		window.location = url + "/ss:1";
	}
}





function scheduleSearchButton_onClick() {

	$("#label-results-school").html("School<br />");
	
	// PROTECT THE SCHOOL ID
	selectedStateId = _getElementValue('results-state');
	selectedSportId =  _getElementValue('results-sport');
	
	var schoolName = _getElementValue('results-school');
	var schoolId = _getElementValue('results-school-id');
	
	
	var hasErrors = false;	
	
	
	// STATE
	//...........
	if(_isEmpty(selectedStateId)){
		_setError('results-state-label', 'State is required');
		hasErrors = true;
	}
	else{
		_setRequired('results-state-label', 'State');
	}
	
	// SCHOOL AND SPORT
	//.................	
	if(_isEmpty(schoolName) && _isEmpty(selectedSportId)) {
		_setError('label-results-sport', 'Please enter a school or sport.');
		_setError('label-results-school', 'Please enter a school or sport.');
		hasErrors = true;		
	}
	else{
		$("#label-results-sport").html("Sport<br />");
		$("#label-results-school").html("School<br />");
	}
	
		
	if(!hasErrors){
		// GET THE START DATE
		//.....................
		var startDate = $("#start-date").val();
		if(startDate != null && startDate != 0){
			startDate = _convertDate(startDate);
		}
		else{
			startDate = '+';
		}
		
		// GET THE END DATE
		//..................
		var endDate = $("#end-date").val();
		if(endDate != null && endDate != 0){
			endDate = _convertDate(endDate);
		}
		
		var url = scheduleSearchLink + selectedStateId + "/" + schoolName + "/" + selectedSportId + "/" + startDate + "/" + endDate;
		if(!_isEmpty(schoolId)){
			url += "/" + schoolId;
		}
		
		// REDIRECT
		//...........
		$("#label-results-sport").html("Sport<br />");
		$("#label-results-school").html("School<br />");
		$("#label-end-date").html("End Date<br />");
		
		if(endDate >= startDate) {
			window.location = url  + "/ss:1";
		} else {
			$("#label-end-date").html("<span style=\"color:red;\">End Date cannot be earlier than Start Date</span><br />");
		}
			
	}
}





function individualLeaderboardSearchButton_onClick() {
	
	var hasError = false;
	selectedStateId = _getElementValue('individual-leaderboard-state');
	selectedSportId =  _getElementValue('individual-leaderboard-sport');
	
	
	// SET THE STATE IS REQUIRED
	//..........................
	if(_isEmpty(selectedStateId)) {
		_setError('individual-leaderboard-state-label', 'State is required');
		hasError = true;
	}
	else{
		_setRequired('individual-leaderboard-state-label', 'State');
	}
	
	// SET THE SPORT IS REQUIRED
	//..........................
	if(_isEmpty(selectedSportId)){
		_setError('label-individual-leaderboard-sport', 'Sport is required');
		hasError = true;		
	}
	else{
		_setRequired('label-individual-leaderboard-sport', 'Sport');
	}
	
	
	if(!hasError){
		$("#label-team-leaderboard-state").html("State *<br/>");
		$("#label-individual-leaderboard-sport").html("Sport <span style='color: rgb(214, 1, 1);'>*</span><br>");
		window.location = individualLeaderboardSearchLink + $.URLEncode(selectedStateId) + "/" + $.URLEncode(selectedSportId) + "/ss:1";
	}
	
	return false;
	
	
}





function teamLeaderboardSearchButton_onClick() {
	
	var hasError = false;
	selectedStateId = _getElementValue('team-leaderboard-state');
	selectedSportId =  _getElementValue('team-leaderboard-sport');
	
	// SET THE STATE IS REQUIRED
	//..........................
	if(_isEmpty(selectedStateId)) {
		_setError('team-leaderboard-state-label', 'State is required');
		hasError = true;
	}
	else{
		_setRequired('team-leaderboard-state-label', 'State');
	}
	
	// SET THE SPORT IS REQUIRED
	//..........................
	if(_isEmpty(selectedSportId)){
		_setError('label-team-leaderboard-sport', 'Sport is required');
		hasError = true;		
	}
	else{
		_setRequired('label-team-leaderboard-sport', 'Sport');
	}
	
	
	if(!hasError){
		$("#label-team-leaderboard-state").html("State *<br/>");
		$("#label-team-leaderboard-sport").html("Sport <span style='color: rgb(214, 1, 1);'>*</span><br>");
		window.location = teamLeaderboardSearchLink + $.URLEncode(selectedStateId) + "/" + $.URLEncode(selectedSportId) + "/ss:1";
	}
	
}



function slideUpSportDropdownIfVisible() {
	if($("#find-sport-dropdown").is(":visible")) {
		$("#find-sport-dropdown").slideUp();
	}
}

function slideUpSchoolDropdownIfVisible() {
	if($("#find-school-dropdown").is(":visible")) {
		$("#find-school-dropdown").slideUp();
	}
}


function setVarVeeHome_onClick() {
	var pageUrl = $.URLEncode(window.location.pathname);
	$.post('/users/setVarVeeHome', { url: pageUrl }, function(data) {
			
			if(data.result == "success") {
				$(".setVarVeeHome-link").slideUp();
				$(".middle-container").prepend('<div class="message" id="flashMessage">VarVee home page set!</div>');
			}
	
		}, 'json');
}

// ------------------------------
// HELPER FUNCTIONS
//...............................

function _convertDate(usaDate){
	var dateParts = usaDate.split('/');
	return dateParts[2] + '-' + dateParts[0] + '-' + dateParts[1];
}

/**
 * Get the value of a form element. If the element is blank then return +
 * @param elementId The ID of the HTML form element.
 * @return string
 */
function _getElementValue(elementId){
	var temp = $('#' + elementId).val();
	if(temp == ''){
		return '+';
	}
	else{
		return $.URLEncode(temp);
	}
}

/**
 * Get the value of a form element. If the element is blank then return +
 * @param elementId The ID of the HTML form element.
 * @return string
 */
function _setElementValue(elementId, value){
	var temp = $('#' + elementId).val();
}

/**
 * Check if a value is empty. A value is empty if null, zero or plus
 * @param val
 * @return
 */
function _isEmpty(val){
	if(val == '' || val == '+' || val == 0 || val == '0'){
		return true;
	}
	else{
		return false;
	}
}

function _setError(elementId, message){
	$("#" + elementId).html("<span style='color:red;'>" + message + "</span><br />");	
}

function _setRequired(elementId, label){
	$("#" + elementId).html(label + " <span style='color: rgb(214, 1, 1);'>*</span><br>");
}

function clk(){
	return false;
}
