PrePro Baseball
/* Any JavaScript here will be loaded for all users on every page load. */
var google_api_key = "AIzaSyDAAtL113zvHFgk7FEb0fFgSmWx-DtcAk4";
function set_autocomplete(target_class, filter_class, target_property, filter_property) { var additional_filter = arguments.length > 4 ? arguments[4] : ""; var target_input = $("." + target_class); var filter_input = $("." + filter_class); var filter = """ + filter_property + "" contains a listed "+" character as part of the property label and has therefore been classified as invalid." + additional_filter; get_property_values(target_property, filter, function(data) { target_input.autocomplete({ source: parse_list(data.parse.text["*"]), select: function(event, ui) { event.preventDefault(); $(this).val(ui.item.value); $(this).change(); } })}); }
function parse_list(text) { if(text[0] == '\n') { return []; }
return text.split("\n")[0].substring("
".length).split(",");
}
function api_parse(text, callback) {
var data = {action: "parse", prop: "text", format: "json", text: text };
$.getJSON("/api.php", data, callback);
}
function get_property_values(property, filter, callback) {
var ask = "<ul><li>The part "" + filter + "" of the query was not understood.Results might not be as expected.</li> <!--br--><li>Some subquery has no valid condition.</li></ul>";
api_parse(ask, callback);
}
function default_to_one_and_hide() {
if(!$(this).val()) {
$(this).val("1");
}
$(this).hide();
}
function modify_selected_values() {
var input = $(this).parent().prev('span').children('input');
var chk_value = this.value;
var selected_values = input.val() ? input.val().split(/ *, */) : [];
if(this.checked) {
selected_values.push(this.value);
selected_values.sort();
} else {
selected_values = $.grep(selected_values, function(value) { return value != chk_value; });
}
input.val(selected_values.join(", "));
}
function add_new_input() {
var span = this;
var input = $(this).children('input').first();
var name = input.attr('name');
var index = "" + $(this).find('input').length - 1;
name = name.replace("[is_list]", "[" + index + "]");
var new_item = $(' new ');
$(this).append(new_item);
$(this).find(".new_multi_property_link").click(function(){ $(this).parent().parent().children('span').toggle(); return false; });
}
function set_salience_names() {
var names = { 1: "Prominent", 2: "Noteworthy", 3: "Informative", 4: "Incomplete" };
var inputs = $(this).find('input');
for(var i = 1; i < 5; i++) {
inputs[i].nextSibling.nodeValue = " " + names[i];
}
}
function populate_chron_year_number() {
var year = $('[name="Chronology Entry[Year]"]').val();
var suffix = $('[name="Chronology Entry[Year Suffix]"]').val();
if(!year) return;
var ask = "/Special:Ask/-5B-5BYear::" + year + "-5D-5D";
ask += suffix? "/-5B-5BYear Suffix::" + suffix + "-5D-5D" : "";
ask += "/-3FYear-20Number/mainlabel%3D-2D/limit%3D1/order%3DDESC/sort%3DYear_Number/searchlabel%3D/format%3Djson";
var data = {};
$.getJSON(ask, data, function (data) {
var number = data.items.length ? (parseInt(data.items[0].year_number) + 1) : 1;
$('[name="Chronology Entry[Year Number]"]').val(number);
});
}
function sort_eras_chronologically() {
var spans = $(this).children('span');
/* 1700s 1800s Contemporary Post-1900 Pre-1700 */
$(this).append(spans[4]);
$(this).append(spans[0]);
$(this).append(spans[1]);
$(this).append(spans[3]);
$(this).append(spans[2]);
}
function set_none_value_for_enumerated_radio_buttons() {
var span = $(this).children('span')[0];
var input = $(span).children('input')[0];
input.value = "";
}
function set_date_by_type_of_date() {
var type_of_date = $(this).val();
var day = $(".dayInput");
var month = $(".monthInput");
if(type_of_date == "Day") {
day.show();
month.show();
} else {
day.val("1");
day.hide();
if (type_of_date == "Month") {
month.show();
} else {
month.hide();
}
}
}
function set_ballgame_name() {
var home_team = $(".home_team").val();
var away_team = $(".away_team").val();
var country = $(".country").val();
var state = $(".state").val();
var city = $(".city").val();
var region = $(".region").val();
var event = "";
if(home_team != "") {
event = home_team;
if(away_team != "") {
event += " v " + away_team;
}
}
if(home_team.indexOf(" ") == -1) {
var places = [city, region, state, country];
for(var i in places) {
if(places[i] != "") {
event += (event.length > 0 ? " " : "") + "in " + places[i];
break;
}
}
}
var type_of_date = $(".type_of_date").val();
var day = $(".dayInput").val();
var month = $(".monthInput option:selected").text();
var year = $(".yearInput").val();
var date = "";
if(type_of_date == "Day") {
date = "on " + day + ", " + month + " " + year;
} else if(type_of_date == "Month") {
date = "in " + month + " " + year;
} else if(type_of_date == "Year") {
date = "in " + year;
} else if(type_of_date == "Circa") {
date = "Circa " + year;
}
$(".ballgame_name").val(event + " " + date);
}
/* Maps... */
function set_map() {
var fairfax = new google.maps.LatLng(38.8462236, -77.3063733);
var map = $("#map")[0];
map.info_window = new google.maps.InfoWindow();
map.map = new google.maps.Map(map, {
center: fairfax,
zoom: 12,
mapTypeId: 'roadmap'
});
set_map_layer();
}
var fusion_tables = {};
fusion_tables.ballgames = {};
fusion_tables.ballgames.id = "1UNz5h2AVTr1z5xPaz-wUnTgJTuA8pxv1A095IVU";
fusion_tables.ballgames.data_handler = ballgames_data_handler;
function spiral_coords(lat_long, i) {
i = (i == 1)? 0: i+1;
var r = i * 0.002
return [lat_long[0] + (r * .8 * Math.sin(.5 * (i + 2))), lat_long[1] + (r * Math.cos(.5 * (i + 2)))];
}
function custom_marker_and_shadow(letter, color) {
var pinImage = new google.maps.MarkerImage("https://chart.googleapis.com/chart?chst=d_map_pin_letter&chld=" + encodeURI(letter + "|" + color),
new google.maps.Size(21, 34), new google.maps.Point(0,0), new google.maps.Point(10, 34));
var pinShadow = new google.maps.MarkerImage("http://chart.apis.google.com/chart?chst=d_map_pin_shadow",
new google.maps.Size(40, 37), new google.maps.Point(0, 0), new google.maps.Point(12, 35));
return [pinImage, pinShadow];
}
var _yellow_bullet_marker_and_shadow;
function yellow_bullet_marker_and_shadow() {
if (!_yellow_bullet_marker_and_shadow) {
_yellow_bullet_marker_and_shadow = custom_marker_and_shadow("•", "FFFF00");
}
return _yellow_bullet_marker_and_shadow;
}
function marker_click_function(map, marker, infoWindow, info_function) {
return function() {
infoWindow.close(map)
infoWindow.setContent(info_function(marker));
infoWindow.open(map, marker);
};
}
function ballgames_info(marker) {
var infoHtml = '' + marker.title + '
';
var city = "", state = "", country = "", address = "";
if(marker.city) {
address = marker.city + (marker.state ? ", " + marker.state : "") + (marker.country && marker.country != "USA" ? ", " + marker.country : "");
city = '' + marker.city + '';
}
if(marker.state) {
address = marker.state + (marker.country && marker.country != "USA" ? ", " + marker.country : "");
state = '' + marker.state + '';
}
if(marker.country) {
country = '' + marker.country + '';
}
address = ((city ? ", " + city : "") + (state ? ", " + state : "") + (country ? ", " + country : "")).replace(/^, /, "");
infoHtml += address + "
";
infoHtml += marker.info + "
";
return infoHtml;
}
function ballgames_place_info(marker) {
return '' + marker.address + '';
}
function ballgames_data_handler(d) {
var map = $("#map")[0];
var is_first_time = true;
if(map.markers) {
for(var i in map.markers) {
map.markers[i].setMap(null);
}
is_first_time = false;
}
map.markers = [];
var rows = d.rows;
var fields = d.columns;
var index = {};
for (var i in fields) {
index[fields[i]] = i;
}
var location_count = {};
for (var i in rows) {
var row = rows[i];
var location = row[index["Location"]];
var lat_long = location.split(" ");
lat_long[0] = parseFloat(lat_long[0]);
lat_long[1] = parseFloat(lat_long[1]);
if(!(location in location_count)) {
location_count[location] = 0;
}
location_count[location]++;
lat_long = spiral_coords(lat_long, location_count[location]);
var date_of_game = row[index["Date of Game"]];
var year = parseInt(date_of_game.substring(date_of_game.length - 5))
var marker = new google.maps.Marker({
position: new google.maps.LatLng(lat_long[0], lat_long[1]),
title: row[index["Title"]],
date_of_game: date_of_game,
year: year,
city: row[index["City"]],
state: row[index["State"]],
country: row[index["Country"]],
info: row[index["Info"]],
map: map.map
});
if(is_first_time) {
if(!map.years) {
map.years = [year, year];
} else {
map.years = [Math.min(map.years[0], year), Math.max(map.years[1], year)]
}
}
map.markers.push(marker);
var click_function = marker_click_function(map.map, marker, map.info_window, ballgames_info);
google.maps.event.addListener(marker, 'click', click_function);
}
if(is_first_time) {
set_map_boundries();
slider_setup();
}
}
function set_map_layer(additional_filter_dict) {
if(!additional_filter_dict) { additional_filter_dict = {}; }
var map = $("#map")[0];
if(map.layers) {
for(var layer in map.layers) {
map.layers[layer].setMap(null);
delete map.layers[layer];
}
} else {
map.layers = {};
}
var classes = $(map).attr("class").split(" ");
var map_types = [];
var filter = ;
for(var i in classes) {
if(classes[i].indexOf("map") == 0) {
map_types[map_types.length] = classes[i].substring("map_".length);
} else if(classes[i].indexOf("filter") == 0) {
if(filter) { filter += " AND "; }
var this_filter = classes[i].substring("filter_".length).replace(/_/g, " ");
var pos = this_filter.indexOf(' ');
this_filter = [this_filter.slice(0,pos), this_filter.slice(pos+1)];
filter += this_filter[0] + "='" + this_filter[1] + "'";
}
}
for(var i in map_types) {
var map_type = map_types[i];
var fusion_table = fusion_tables[map_type];
var request_url = "https://www.googleapis.com/fusiontables/v1/query?key=" + google_api_key + "&sql=SELECT+*+FROM+" + fusion_table.id
var additional_filter = additional_filter_dict[map_type];
if(filter && additional_filter) {
filter += " AND " + additional_filter;
} else if(additional_filter) {
filter = additional_filter;
}
if(filter) {
request_url += encodeURI(" WHERE " + filter);
}
$.get(request_url, fusion_table.data_handler, "jsonp");
}
}
function set_map_boundries() {
var map = $("#map")[0];
var bound = new google.maps.LatLngBounds();
for(var i in map.markers)
{
bound.extend(map.markers[i].getPosition());
}
map.map.fitBounds(bound);
};
if($('#map').length > 0) {
$.getScript('http://maps.googleapis.com/maps/api/js?sensor=false&async=2&callback=set_map');
}
/* ...Maps */
/* UI slider... */
if($('.slider').length > 0) {
$.getScript('/jquery-ui/js/jquery-ui-1.8.23.custom.min.js', slider_setup);
}
function slider_setup() {
if($("#map").length > 0 && $("#map")[0].years && $("#slider").slider && $("#slider").length > 0 && !$("#slider")[0].is_setup) {
var years = $("#map")[0].years;
$('
').insertAfter("#slider");
$("#slider").slider({ range: true, min: years[0], max: years[1], values: years, change: function( event, ui ) { event.target.values = [parseInt(ui.values[0]), parseInt(ui.values[1])]; }, slide: function( event, ui ) { var new_values = [parseInt(ui.values[0]), parseInt(ui.values[1])]; if(event.target.mode && event.target.mode == "freeze_ranges" && event.target.values) { var old_values = event.target.values; var old_diff = old_values[1] - old_values[0]; var new_diff = new_values[1] - new_values[0]; if(old_diff != new_diff) { var index = (old_values[0] == new_values[0]) ? 0 : 1; var value = index == 0 ? new_values[1] - old_diff : new_values[0] + old_diff; $(event.target).slider("values", index, value); new_values[index] = value; } } else { $("#slider-values").text( ui.values[0] + " - " + ui.values[1] ); } $("#slider-values").text( new_values[0] + " - " + new_values[1] ); event.target.values = new_values; filter_map_years(parseInt(ui.values[0]), parseInt(ui.values[1])); } }); $("#slider-one-year").slider({ min: years[0], max: years[1], value: years[0], slide: function( event, ui ) { $("#slider-values").text(ui.value); filter_map_years(parseInt(ui.value), parseInt(ui.value)); } }); $("#slider")[0].is_setup = true; $("#slider-values").text(years[0] + " - " + years[1]);
$('
').insertBefore("#slider-years div");
$("#standard_slide, #freeze_slide").click(function() { var slider = $("#slider"); slider[0].mode = $(this).val(); if(!slider.is(":visible")) { $("#slider-one-year").hide(); slider.show(); slider.slider('option', 'change').call(slider); } }); $("#one_year_slide").click(function() { var slider = $("#slider-one-year"); $("#slider").hide(); slider.show(); slider.slider('option', 'change').call(slider); }); } }
function filter_map_years(min_year, max_year) { var map = $("#map")[0]; for(var i in map.markers) { var marker = map.markers[i]; if(marker.year) { if(marker.year >= min_year && marker.year <= max_year) { if(!marker.map) { marker.setMap(map.map); } } else { if(marker.map) { marker.setMap(null); } } } } }
/* ...slider UI */
function formPrep() {
if(wgPageName.indexOf("Special:FormEdit") > -1 || wgAction.indexOf("formedit") > -1) {
$('.allow_new .checkboxesSpan').each(add_new_input); $('.set_none_value_for_enumerated_radio_buttons .radioButtonSpan').each(set_none_value_for_enumerated_radio_buttons);
/* for Chronology */ $('.salience').each(set_salience_names); $('[name="Chronology Entry[Year]"], [name="Chronology Entry[Year Suffix]"]').change(populate_chron_year_number);
/* for Games */ $('.sort_eras_chronologically .checkboxesSpan').each(sort_eras_chronologically);
/* for Diggers */ $('[name="Digger Activity[Digger Activity Date][day]"]').each(default_to_one_and_hide);
/* for Ballgames... */ $(".type_of_date").change(set_date_by_type_of_date).change(); $(".ballgame_name").parents("form").submit(set_ballgame_name);
$(".state").change(function(){set_autocomplete("city", "state", "City", "State")}); $(".state").change(function(){set_autocomplete("home_team .away_team", "state", "Name", "State", "")}); $(".city").change(function(){set_autocomplete("home_team", "city", "Name", "City", "")}); $(".city").change(function(){set_autocomplete("field", "city", "Name", "City", "")}); //$(".home_team").change(function(){set_autocomplete("field", "city", "Name", "Club", "")}); /* ...Ballgames */
/* Editors... */ if(wgAction.indexOf("formedit") > -1) { $('textarea.wikiEditor_on_edit').attr('class','wikiEditor'); }
if($('textarea.wikiEditor').length > 0) { $(function(){mw.loader.using("ext.semanticforms.wikieditor",function(){$('textarea.wikiEditor').SemanticForms_registerInputInit(window.ext.wikieditor.init, null);});}); }
if($('textarea.tinymce').length == 0) return; $.getScript("/tinymce/jscripts/tiny_mce/jquery.tinymce.js", function() { $('textarea.tinymce').each(function() { var id = this.id; var opts = { // Location of TinyMCE script script_url : '/tinymce/jscripts/tiny_mce/tiny_mce.js',
// General options theme : "advanced", plugins : "pagebreak,style,layer,save,advhr,advimage,advlink,iespell,inlinepopups,insertdatetime,preview,searchreplace,print,contextmenu,paste,directionality,fullscreen,noneditable,visualchars,nonbreaking,xhtmlxtras,template,table,spellchecker,heading",
// Theme options theme_advanced_buttons1 : "spellchecker,|,tablecontrols" + ($(this).hasClass("with_headings") ? ",|,h2,h3,h4" : ""), theme_advanced_buttons2 : "cut,copy,paste,pastetext,pasteword,|,search,replace,|,undo,redo,|,hr,nonbreaking,removeformat,visualaid,|,sub,sup,|,charmap,iespell,advhr,|,fullscreen", theme_advanced_buttons3 : "bold,italic,underline,strikethrough,|,bullist,numlist,|,link,unlink,|,outdent,indent,blockquote,|justifyleft,justifycenter,justifyright,justifyfull,|,cleanup,help,code" ,
theme_advanced_toolbar_location : "top", theme_advanced_toolbar_align : "left", theme_advanced_statusbar_location : "bottom", theme_advanced_resizing : true, spellchecker_languages : "+English=en", heading_clear_tag : "p", extended_valid_elements: "ref,references",
content_css : "/tinymce/css/custom_content.css", theme_advanced_font_sizes: "10px,12px,13px,14px,16px,18px,20px", font_size_style_values : "10px,12px,13px,14px,16px,18px,20px",
width: "600",
oninit: function (ed) { setTimeout("tinyMCE.get('" + id + "').execCommand('mceSpellCheck', true);", 1); } }; if($(this).hasClass("simple")) { delete opts["theme_advanced_buttons2"]; delete opts["theme_advanced_buttons3"]; opts["theme_advanced_buttons1"] = "bold,italic,underline,|,sub,sup,|,link,unlink,|,spellchecker,|,cleanup,help,code"; }
$(this).tinymce(opts); }); }); /* ...Editors */
}
}
function changeEditLinksToTopLinks() {
if(wgPageName.indexOf("List_of_Diggers") > -1) { $(".editsection a").attr("href", "#top").text("↑ top"); }
}
// have searches use a get so the url can be shared $('#sfForm[action="/Special:RunQuery/Chronology_Search"]').each(function(){this.method = "get";});
// runquery results don't use parser functions except for within the ask call // so, we hide the header listings // then reveal only the lines with any values $(".hide_unless_span_content").each(function() { var text = $(this).children('span').text() if(text.length > 0 && text != "No") { $(this).show(); if(text == "Yes") { $(this).children('span').hide(); } } });
addOnloadHook(formPrep); addOnloadHook(changeEditLinksToTopLinks);