hockeydata=((function(){ if(typeof jQuery==="undefined") throw new Error("jQuery is required to run hockeydata."); if(typeof hockeydata !== "undefined") return hockeydata; function HockeyDataLibrary(){ var initialized=false; var initializationQueue=[]; this.extend=function(fn, path, name){ if(!(name in path)) path[name]=fn; }; this.initialize=function(){ if(initialized) return false; if(initializationQueue.length) for(var i=0; i < initializationQueue.length; i++) initializationQueue[i](); initialized=true; return true; }; this.enqueue=function(item){ if(initialized) item(); else initializationQueue.push(item); }; } return new HockeyDataLibrary(); })()); jQuery(function(){ hockeydata.initialize(); });((function(){ var parameters=null; function UtilityLibrary(){ } UtilityLibrary.isString=function(a){ return (typeof a==="string"); }; UtilityLibrary.isNumeric=function(a){ return isFinite(String(a).trim() || NaN); }; UtilityLibrary.isArray=function(a){ return (Object.prototype.toString.call(a)==="[object Array]"); }; UtilityLibrary.sprintf=function(text, args){ var i; if(UtilityLibrary.isArray(args)){ for(i=0; i < args.length; i++) text=text.replace(/%s/, args[i]); } else { for(i=1; i < arguments.length; i++) text=text.replace(/%s/, arguments[i]); } return text; }; UtilityLibrary.toFixed=function(value, fractionalDigits){ var numericValue=Number(value); if(!hockeydata.util.isNumeric(numericValue)) numericValue=0; return numericValue.toFixed(fractionalDigits); }; UtilityLibrary.formatDate=function(date){ date=new Date(date); var day=date.getDate(); var month=date.getMonth() + 1; return (day < 10 ? "0" : "") + day + "." + (month < 10 ? "0" : "") + month + "." + date.getFullYear(); }; UtilityLibrary.formatDuration=function(value){ var numericValue=Number(value); if(!hockeydata.util.isNumeric(numericValue)) numericValue=0; var minutes=Math.floor(numericValue / 60); var seconds=numericValue - minutes * 60; return (minutes < 10 ? "0" : "") + minutes + ":" + (seconds < 10 ? "0" : "") + seconds; }; UtilityLibrary.formatNumber=function(number, decimals, decimalSeparator, thousandsSeparator){ number=(number + "").replace(/[^0-9+\-Ee.]/g, ""); var n=!isFinite(+number) ? 0 : +number; var prec=!isFinite(+decimals) ? 0 : Math.abs(decimals); var sep=(typeof thousandsSeparator==='undefined') ? hockeydata.i18n.thousandsSeparator : thousandsSeparator; var dec=(typeof decimalSeparator==='undefined') ? hockeydata.i18n.decimalSeparator : decimalSeparator; var s=''; var toFixedFix=function (n, prec){ var k=Math.pow(10, prec); return '' + Math.round(n * k) / k; }; var s=(prec ? toFixedFix(n, prec) : '' + Math.round(n)).split('.'); if(s[0].length > 3) s[0]=s[0].replace(/\B(?=(?:\d{3})+(?!\d))/g, sep); if((s[1] || '').length < prec){ s[1]=s[1] || ''; s[1] += new Array(prec - s[1].length + 1).join('0'); } return s.join(dec); }; UtilityLibrary.formatTime=function(date){ date=new Date(date); var hours=date.getHours(); var minutes=date.getMinutes(); return (hours < 10 ? "0" : "") + hours + ":" + (minutes < 10 ? "0" : "") + minutes; }; UtilityLibrary.getParameter=function(paramerName){ if(!parameters){ parameters={}; var searchParameters=location.search.length ? location.search.substring(1).split("&") : []; for(var i=0; i < searchParameters.length; i++){ var parameter=searchParameters[i].split("="); parameters[parameter[0]]=parameter.length===2 ? parameter[1] : null; } } if(paramerName in parameters) return parameters[paramerName]; return null; }; UtilityLibrary.getScreenResolution=function(){ return screen.width + "x" + screen.height; }; UtilityLibrary.getLeague=function(sport, widget){ return { "americanfootball": "fffa", "icehockey": "ebel" }[sport]; }; UtilityLibrary.addLeadingZeros=function(number, maxLength){ number=String(Number(number)); maxLength=maxLength || 2; while ( number.length < maxLength ) number="0" + number; return number; }; UtilityLibrary.getPlayerLicenseInfo=function(jsonData, noHtml){ try { jsonData=JSON.parse(jsonData); } catch(e){} if(!jQuery.isPlainObject(jsonData) || !("licenseInfo" in jsonData) || !jsonData["licenseInfo"] || !jsonData["licenseInfo"].length) return ""; var ret=""; for(var i=0; i < jsonData["licenseInfo"].length; i++) ret += UtilityLibrary.coloredLabel(jsonData["licenseInfo"][i], noHtml); return ret; }; UtilityLibrary.coloredLabel=function(str, noHtml){ if(!str) return ""; var labels=[ "danger", "info", "warning", "primary", "default", "success" ]; var sum=0; for(var i=0; i < str.length; i++) sum += str.charCodeAt(i); return (" " + (noHtml ? "[" : ("")) + str + (noHtml ? "]" : "")); }; UtilityLibrary.getCountryList=function( sortBy ){ sortBy=sortBy || 'title'; var countries=[ { 'ISO_3166-1_alpha-2': 'AF', 'ISO_3166-1_alpha-3': 'AFG', 'Olympic-Code': 'AFG', 'title': hockeydata.i18n.translate( 'Afghanistan' ) }, { 'ISO_3166-1_alpha-2': 'AX', 'ISO_3166-1_alpha-3': 'ALA', 'Olympic-Code': 'ALA', 'title': hockeydata.i18n.translate( 'Åland Islands' ) }, { 'ISO_3166-1_alpha-2': 'AL', 'ISO_3166-1_alpha-3': 'ALB', 'Olympic-Code': 'ALB', 'title': hockeydata.i18n.translate( 'Albania' ) }, { 'ISO_3166-1_alpha-2': 'DZ', 'ISO_3166-1_alpha-3': 'DZA', 'Olympic-Code': 'ALG', 'title': hockeydata.i18n.translate( 'Algeria' ) }, { 'ISO_3166-1_alpha-2': 'AS', 'ISO_3166-1_alpha-3': 'ASM', 'Olympic-Code': 'ASA', 'title': hockeydata.i18n.translate( 'American Samoa' ) }, { 'ISO_3166-1_alpha-2': 'AD', 'ISO_3166-1_alpha-3': 'AND', 'Olympic-Code': 'AND', 'title': hockeydata.i18n.translate( 'Andorra' ) }, { 'ISO_3166-1_alpha-2': 'AO', 'ISO_3166-1_alpha-3': 'AGO', 'Olympic-Code': 'ANG', 'title': hockeydata.i18n.translate( 'Angola' ) }, { 'ISO_3166-1_alpha-2': 'AI', 'ISO_3166-1_alpha-3': 'AIA', 'Olympic-Code': 'AIA', 'title': hockeydata.i18n.translate( 'Anguilla' ) }, { 'ISO_3166-1_alpha-2': 'AQ', 'ISO_3166-1_alpha-3': 'ATA', 'Olympic-Code': 'ATA', 'title': hockeydata.i18n.translate( 'Antarctica' ) }, { 'ISO_3166-1_alpha-2': 'AG', 'ISO_3166-1_alpha-3': 'ATG', 'Olympic-Code': 'ANT', 'title': hockeydata.i18n.translate( 'Antigua and Barbuda' ) }, { 'ISO_3166-1_alpha-2': 'AR', 'ISO_3166-1_alpha-3': 'ARG', 'Olympic-Code': 'ARG', 'title': hockeydata.i18n.translate( 'Argentina' ) }, { 'ISO_3166-1_alpha-2': 'AM', 'ISO_3166-1_alpha-3': 'ARM', 'Olympic-Code': 'ARM', 'title': hockeydata.i18n.translate( 'Armenia' ) }, { 'ISO_3166-1_alpha-2': 'AW', 'ISO_3166-1_alpha-3': 'ABW', 'Olympic-Code': 'ARU', 'title': hockeydata.i18n.translate( 'Aruba' ) }, { 'ISO_3166-1_alpha-2': 'AU', 'ISO_3166-1_alpha-3': 'AUS', 'Olympic-Code': 'AUS', 'title': hockeydata.i18n.translate( 'Australia' ) }, { 'ISO_3166-1_alpha-2': 'AT', 'ISO_3166-1_alpha-3': 'AUT', 'Olympic-Code': 'AUT', 'title': hockeydata.i18n.translate( 'Austria' ) }, { 'ISO_3166-1_alpha-2': 'AZ', 'ISO_3166-1_alpha-3': 'AZE', 'Olympic-Code': 'AZE', 'title': hockeydata.i18n.translate( 'Azerbaijan' ) }, { 'ISO_3166-1_alpha-2': 'BS', 'ISO_3166-1_alpha-3': 'BHS', 'Olympic-Code': 'BAH', 'title': hockeydata.i18n.translate( 'Bahamas' ) }, { 'ISO_3166-1_alpha-2': 'BH', 'ISO_3166-1_alpha-3': 'BHR', 'Olympic-Code': 'BRN', 'title': hockeydata.i18n.translate( 'Bahrain' ) }, { 'ISO_3166-1_alpha-2': 'BD', 'ISO_3166-1_alpha-3': 'BGD', 'Olympic-Code': 'BAN', 'title': hockeydata.i18n.translate( 'Bangladesh' ) }, { 'ISO_3166-1_alpha-2': 'BB', 'ISO_3166-1_alpha-3': 'BRB', 'Olympic-Code': 'BAR', 'title': hockeydata.i18n.translate( 'Barbados' ) }, { 'ISO_3166-1_alpha-2': 'BY', 'ISO_3166-1_alpha-3': 'BLR', 'Olympic-Code': 'BLR', 'title': hockeydata.i18n.translate( 'Belarus' ) }, { 'ISO_3166-1_alpha-2': 'BE', 'ISO_3166-1_alpha-3': 'BEL', 'Olympic-Code': 'BEL', 'title': hockeydata.i18n.translate( 'Belgium' ) }, { 'ISO_3166-1_alpha-2': 'BZ', 'ISO_3166-1_alpha-3': 'BLZ', 'Olympic-Code': 'BIZ', 'title': hockeydata.i18n.translate( 'Belize' ) }, { 'ISO_3166-1_alpha-2': 'BJ', 'ISO_3166-1_alpha-3': 'BEN', 'Olympic-Code': 'BEN', 'title': hockeydata.i18n.translate( 'Benin' ) }, { 'ISO_3166-1_alpha-2': 'BM', 'ISO_3166-1_alpha-3': 'BMU', 'Olympic-Code': 'BER', 'title': hockeydata.i18n.translate( 'Bermuda' ) }, { 'ISO_3166-1_alpha-2': 'BT', 'ISO_3166-1_alpha-3': 'BTN', 'Olympic-Code': 'BHU', 'title': hockeydata.i18n.translate( 'Bhutan' ) }, { 'ISO_3166-1_alpha-2': 'BO', 'ISO_3166-1_alpha-3': 'BOL', 'Olympic-Code': 'BOL', 'title': hockeydata.i18n.translate( 'Bolivia (Plurinational State of)' ) }, { 'ISO_3166-1_alpha-2': 'BQ', 'ISO_3166-1_alpha-3': 'BES', 'Olympic-Code': 'BES', 'title': hockeydata.i18n.translate( 'Bonaire, Sint Eustatius and Saba' ) }, { 'ISO_3166-1_alpha-2': 'BA', 'ISO_3166-1_alpha-3': 'BIH', 'Olympic-Code': 'BIH', 'title': hockeydata.i18n.translate( 'Bosnia and Herzegovina' ) }, { 'ISO_3166-1_alpha-2': 'BW', 'ISO_3166-1_alpha-3': 'BWA', 'Olympic-Code': 'BOT', 'title': hockeydata.i18n.translate( 'Botswana' ) }, { 'ISO_3166-1_alpha-2': 'BV', 'ISO_3166-1_alpha-3': 'BVT', 'Olympic-Code': 'BVT', 'title': hockeydata.i18n.translate( 'Bouvet Island' ) }, { 'ISO_3166-1_alpha-2': 'BR', 'ISO_3166-1_alpha-3': 'BRA', 'Olympic-Code': 'BRA', 'title': hockeydata.i18n.translate( 'Brazil' ) }, { 'ISO_3166-1_alpha-2': 'IO', 'ISO_3166-1_alpha-3': 'IOT', 'Olympic-Code': 'IOT', 'title': hockeydata.i18n.translate( 'British Indian Ocean Territory' ) }, { 'ISO_3166-1_alpha-2': 'BN', 'ISO_3166-1_alpha-3': 'BRN', 'Olympic-Code': 'BRU', 'title': hockeydata.i18n.translate( 'Brunei Darussalam' ) }, { 'ISO_3166-1_alpha-2': 'BG', 'ISO_3166-1_alpha-3': 'BGR', 'Olympic-Code': 'BUL', 'title': hockeydata.i18n.translate( 'Bulgaria' ) }, { 'ISO_3166-1_alpha-2': 'BF', 'ISO_3166-1_alpha-3': 'BFA', 'Olympic-Code': 'BUR', 'title': hockeydata.i18n.translate( 'Burkina Faso' ) }, { 'ISO_3166-1_alpha-2': 'BI', 'ISO_3166-1_alpha-3': 'BDI', 'Olympic-Code': 'BDI', 'title': hockeydata.i18n.translate( 'Burundi' ) }, { 'ISO_3166-1_alpha-2': 'CV', 'ISO_3166-1_alpha-3': 'CPV', 'Olympic-Code': 'CPV', 'title': hockeydata.i18n.translate( 'Cabo Verde' ) }, { 'ISO_3166-1_alpha-2': 'KH', 'ISO_3166-1_alpha-3': 'KHM', 'Olympic-Code': 'CAM', 'title': hockeydata.i18n.translate( 'Cambodia' ) }, { 'ISO_3166-1_alpha-2': 'CM', 'ISO_3166-1_alpha-3': 'CMR', 'Olympic-Code': 'CMR', 'title': hockeydata.i18n.translate( 'Cameroon' ) }, { 'ISO_3166-1_alpha-2': 'CA', 'ISO_3166-1_alpha-3': 'CAN', 'Olympic-Code': 'CAN', 'title': hockeydata.i18n.translate( 'Canada' ) }, { 'ISO_3166-1_alpha-2': 'KY', 'ISO_3166-1_alpha-3': 'CYM', 'Olympic-Code': 'CAY', 'title': hockeydata.i18n.translate( 'Cayman Islands' ) }, { 'ISO_3166-1_alpha-2': 'CF', 'ISO_3166-1_alpha-3': 'CAF', 'Olympic-Code': 'CAF', 'title': hockeydata.i18n.translate( 'Central African Republic' ) }, { 'ISO_3166-1_alpha-2': 'TD', 'ISO_3166-1_alpha-3': 'TCD', 'Olympic-Code': 'CHA', 'title': hockeydata.i18n.translate( 'Chad' ) }, { 'ISO_3166-1_alpha-2': 'CL', 'ISO_3166-1_alpha-3': 'CHL', 'Olympic-Code': 'CHI', 'title': hockeydata.i18n.translate( 'Chile' ) }, { 'ISO_3166-1_alpha-2': 'CN', 'ISO_3166-1_alpha-3': 'CHN', 'Olympic-Code': 'CHN', 'title': hockeydata.i18n.translate( 'China' ) }, { 'ISO_3166-1_alpha-2': 'CX', 'ISO_3166-1_alpha-3': 'CXR', 'Olympic-Code': 'CXR', 'title': hockeydata.i18n.translate( 'Christmas Island' ) }, { 'ISO_3166-1_alpha-2': 'CC', 'ISO_3166-1_alpha-3': 'CCK', 'Olympic-Code': 'CCK', 'title': hockeydata.i18n.translate( 'Cocos (Keeling) Islands' ) }, { 'ISO_3166-1_alpha-2': 'CO', 'ISO_3166-1_alpha-3': 'COL', 'Olympic-Code': 'COL', 'title': hockeydata.i18n.translate( 'Colombia' ) }, { 'ISO_3166-1_alpha-2': 'KM', 'ISO_3166-1_alpha-3': 'COM', 'Olympic-Code': 'COM', 'title': hockeydata.i18n.translate( 'Comoros' ) }, { 'ISO_3166-1_alpha-2': 'CG', 'ISO_3166-1_alpha-3': 'COG', 'Olympic-Code': 'CGO', 'title': hockeydata.i18n.translate( 'Congo' ) }, { 'ISO_3166-1_alpha-2': 'CD', 'ISO_3166-1_alpha-3': 'COD', 'Olympic-Code': 'COD', 'title': hockeydata.i18n.translate( 'Congo (Democratic Republic of the)' ) }, { 'ISO_3166-1_alpha-2': 'CK', 'ISO_3166-1_alpha-3': 'COK', 'Olympic-Code': 'COK', 'title': hockeydata.i18n.translate( 'Cook Islands' ) }, { 'ISO_3166-1_alpha-2': 'CR', 'ISO_3166-1_alpha-3': 'CRI', 'Olympic-Code': 'CRC', 'title': hockeydata.i18n.translate( 'Costa Rica' ) }, { 'ISO_3166-1_alpha-2': 'CI', 'ISO_3166-1_alpha-3': 'CIV', 'Olympic-Code': 'CIV', 'title': hockeydata.i18n.translate( 'Côte d\'Ivoire' ) }, { 'ISO_3166-1_alpha-2': 'HR', 'ISO_3166-1_alpha-3': 'HRV', 'Olympic-Code': 'CRO', 'title': hockeydata.i18n.translate( 'Croatia' ) }, { 'ISO_3166-1_alpha-2': 'CU', 'ISO_3166-1_alpha-3': 'CUB', 'Olympic-Code': 'CUB', 'title': hockeydata.i18n.translate( 'Cuba' ) }, { 'ISO_3166-1_alpha-2': 'CW', 'ISO_3166-1_alpha-3': 'CUW', 'Olympic-Code': 'CUW', 'title': hockeydata.i18n.translate( 'Curaçao' ) }, { 'ISO_3166-1_alpha-2': 'CY', 'ISO_3166-1_alpha-3': 'CYP', 'Olympic-Code': 'CYP', 'title': hockeydata.i18n.translate( 'Cyprus' ) }, { 'ISO_3166-1_alpha-2': 'CZ', 'ISO_3166-1_alpha-3': 'CZE', 'Olympic-Code': 'CZE', 'title': hockeydata.i18n.translate( 'Czechia' ) }, { 'ISO_3166-1_alpha-2': 'DK', 'ISO_3166-1_alpha-3': 'DNK', 'Olympic-Code': 'DEN', 'title': hockeydata.i18n.translate( 'Denmark' ) }, { 'ISO_3166-1_alpha-2': 'DJ', 'ISO_3166-1_alpha-3': 'DJI', 'Olympic-Code': 'DJI', 'title': hockeydata.i18n.translate( 'Djibouti' ) }, { 'ISO_3166-1_alpha-2': 'DM', 'ISO_3166-1_alpha-3': 'DMA', 'Olympic-Code': 'DMA', 'title': hockeydata.i18n.translate( 'Dominica' ) }, { 'ISO_3166-1_alpha-2': 'DO', 'ISO_3166-1_alpha-3': 'DOM', 'Olympic-Code': 'DOM', 'title': hockeydata.i18n.translate( 'Dominican Republic' ) }, { 'ISO_3166-1_alpha-2': 'EC', 'ISO_3166-1_alpha-3': 'ECU', 'Olympic-Code': 'ECU', 'title': hockeydata.i18n.translate( 'Ecuador' ) }, { 'ISO_3166-1_alpha-2': 'EG', 'ISO_3166-1_alpha-3': 'EGY', 'Olympic-Code': 'EGY', 'title': hockeydata.i18n.translate( 'Egypt' ) }, { 'ISO_3166-1_alpha-2': 'SV', 'ISO_3166-1_alpha-3': 'SLV', 'Olympic-Code': 'ESA', 'title': hockeydata.i18n.translate( 'El Salvador' ) }, { 'ISO_3166-1_alpha-2': 'GQ', 'ISO_3166-1_alpha-3': 'GNQ', 'Olympic-Code': 'GEQ', 'title': hockeydata.i18n.translate( 'Equatorial Guinea' ) }, { 'ISO_3166-1_alpha-2': 'ER', 'ISO_3166-1_alpha-3': 'ERI', 'Olympic-Code': 'ERI', 'title': hockeydata.i18n.translate( 'Eritrea' ) }, { 'ISO_3166-1_alpha-2': 'EE', 'ISO_3166-1_alpha-3': 'EST', 'Olympic-Code': 'EST', 'title': hockeydata.i18n.translate( 'Estonia' ) }, { 'ISO_3166-1_alpha-2': 'ET', 'ISO_3166-1_alpha-3': 'ETH', 'Olympic-Code': 'ETH', 'title': hockeydata.i18n.translate( 'Ethiopia' ) }, { 'ISO_3166-1_alpha-2': 'FK', 'ISO_3166-1_alpha-3': 'FLK', 'Olympic-Code': 'FLK', 'title': hockeydata.i18n.translate( 'Falkland Islands (Malvinas)' ) }, { 'ISO_3166-1_alpha-2': 'FO', 'ISO_3166-1_alpha-3': 'FRO', 'Olympic-Code': 'FRO', 'title': hockeydata.i18n.translate( 'Faroe Islands' ) }, { 'ISO_3166-1_alpha-2': 'FJ', 'ISO_3166-1_alpha-3': 'FJI', 'Olympic-Code': 'FIJ', 'title': hockeydata.i18n.translate( 'Fiji' ) }, { 'ISO_3166-1_alpha-2': 'FI', 'ISO_3166-1_alpha-3': 'FIN', 'Olympic-Code': 'FIN', 'title': hockeydata.i18n.translate( 'Finland' ) }, { 'ISO_3166-1_alpha-2': 'FR', 'ISO_3166-1_alpha-3': 'FRA', 'Olympic-Code': 'FRA', 'title': hockeydata.i18n.translate( 'France' ) }, { 'ISO_3166-1_alpha-2': 'GF', 'ISO_3166-1_alpha-3': 'GUF', 'Olympic-Code': 'GUF', 'title': hockeydata.i18n.translate( 'French Guiana' ) }, { 'ISO_3166-1_alpha-2': 'PF', 'ISO_3166-1_alpha-3': 'PYF', 'Olympic-Code': 'PYF', 'title': hockeydata.i18n.translate( 'French Polynesia' ) }, { 'ISO_3166-1_alpha-2': 'TF', 'ISO_3166-1_alpha-3': 'ATF', 'Olympic-Code': 'ATF', 'title': hockeydata.i18n.translate( 'French Southern Territories' ) }, { 'ISO_3166-1_alpha-2': 'GA', 'ISO_3166-1_alpha-3': 'GAB', 'Olympic-Code': 'GAB', 'title': hockeydata.i18n.translate( 'Gabon' ) }, { 'ISO_3166-1_alpha-2': 'GM', 'ISO_3166-1_alpha-3': 'GMB', 'Olympic-Code': 'GAM', 'title': hockeydata.i18n.translate( 'Gambia' ) }, { 'ISO_3166-1_alpha-2': 'GE', 'ISO_3166-1_alpha-3': 'GEO', 'Olympic-Code': 'GEO', 'title': hockeydata.i18n.translate( 'Georgia' ) }, { 'ISO_3166-1_alpha-2': 'DE', 'ISO_3166-1_alpha-3': 'DEU', 'Olympic-Code': 'GER', 'title': hockeydata.i18n.translate( 'Germany' ) }, { 'ISO_3166-1_alpha-2': 'GH', 'ISO_3166-1_alpha-3': 'GHA', 'Olympic-Code': 'GHA', 'title': hockeydata.i18n.translate( 'Ghana' ) }, { 'ISO_3166-1_alpha-2': 'GI', 'ISO_3166-1_alpha-3': 'GIB', 'Olympic-Code': 'GIB', 'title': hockeydata.i18n.translate( 'Gibraltar' ) }, { 'ISO_3166-1_alpha-2': 'GR', 'ISO_3166-1_alpha-3': 'GRC', 'Olympic-Code': 'GRE', 'title': hockeydata.i18n.translate( 'Greece' ) }, { 'ISO_3166-1_alpha-2': 'GL', 'ISO_3166-1_alpha-3': 'GRL', 'Olympic-Code': 'GRL', 'title': hockeydata.i18n.translate( 'Greenland' ) }, { 'ISO_3166-1_alpha-2': 'GD', 'ISO_3166-1_alpha-3': 'GRD', 'Olympic-Code': 'GRN', 'title': hockeydata.i18n.translate( 'Grenada' ) }, { 'ISO_3166-1_alpha-2': 'GP', 'ISO_3166-1_alpha-3': 'GLP', 'Olympic-Code': 'GLP', 'title': hockeydata.i18n.translate( 'Guadeloupe' ) }, { 'ISO_3166-1_alpha-2': 'GU', 'ISO_3166-1_alpha-3': 'GUM', 'Olympic-Code': 'GUM', 'title': hockeydata.i18n.translate( 'Guam' ) }, { 'ISO_3166-1_alpha-2': 'GT', 'ISO_3166-1_alpha-3': 'GTM', 'Olympic-Code': 'GUA', 'title': hockeydata.i18n.translate( 'Guatemala' ) }, { 'ISO_3166-1_alpha-2': 'GG', 'ISO_3166-1_alpha-3': 'GGY', 'Olympic-Code': 'GGY', 'title': hockeydata.i18n.translate( 'Guernsey' ) }, { 'ISO_3166-1_alpha-2': 'GN', 'ISO_3166-1_alpha-3': 'GIN', 'Olympic-Code': 'GUI', 'title': hockeydata.i18n.translate( 'Guinea' ) }, { 'ISO_3166-1_alpha-2': 'GW', 'ISO_3166-1_alpha-3': 'GNB', 'Olympic-Code': 'GBS', 'title': hockeydata.i18n.translate( 'Guinea-Bissau' ) }, { 'ISO_3166-1_alpha-2': 'GY', 'ISO_3166-1_alpha-3': 'GUY', 'Olympic-Code': 'GUY', 'title': hockeydata.i18n.translate( 'Guyana' ) }, { 'ISO_3166-1_alpha-2': 'HT', 'ISO_3166-1_alpha-3': 'HTI', 'Olympic-Code': 'HAI', 'title': hockeydata.i18n.translate( 'Haiti' ) }, { 'ISO_3166-1_alpha-2': 'HM', 'ISO_3166-1_alpha-3': 'HMD', 'Olympic-Code': 'HMD', 'title': hockeydata.i18n.translate( 'Heard Island and McDonald Islands' ) }, { 'ISO_3166-1_alpha-2': 'VA', 'ISO_3166-1_alpha-3': 'VAT', 'Olympic-Code': 'VAT', 'title': hockeydata.i18n.translate( 'Holy See' ) }, { 'ISO_3166-1_alpha-2': 'HN', 'ISO_3166-1_alpha-3': 'HND', 'Olympic-Code': 'HON', 'title': hockeydata.i18n.translate( 'Honduras' ) }, { 'ISO_3166-1_alpha-2': 'HK', 'ISO_3166-1_alpha-3': 'HKG', 'Olympic-Code': 'HKG', 'title': hockeydata.i18n.translate( 'Hong Kong' ) }, { 'ISO_3166-1_alpha-2': 'HU', 'ISO_3166-1_alpha-3': 'HUN', 'Olympic-Code': 'HUN', 'title': hockeydata.i18n.translate( 'Hungary' ) }, { 'ISO_3166-1_alpha-2': 'IS', 'ISO_3166-1_alpha-3': 'ISL', 'Olympic-Code': 'ISL', 'title': hockeydata.i18n.translate( 'Iceland' ) }, { 'ISO_3166-1_alpha-2': 'IN', 'ISO_3166-1_alpha-3': 'IND', 'Olympic-Code': 'IND', 'title': hockeydata.i18n.translate( 'India' ) }, { 'ISO_3166-1_alpha-2': 'ID', 'ISO_3166-1_alpha-3': 'IDN', 'Olympic-Code': 'INA', 'title': hockeydata.i18n.translate( 'Indonesia' ) }, { 'ISO_3166-1_alpha-2': 'IR', 'ISO_3166-1_alpha-3': 'IRN', 'Olympic-Code': 'IRI', 'title': hockeydata.i18n.translate( 'Iran (Islamic Republic of)' ) }, { 'ISO_3166-1_alpha-2': 'IQ', 'ISO_3166-1_alpha-3': 'IRQ', 'Olympic-Code': 'IRQ', 'title': hockeydata.i18n.translate( 'Iraq' ) }, { 'ISO_3166-1_alpha-2': 'IE', 'ISO_3166-1_alpha-3': 'IRL', 'Olympic-Code': 'IRL', 'title': hockeydata.i18n.translate( 'Ireland' ) }, { 'ISO_3166-1_alpha-2': 'IM', 'ISO_3166-1_alpha-3': 'IMN', 'Olympic-Code': 'IMN', 'title': hockeydata.i18n.translate( 'Isle of Man' ) }, { 'ISO_3166-1_alpha-2': 'IL', 'ISO_3166-1_alpha-3': 'ISR', 'Olympic-Code': 'ISR', 'title': hockeydata.i18n.translate( 'Israel' ) }, { 'ISO_3166-1_alpha-2': 'IT', 'ISO_3166-1_alpha-3': 'ITA', 'Olympic-Code': 'ITA', 'title': hockeydata.i18n.translate( 'Italy' ) }, { 'ISO_3166-1_alpha-2': 'JM', 'ISO_3166-1_alpha-3': 'JAM', 'Olympic-Code': 'JAM', 'title': hockeydata.i18n.translate( 'Jamaica' ) }, { 'ISO_3166-1_alpha-2': 'JP', 'ISO_3166-1_alpha-3': 'JPN', 'Olympic-Code': 'JPN', 'title': hockeydata.i18n.translate( 'Japan' ) }, { 'ISO_3166-1_alpha-2': 'JE', 'ISO_3166-1_alpha-3': 'JEY', 'Olympic-Code': 'JEY', 'title': hockeydata.i18n.translate( 'Jersey' ) }, { 'ISO_3166-1_alpha-2': 'JO', 'ISO_3166-1_alpha-3': 'JOR', 'Olympic-Code': 'JOR', 'title': hockeydata.i18n.translate( 'Jordan' ) }, { 'ISO_3166-1_alpha-2': 'KZ', 'ISO_3166-1_alpha-3': 'KAZ', 'Olympic-Code': 'KAZ', 'title': hockeydata.i18n.translate( 'Kazakhstan' ) }, { 'ISO_3166-1_alpha-2': 'KE', 'ISO_3166-1_alpha-3': 'KEN', 'Olympic-Code': 'KEN', 'title': hockeydata.i18n.translate( 'Kenya' ) }, { 'ISO_3166-1_alpha-2': 'KI', 'ISO_3166-1_alpha-3': 'KIR', 'Olympic-Code': 'KIR', 'title': hockeydata.i18n.translate( 'Kiribati' ) }, { 'ISO_3166-1_alpha-2': 'KP', 'ISO_3166-1_alpha-3': 'PRK', 'Olympic-Code': 'PRK', 'title': hockeydata.i18n.translate( 'Korea (Democratic People\'s Republic of)' ) }, { 'ISO_3166-1_alpha-2': 'KR', 'ISO_3166-1_alpha-3': 'KOR', 'Olympic-Code': 'KOR', 'title': hockeydata.i18n.translate( 'Korea (Republic of)' ) }, { 'ISO_3166-1_alpha-2': 'KW', 'ISO_3166-1_alpha-3': 'KWT', 'Olympic-Code': 'KUW', 'title': hockeydata.i18n.translate( 'Kuwait' ) }, { 'ISO_3166-1_alpha-2': 'KG', 'ISO_3166-1_alpha-3': 'KGZ', 'Olympic-Code': 'KGZ', 'title': hockeydata.i18n.translate( 'Kyrgyzstan' ) }, { 'ISO_3166-1_alpha-2': 'LA', 'ISO_3166-1_alpha-3': 'LAO', 'Olympic-Code': 'LAO', 'title': hockeydata.i18n.translate( 'Lao People\'s Democratic Republic' ) }, { 'ISO_3166-1_alpha-2': 'LV', 'ISO_3166-1_alpha-3': 'LVA', 'Olympic-Code': 'LAT', 'title': hockeydata.i18n.translate( 'Latvia' ) }, { 'ISO_3166-1_alpha-2': 'LB', 'ISO_3166-1_alpha-3': 'LBN', 'Olympic-Code': 'LIB', 'title': hockeydata.i18n.translate( 'Lebanon' ) }, { 'ISO_3166-1_alpha-2': 'LS', 'ISO_3166-1_alpha-3': 'LSO', 'Olympic-Code': 'LES', 'title': hockeydata.i18n.translate( 'Lesotho' ) }, { 'ISO_3166-1_alpha-2': 'LR', 'ISO_3166-1_alpha-3': 'LBR', 'Olympic-Code': 'LBR', 'title': hockeydata.i18n.translate( 'Liberia' ) }, { 'ISO_3166-1_alpha-2': 'LY', 'ISO_3166-1_alpha-3': 'LBY', 'Olympic-Code': 'LBA', 'title': hockeydata.i18n.translate( 'Libya' ) }, { 'ISO_3166-1_alpha-2': 'LI', 'ISO_3166-1_alpha-3': 'LIE', 'Olympic-Code': 'LIE', 'title': hockeydata.i18n.translate( 'Liechtenstein' ) }, { 'ISO_3166-1_alpha-2': 'LT', 'ISO_3166-1_alpha-3': 'LTU', 'Olympic-Code': 'LTU', 'title': hockeydata.i18n.translate( 'Lithuania' ) }, { 'ISO_3166-1_alpha-2': 'LU', 'ISO_3166-1_alpha-3': 'LUX', 'Olympic-Code': 'LUX', 'title': hockeydata.i18n.translate( 'Luxembourg' ) }, { 'ISO_3166-1_alpha-2': 'MO', 'ISO_3166-1_alpha-3': 'MAC', 'Olympic-Code': 'MAC', 'title': hockeydata.i18n.translate( 'Macao' ) }, { 'ISO_3166-1_alpha-2': 'MK', 'ISO_3166-1_alpha-3': 'MKD', 'Olympic-Code': 'MKD', 'title': hockeydata.i18n.translate( 'Macedonia (the former Yugoslav Republic of)' ) }, { 'ISO_3166-1_alpha-2': 'MG', 'ISO_3166-1_alpha-3': 'MDG', 'Olympic-Code': 'MAD', 'title': hockeydata.i18n.translate( 'Madagascar' ) }, { 'ISO_3166-1_alpha-2': 'MW', 'ISO_3166-1_alpha-3': 'MWI', 'Olympic-Code': 'MAW', 'title': hockeydata.i18n.translate( 'Malawi' ) }, { 'ISO_3166-1_alpha-2': 'MY', 'ISO_3166-1_alpha-3': 'MYS', 'Olympic-Code': 'MAS', 'title': hockeydata.i18n.translate( 'Malaysia' ) }, { 'ISO_3166-1_alpha-2': 'MV', 'ISO_3166-1_alpha-3': 'MDV', 'Olympic-Code': 'MDV', 'title': hockeydata.i18n.translate( 'Maldives' ) }, { 'ISO_3166-1_alpha-2': 'ML', 'ISO_3166-1_alpha-3': 'MLI', 'Olympic-Code': 'MLI', 'title': hockeydata.i18n.translate( 'Mali' ) }, { 'ISO_3166-1_alpha-2': 'MT', 'ISO_3166-1_alpha-3': 'MLT', 'Olympic-Code': 'MLT', 'title': hockeydata.i18n.translate( 'Malta' ) }, { 'ISO_3166-1_alpha-2': 'MH', 'ISO_3166-1_alpha-3': 'MHL', 'Olympic-Code': 'MHL', 'title': hockeydata.i18n.translate( 'Marshall Islands' ) }, { 'ISO_3166-1_alpha-2': 'MQ', 'ISO_3166-1_alpha-3': 'MTQ', 'Olympic-Code': 'MTQ', 'title': hockeydata.i18n.translate( 'Martinique' ) }, { 'ISO_3166-1_alpha-2': 'MR', 'ISO_3166-1_alpha-3': 'MRT', 'Olympic-Code': 'MTN', 'title': hockeydata.i18n.translate( 'Mauritania' ) }, { 'ISO_3166-1_alpha-2': 'MU', 'ISO_3166-1_alpha-3': 'MUS', 'Olympic-Code': 'MRI', 'title': hockeydata.i18n.translate( 'Mauritius' ) }, { 'ISO_3166-1_alpha-2': 'YT', 'ISO_3166-1_alpha-3': 'MYT', 'Olympic-Code': 'MYT', 'title': hockeydata.i18n.translate( 'Mayotte' ) }, { 'ISO_3166-1_alpha-2': 'MX', 'ISO_3166-1_alpha-3': 'MEX', 'Olympic-Code': 'MEX', 'title': hockeydata.i18n.translate( 'Mexico' ) }, { 'ISO_3166-1_alpha-2': 'FM', 'ISO_3166-1_alpha-3': 'FSM', 'Olympic-Code': 'FSM', 'title': hockeydata.i18n.translate( 'Micronesia (Federated States of)' ) }, { 'ISO_3166-1_alpha-2': 'MD', 'ISO_3166-1_alpha-3': 'MDA', 'Olympic-Code': 'MDA', 'title': hockeydata.i18n.translate( 'Moldova (Republic of)' ) }, { 'ISO_3166-1_alpha-2': 'MC', 'ISO_3166-1_alpha-3': 'MCO', 'Olympic-Code': 'MON', 'title': hockeydata.i18n.translate( 'Monaco' ) }, { 'ISO_3166-1_alpha-2': 'MN', 'ISO_3166-1_alpha-3': 'MNG', 'Olympic-Code': 'MGL', 'title': hockeydata.i18n.translate( 'Mongolia' ) }, { 'ISO_3166-1_alpha-2': 'ME', 'ISO_3166-1_alpha-3': 'MNE', 'Olympic-Code': 'MNE', 'title': hockeydata.i18n.translate( 'Montenegro' ) }, { 'ISO_3166-1_alpha-2': 'MS', 'ISO_3166-1_alpha-3': 'MSR', 'Olympic-Code': 'MSR', 'title': hockeydata.i18n.translate( 'Montserrat' ) }, { 'ISO_3166-1_alpha-2': 'MA', 'ISO_3166-1_alpha-3': 'MAR', 'Olympic-Code': 'MAR', 'title': hockeydata.i18n.translate( 'Morocco' ) }, { 'ISO_3166-1_alpha-2': 'MZ', 'ISO_3166-1_alpha-3': 'MOZ', 'Olympic-Code': 'MOZ', 'title': hockeydata.i18n.translate( 'Mozambique' ) }, { 'ISO_3166-1_alpha-2': 'MM', 'ISO_3166-1_alpha-3': 'MMR', 'Olympic-Code': 'MYA', 'title': hockeydata.i18n.translate( 'Myanmar' ) }, { 'ISO_3166-1_alpha-2': 'NA', 'ISO_3166-1_alpha-3': 'NAM', 'Olympic-Code': 'NAM', 'title': hockeydata.i18n.translate( 'Namibia' ) }, { 'ISO_3166-1_alpha-2': 'NR', 'ISO_3166-1_alpha-3': 'NRU', 'Olympic-Code': 'NRU', 'title': hockeydata.i18n.translate( 'Nauru' ) }, { 'ISO_3166-1_alpha-2': 'NP', 'ISO_3166-1_alpha-3': 'NPL', 'Olympic-Code': 'NEP', 'title': hockeydata.i18n.translate( 'Nepal' ) }, { 'ISO_3166-1_alpha-2': 'NL', 'ISO_3166-1_alpha-3': 'NLD', 'Olympic-Code': 'NED', 'title': hockeydata.i18n.translate( 'Netherlands' ) }, { 'ISO_3166-1_alpha-2': 'NC', 'ISO_3166-1_alpha-3': 'NCL', 'Olympic-Code': 'NCL', 'title': hockeydata.i18n.translate( 'New Caledonia' ) }, { 'ISO_3166-1_alpha-2': 'NZ', 'ISO_3166-1_alpha-3': 'NZL', 'Olympic-Code': 'NZL', 'title': hockeydata.i18n.translate( 'New Zealand' ) }, { 'ISO_3166-1_alpha-2': 'NI', 'ISO_3166-1_alpha-3': 'NIC', 'Olympic-Code': 'NCA', 'title': hockeydata.i18n.translate( 'Nicaragua' ) }, { 'ISO_3166-1_alpha-2': 'NE', 'ISO_3166-1_alpha-3': 'NER', 'Olympic-Code': 'NIG', 'title': hockeydata.i18n.translate( 'Niger' ) }, { 'ISO_3166-1_alpha-2': 'NG', 'ISO_3166-1_alpha-3': 'NGA', 'Olympic-Code': 'NGR', 'title': hockeydata.i18n.translate( 'Nigeria' ) }, { 'ISO_3166-1_alpha-2': 'NU', 'ISO_3166-1_alpha-3': 'NIU', 'Olympic-Code': 'NIU', 'title': hockeydata.i18n.translate( 'Niue' ) }, { 'ISO_3166-1_alpha-2': 'NF', 'ISO_3166-1_alpha-3': 'NFK', 'Olympic-Code': 'NFK', 'title': hockeydata.i18n.translate( 'Norfolk Island' ) }, { 'ISO_3166-1_alpha-2': 'MP', 'ISO_3166-1_alpha-3': 'MNP', 'Olympic-Code': 'MNP', 'title': hockeydata.i18n.translate( 'Northern Mariana Islands' ) }, { 'ISO_3166-1_alpha-2': 'NO', 'ISO_3166-1_alpha-3': 'NOR', 'Olympic-Code': 'NOR', 'title': hockeydata.i18n.translate( 'Norway' ) }, { 'ISO_3166-1_alpha-2': 'OM', 'ISO_3166-1_alpha-3': 'OMN', 'Olympic-Code': 'OMA', 'title': hockeydata.i18n.translate( 'Oman' ) }, { 'ISO_3166-1_alpha-2': 'PK', 'ISO_3166-1_alpha-3': 'PAK', 'Olympic-Code': 'PAK', 'title': hockeydata.i18n.translate( 'Pakistan' ) }, { 'ISO_3166-1_alpha-2': 'PW', 'ISO_3166-1_alpha-3': 'PLW', 'Olympic-Code': 'PLW', 'title': hockeydata.i18n.translate( 'Palau' ) }, { 'ISO_3166-1_alpha-2': 'PS', 'ISO_3166-1_alpha-3': 'PSE', 'Olympic-Code': 'PLE', 'title': hockeydata.i18n.translate( 'Palestine, State of' ) }, { 'ISO_3166-1_alpha-2': 'PA', 'ISO_3166-1_alpha-3': 'PAN', 'Olympic-Code': 'PAN', 'title': hockeydata.i18n.translate( 'Panama' ) }, { 'ISO_3166-1_alpha-2': 'PG', 'ISO_3166-1_alpha-3': 'PNG', 'Olympic-Code': 'PNG', 'title': hockeydata.i18n.translate( 'Papua New Guinea' ) }, { 'ISO_3166-1_alpha-2': 'PY', 'ISO_3166-1_alpha-3': 'PRY', 'Olympic-Code': 'PAR', 'title': hockeydata.i18n.translate( 'Paraguay' ) }, { 'ISO_3166-1_alpha-2': 'PE', 'ISO_3166-1_alpha-3': 'PER', 'Olympic-Code': 'PER', 'title': hockeydata.i18n.translate( 'Peru' ) }, { 'ISO_3166-1_alpha-2': 'PH', 'ISO_3166-1_alpha-3': 'PHL', 'Olympic-Code': 'PHI', 'title': hockeydata.i18n.translate( 'Philippines' ) }, { 'ISO_3166-1_alpha-2': 'PN', 'ISO_3166-1_alpha-3': 'PCN', 'Olympic-Code': 'PCN', 'title': hockeydata.i18n.translate( 'Pitcairn' ) }, { 'ISO_3166-1_alpha-2': 'PL', 'ISO_3166-1_alpha-3': 'POL', 'Olympic-Code': 'POL', 'title': hockeydata.i18n.translate( 'Poland' ) }, { 'ISO_3166-1_alpha-2': 'PT', 'ISO_3166-1_alpha-3': 'PRT', 'Olympic-Code': 'POR', 'title': hockeydata.i18n.translate( 'Portugal' ) }, { 'ISO_3166-1_alpha-2': 'PR', 'ISO_3166-1_alpha-3': 'PRI', 'Olympic-Code': 'PUR', 'title': hockeydata.i18n.translate( 'Puerto Rico' ) }, { 'ISO_3166-1_alpha-2': 'QA', 'ISO_3166-1_alpha-3': 'QAT', 'Olympic-Code': 'QAT', 'title': hockeydata.i18n.translate( 'Qatar' ) }, { 'ISO_3166-1_alpha-2': 'RE', 'ISO_3166-1_alpha-3': 'REU', 'Olympic-Code': 'REu', 'title': hockeydata.i18n.translate( 'Réunion' ) }, { 'ISO_3166-1_alpha-2': 'RO', 'ISO_3166-1_alpha-3': 'ROU', 'Olympic-Code': 'ROM', 'title': hockeydata.i18n.translate( 'Romania' ) }, { 'ISO_3166-1_alpha-2': 'RU', 'ISO_3166-1_alpha-3': 'RUS', 'Olympic-Code': 'RUS', 'title': hockeydata.i18n.translate( 'Russian Federation' ) }, { 'ISO_3166-1_alpha-2': 'RW', 'ISO_3166-1_alpha-3': 'RWA', 'Olympic-Code': 'RWA', 'title': hockeydata.i18n.translate( 'Rwanda' ) }, { 'ISO_3166-1_alpha-2': 'BL', 'ISO_3166-1_alpha-3': 'BLM', 'Olympic-Code': 'BLM', 'title': hockeydata.i18n.translate( 'Saint Barthélemy' ) }, { 'ISO_3166-1_alpha-2': 'SH', 'ISO_3166-1_alpha-3': 'SHN', 'Olympic-Code': 'SHN', 'title': hockeydata.i18n.translate( 'Saint Helena, Ascension and Tristan da Cunha' ) }, { 'ISO_3166-1_alpha-2': 'KN', 'ISO_3166-1_alpha-3': 'KNA', 'Olympic-Code': 'SKN', 'title': hockeydata.i18n.translate( 'Saint Kitts and Nevis' ) }, { 'ISO_3166-1_alpha-2': 'LC', 'ISO_3166-1_alpha-3': 'LCA', 'Olympic-Code': 'LCA', 'title': hockeydata.i18n.translate( 'Saint Lucia' ) }, { 'ISO_3166-1_alpha-2': 'MF', 'ISO_3166-1_alpha-3': 'MAF', 'Olympic-Code': 'MAF', 'title': hockeydata.i18n.translate( 'Saint Martin (French part)' ) }, { 'ISO_3166-1_alpha-2': 'PM', 'ISO_3166-1_alpha-3': 'SPM', 'Olympic-Code': 'SPM', 'title': hockeydata.i18n.translate( 'Saint Pierre and Miquelon' ) }, { 'ISO_3166-1_alpha-2': 'VC', 'ISO_3166-1_alpha-3': 'VCT', 'Olympic-Code': 'VIN', 'title': hockeydata.i18n.translate( 'Saint Vincent and the Grenadines' ) }, { 'ISO_3166-1_alpha-2': 'WS', 'ISO_3166-1_alpha-3': 'WSM', 'Olympic-Code': 'SAM', 'title': hockeydata.i18n.translate( 'Samoa' ) }, { 'ISO_3166-1_alpha-2': 'SM', 'ISO_3166-1_alpha-3': 'SMR', 'Olympic-Code': 'SMR', 'title': hockeydata.i18n.translate( 'San Marino' ) }, { 'ISO_3166-1_alpha-2': 'ST', 'ISO_3166-1_alpha-3': 'STP', 'Olympic-Code': 'STP', 'title': hockeydata.i18n.translate( 'Sao Tome and Principe' ) }, { 'ISO_3166-1_alpha-2': 'SA', 'ISO_3166-1_alpha-3': 'SAU', 'Olympic-Code': 'KSA', 'title': hockeydata.i18n.translate( 'Saudi Arabia' ) }, { 'ISO_3166-1_alpha-2': 'SN', 'ISO_3166-1_alpha-3': 'SEN', 'Olympic-Code': 'SEN', 'title': hockeydata.i18n.translate( 'Senegal' ) }, { 'ISO_3166-1_alpha-2': 'RS', 'ISO_3166-1_alpha-3': 'SRB', 'Olympic-Code': 'SRB', 'title': hockeydata.i18n.translate( 'Serbia' ) }, { 'ISO_3166-1_alpha-2': 'SC', 'ISO_3166-1_alpha-3': 'SYC', 'Olympic-Code': 'SEY', 'title': hockeydata.i18n.translate( 'Seychelles' ) }, { 'ISO_3166-1_alpha-2': 'SL', 'ISO_3166-1_alpha-3': 'SLE', 'Olympic-Code': 'SLE', 'title': hockeydata.i18n.translate( 'Sierra Leone' ) }, { 'ISO_3166-1_alpha-2': 'SG', 'ISO_3166-1_alpha-3': 'SGP', 'Olympic-Code': 'SIN', 'title': hockeydata.i18n.translate( 'Singapore' ) }, { 'ISO_3166-1_alpha-2': 'SX', 'ISO_3166-1_alpha-3': 'SXM', 'Olympic-Code': 'SXM', 'title': hockeydata.i18n.translate( 'Sint Maarten (Dutch part)' ) }, { 'ISO_3166-1_alpha-2': 'SK', 'ISO_3166-1_alpha-3': 'SVK', 'Olympic-Code': 'SVK', 'title': hockeydata.i18n.translate( 'Slovakia' ) }, { 'ISO_3166-1_alpha-2': 'SI', 'ISO_3166-1_alpha-3': 'SVN', 'Olympic-Code': 'SLO', 'title': hockeydata.i18n.translate( 'Slovenia' ) }, { 'ISO_3166-1_alpha-2': 'SB', 'ISO_3166-1_alpha-3': 'SLB', 'Olympic-Code': 'SOL', 'title': hockeydata.i18n.translate( 'Solomon Islands' ) }, { 'ISO_3166-1_alpha-2': 'SO', 'ISO_3166-1_alpha-3': 'SOM', 'Olympic-Code': 'SOM', 'title': hockeydata.i18n.translate( 'Somalia' ) }, { 'ISO_3166-1_alpha-2': 'ZA', 'ISO_3166-1_alpha-3': 'ZAF', 'Olympic-Code': 'RSA', 'title': hockeydata.i18n.translate( 'South Africa' ) }, { 'ISO_3166-1_alpha-2': 'GS', 'ISO_3166-1_alpha-3': 'SGS', 'Olympic-Code': 'SGS', 'title': hockeydata.i18n.translate( 'South Georgia and the South Sandwich Islands' ) }, { 'ISO_3166-1_alpha-2': 'SS', 'ISO_3166-1_alpha-3': 'SSD', 'Olympic-Code': 'SSD', 'title': hockeydata.i18n.translate( 'South Sudan' ) }, { 'ISO_3166-1_alpha-2': 'ES', 'ISO_3166-1_alpha-3': 'ESP', 'Olympic-Code': 'ESP', 'title': hockeydata.i18n.translate( 'Spain' ) }, { 'ISO_3166-1_alpha-2': 'LK', 'ISO_3166-1_alpha-3': 'LKA', 'Olympic-Code': 'SRI', 'title': hockeydata.i18n.translate( 'Sri Lanka' ) }, { 'ISO_3166-1_alpha-2': 'SD', 'ISO_3166-1_alpha-3': 'SDN', 'Olympic-Code': 'SUD', 'title': hockeydata.i18n.translate( 'Sudan' ) }, { 'ISO_3166-1_alpha-2': 'SR', 'ISO_3166-1_alpha-3': 'SUR', 'Olympic-Code': 'SUR', 'title': hockeydata.i18n.translate( 'Suriname' ) }, { 'ISO_3166-1_alpha-2': 'SJ', 'ISO_3166-1_alpha-3': 'SJM', 'Olympic-Code': 'SJM', 'title': hockeydata.i18n.translate( 'Svalbard and Jan Mayen' ) }, { 'ISO_3166-1_alpha-2': 'SZ', 'ISO_3166-1_alpha-3': 'SWZ', 'Olympic-Code': 'SWZ', 'title': hockeydata.i18n.translate( 'Swaziland' ) }, { 'ISO_3166-1_alpha-2': 'SE', 'ISO_3166-1_alpha-3': 'SWE', 'Olympic-Code': 'SWE', 'title': hockeydata.i18n.translate( 'Sweden' ) }, { 'ISO_3166-1_alpha-2': 'CH', 'ISO_3166-1_alpha-3': 'CHE', 'Olympic-Code': 'SUI', 'title': hockeydata.i18n.translate( 'Switzerland' ) }, { 'ISO_3166-1_alpha-2': 'SY', 'ISO_3166-1_alpha-3': 'SYR', 'Olympic-Code': 'SYR', 'title': hockeydata.i18n.translate( 'Syrian Arab Republic' ) }, { 'ISO_3166-1_alpha-2': 'TW', 'ISO_3166-1_alpha-3': 'TWN', 'Olympic-Code': 'TPE', 'title': hockeydata.i18n.translate( 'Taiwan, Province of China' ) }, { 'ISO_3166-1_alpha-2': 'TJ', 'ISO_3166-1_alpha-3': 'TJK', 'Olympic-Code': 'TJK', 'title': hockeydata.i18n.translate( 'Tajikistan' ) }, { 'ISO_3166-1_alpha-2': 'TZ', 'ISO_3166-1_alpha-3': 'TZA', 'Olympic-Code': 'TAN', 'title': hockeydata.i18n.translate( 'Tanzania, United Republic of' ) }, { 'ISO_3166-1_alpha-2': 'TH', 'ISO_3166-1_alpha-3': 'THA', 'Olympic-Code': 'THA', 'title': hockeydata.i18n.translate( 'Thailand' ) }, { 'ISO_3166-1_alpha-2': 'TL', 'ISO_3166-1_alpha-3': 'TLS', 'Olympic-Code': 'TLS', 'title': hockeydata.i18n.translate( 'Timor-Leste' ) }, { 'ISO_3166-1_alpha-2': 'TG', 'ISO_3166-1_alpha-3': 'TGO', 'Olympic-Code': 'TOG', 'title': hockeydata.i18n.translate( 'Togo' ) }, { 'ISO_3166-1_alpha-2': 'TK', 'ISO_3166-1_alpha-3': 'TKL', 'Olympic-Code': 'TKL', 'title': hockeydata.i18n.translate( 'Tokelau' ) }, { 'ISO_3166-1_alpha-2': 'TO', 'ISO_3166-1_alpha-3': 'TON', 'Olympic-Code': 'TGA', 'title': hockeydata.i18n.translate( 'Tonga' ) }, { 'ISO_3166-1_alpha-2': 'TT', 'ISO_3166-1_alpha-3': 'TTO', 'Olympic-Code': 'TRI', 'title': hockeydata.i18n.translate( 'Trinidad and Tobago' ) }, { 'ISO_3166-1_alpha-2': 'TN', 'ISO_3166-1_alpha-3': 'TUN', 'Olympic-Code': 'TUN', 'title': hockeydata.i18n.translate( 'Tunisia' ) }, { 'ISO_3166-1_alpha-2': 'TR', 'ISO_3166-1_alpha-3': 'TUR', 'Olympic-Code': 'TUR', 'title': hockeydata.i18n.translate( 'Turkey' ) }, { 'ISO_3166-1_alpha-2': 'TM', 'ISO_3166-1_alpha-3': 'TKM', 'Olympic-Code': 'TKM', 'title': hockeydata.i18n.translate( 'Turkmenistan' ) }, { 'ISO_3166-1_alpha-2': 'TC', 'ISO_3166-1_alpha-3': 'TCA', 'Olympic-Code': 'TCA', 'title': hockeydata.i18n.translate( 'Turks and Caicos Islands' ) }, { 'ISO_3166-1_alpha-2': 'TV', 'ISO_3166-1_alpha-3': 'TUV', 'Olympic-Code': 'TUV', 'title': hockeydata.i18n.translate( 'Tuvalu' ) }, { 'ISO_3166-1_alpha-2': 'UG', 'ISO_3166-1_alpha-3': 'UGA', 'Olympic-Code': 'UGA', 'title': hockeydata.i18n.translate( 'Uganda' ) }, { 'ISO_3166-1_alpha-2': 'UA', 'ISO_3166-1_alpha-3': 'UKR', 'Olympic-Code': 'UKR', 'title': hockeydata.i18n.translate( 'Ukraine' ) }, { 'ISO_3166-1_alpha-2': 'AE', 'ISO_3166-1_alpha-3': 'ARE', 'Olympic-Code': 'UAE', 'title': hockeydata.i18n.translate( 'United Arab Emirates' ) }, { 'ISO_3166-1_alpha-2': 'GB', 'ISO_3166-1_alpha-3': 'GBR', 'Olympic-Code': 'GBR', 'title': hockeydata.i18n.translate( 'United Kingdom of Great Britain and Northern Ireland' ) }, { 'ISO_3166-1_alpha-2': 'US', 'ISO_3166-1_alpha-3': 'USA', 'Olympic-Code': 'USA', 'title': hockeydata.i18n.translate( 'United States of America' ) }, { 'ISO_3166-1_alpha-2': 'UM', 'ISO_3166-1_alpha-3': 'UMI', 'Olympic-Code': 'UMI', 'title': hockeydata.i18n.translate( 'United States Minor Outlying Islands' ) }, { 'ISO_3166-1_alpha-2': 'UY', 'ISO_3166-1_alpha-3': 'URY', 'Olympic-Code': 'URU', 'title': hockeydata.i18n.translate( 'Uruguay' ) }, { 'ISO_3166-1_alpha-2': 'UZ', 'ISO_3166-1_alpha-3': 'UZB', 'Olympic-Code': 'UZB', 'title': hockeydata.i18n.translate( 'Uzbekistan' ) }, { 'ISO_3166-1_alpha-2': 'VU', 'ISO_3166-1_alpha-3': 'VUT', 'Olympic-Code': 'VAN', 'title': hockeydata.i18n.translate( 'Vanuatu' ) }, { 'ISO_3166-1_alpha-2': 'VE', 'ISO_3166-1_alpha-3': 'VEN', 'Olympic-Code': 'VEN', 'title': hockeydata.i18n.translate( 'Venezuela (Bolivarian Republic of)' ) }, { 'ISO_3166-1_alpha-2': 'VN', 'ISO_3166-1_alpha-3': 'VNM', 'Olympic-Code': 'VIE', 'title': hockeydata.i18n.translate( 'Viet Nam' ) }, { 'ISO_3166-1_alpha-2': 'VG', 'ISO_3166-1_alpha-3': 'VGB', 'Olympic-Code': 'VGB', 'title': hockeydata.i18n.translate( 'Virgin Islands (British)' ) }, { 'ISO_3166-1_alpha-2': 'VI', 'ISO_3166-1_alpha-3': 'VIR', 'Olympic-Code': 'VIR', 'title': hockeydata.i18n.translate( 'Virgin Islands (U.S.)' ) }, { 'ISO_3166-1_alpha-2': 'WF', 'ISO_3166-1_alpha-3': 'WLF', 'Olympic-Code': 'WLF', 'title': hockeydata.i18n.translate( 'Wallis and Futuna' ) }, { 'ISO_3166-1_alpha-2': 'EH', 'ISO_3166-1_alpha-3': 'ESH', 'Olympic-Code': 'ESH', 'title': hockeydata.i18n.translate( 'Western Sahara' ) }, { 'ISO_3166-1_alpha-2': 'YE', 'ISO_3166-1_alpha-3': 'YEM', 'Olympic-Code': 'YEM', 'title': hockeydata.i18n.translate( 'Yemen' ) }, { 'ISO_3166-1_alpha-2': 'ZM', 'ISO_3166-1_alpha-3': 'ZMB', 'Olympic-Code': 'ZAM', 'title': hockeydata.i18n.translate( 'Zambia' ) }, { 'ISO_3166-1_alpha-2': 'ZW', 'ISO_3166-1_alpha-3': 'ZWE', 'Olympic-Code': 'ZIM', 'title': hockeydata.i18n.translate( 'Zimbabwe' ) } ]; countries.sort( function( a, b ){ var sortValA=a[ sortBy ], sortValB=b[ sortBy ]; if( sortValA < sortValB ){ return -1; } if( sortValA > sortValB ){ return 1; } return 0; } ); return countries; }; UtilityLibrary.getGameStreamButton=function( gameStream ){ try { gameStream=JSON.parse( gameStream ); } catch ( e ){ gameStream=null; } if( jQuery.isPlainObject( gameStream ) ){ if( gameStream.html ){ return gameStream.html; } var $a=jQuery( '' ).addClass( '-hd-game-stream-button' ); $a.click( function(e){ e.stopPropagation(); } ); gameStream.targetUrl && $a.attr( 'href', gameStream.targetUrl ); gameStream.target && $a.attr( 'target', gameStream.target ); gameStream.label && $a.html( gameStream.label ); gameStream.imgUrl && $a.append( jQuery( '' ).attr( 'src', gameStream.imgUrl ) ); gameStream.style && $a.attr( 'style', gameStream.style ); return $a; } return null; }; UtilityLibrary.getPlaceholders=function( str, regex ){ if( ! regex ){ regex=/\$(.*?)\$/g; } var result=[], match; while ( match=regex.exec( str ) ){ result.push( match[ 1 ] ); } return result; }; hockeydata.extend(UtilityLibrary, hockeydata, "util");})()); ((function(){ function Tabs(options){ var self=this; this.defaults={ "$domNode": jQuery("
"), "tabs": [] }; this.options=jQuery.extend({}, this.defaults, options || {}); this.$domNode=this.options.$domNode; this.$buttons=null; this.$content=null; this.$activeTab=null; this.tabs=[]; this.initialize=function(){ this.$domNode.empty(); this.$domNode.addClass("-hd-util-tabs"); this.$buttons=jQuery("").addClass("-hd-util-tabs-buttons").appendTo(this.$domNode); this.$content=jQuery("").addClass("-hd-util-tabs-content").appendTo(this.$domNode); if(hockeydata["util"].isArray(this.options.tabs)) for(var i=0; i < this.options.tabs.length; i++) this.addTab(this.options.tabs[i]); }; this.addTab=function(tabToAdd){ var $button=jQuery("").addClass("-hd-util-tabs-button").attr("href", "#").appendTo(this.$buttons); var $pane=jQuery("").addClass("-hd-util-tabs-pane").appendTo(this.$content); var tab={ "$button": $button, "$pane": $pane }; if(!self.$activeTab){ $button.addClass("-hd-util-tabs-button-active"); $pane.addClass("-hd-util-tabs-pane-active"); self.$activeTab=tab; } if(jQuery.isPlainObject(tabToAdd)){ if("button" in tabToAdd){ var button=tabToAdd.button; if(jQuery.isPlainObject(button)){ if("label" in button) $button.html(button.label); button.$node=$button; } else if(hockeydata["util"].isString(button)) $button.html(button); } if("content" in tabToAdd) jQuery(tabToAdd.content).appendTo($pane); } this.tabs.push(tab); $button.click(function(e){ if(self.$activeTab){ self.$activeTab.$button.removeClass("-hd-util-tabs-button-active"); self.$activeTab.$pane.removeClass("-hd-util-tabs-pane-active"); } $button.addClass("-hd-util-tabs-button-active"); $pane.addClass("-hd-util-tabs-pane-active"); self.$activeTab=tab; e.preventDefault(); }); }; this.initialize(); } hockeydata.extend(Tabs, hockeydata["util"], "Tabs"); })());((function(){ function InternationalizationLibrary(){} var translations={}; InternationalizationLibrary.addTranslations=function(newTranslations){ jQuery.extend(true, translations, newTranslations); }; InternationalizationLibrary.getTranslations=function(){ return translations; }; InternationalizationLibrary.translate=function(e, context){ if(e in translations){ if(context){ if(jQuery.isPlainObject(translations[e]) && (context in translations[e])) e=translations[e][context]; } else e=translations[e]; } return e; }; InternationalizationLibrary.format=function(e){ return e; }; InternationalizationLibrary.setDecimalSeparator=function(e){ InternationalizationLibrary.decimalSeparator=e; }; InternationalizationLibrary.setThousandsSeparator=function(e){ InternationalizationLibrary.thousandsSeparator=e; }; InternationalizationLibrary.decimalSeparator="."; InternationalizationLibrary.thousandsSeparator=","; hockeydata.extend(InternationalizationLibrary, hockeydata, "i18n");})()); ((function(){ function ImageLoader(){} ImageLoader.load=function(src, options){ var img=new Image(); var defaultOptions={ "onload": function(){}, "onerror": function(){ img.className += "-hd-img-error"; } }; options=jQuery.extend({}, defaultOptions, options || {}); img.onload=options.onload; img.onerror=options.onerror; img.src=src; return img; }; hockeydata.extend(ImageLoader, hockeydata.util, "ImageLoader"); })());((function(){ function IntelliTable(options){ var self=this; this.defaults={ "$domNode": jQuery(""), "autoShowLegend": false, "class": null, "defaultSort": "asc", "defaultSortColumn": null, "enableSorting": true, "headers": [], "hideHeaders": false, "hideLegendText": "Hide Legend", "legendTableClass": null, "onDrawBody": null, "rows": [], "scrollHelpText": "Scroll right to view more content", "showLegend": false, "showLegendText": "Show Legend", "showRanking": false, "tableClass": null }; this.options=jQuery.extend({}, this.defaults, options || {}); this.$domNode=this.options.$domNode; this.$scrollHelp=null; this.$data=null; this.$table=null; this.$thead=null; this.$tbody=null; this.$overlay=null; this.$legend=null; this.$legendLink=null; this.$legendTable=null; this.$legendTBody=null; this.legendVisible=false; this.legendItems={}; this.sortedBy=null; this.sorted=null; this.inactive=false; this.initialize=function(){ this.$domNode.empty(); this.$scrollHelp=jQuery(""); this.$data=jQuery(""); this.$table=jQuery(""); this.$thead=jQuery(""); this.$tbody=jQuery(""); this.$overlay=jQuery(""); this.$scrollHelp.html(this.options.scrollHelpText); this.$scrollHelp.addClass("-hd-util-intellitable-scroll-help"); this.$data.addClass("-hd-util-intellitable-data"); this.$overlay.addClass("-hd-util-intellitable-overlay"); this.$domNode.addClass("-hd-util-intellitable"); this.$table.append(this.$thead); this.$table.append(this.$tbody); this.$data.append(this.$table); this.$data.append(this.$overlay); this.$domNode.append(this.$scrollHelp); this.$domNode.append(this.$data); this.drawHead(); this.drawBody(); jQuery(window).resize(function(){ self.toggleScrollHelp(); }); if(this.options.hideHeaders) this.$thead.hide(); if(this.options["class"]) this.$domNode.addClass(this.options["class"]); if(this.options["tableClass"]) this.$table.addClass(this.options["tableClass"]); if(this.options.showLegend) this.drawLegend(); if(("defaultSortColumn" in this.options) && this.options.defaultSortColumn !== null) this.options.defaultSort==="desc" ? this.sortDescending(this.options.defaultSortColumn) : this.sortAscending(this.options.defaultSortColumn); }; this.getSortClickFunction=function(column){ return function(){ if(self.sortedBy===column && self.sorted==="asc"){ self.sorted="desc"; self.sortDescending(column); } else { self.sorted="asc"; self.sortAscending(column); } }; }; this.drawHead=function(){ this.$thead.empty(); if(this.options.headers && this.options.headers.length){ var $tr=jQuery("
"); if(this.options.showRanking) jQuery(" | ").html(" ").appendTo($tr); for(var i=0; i < this.options.headers.length; i++){ var header=this.options.headers[i]; var $th=jQuery(" | "); if(this.options.showLegend && "title" in header) this.legendItems[header.html]=header.title; for(var key in header){ if(header.hasOwnProperty(key)){ if(key==="html") $th.html(header[key]); else if(key==="style") $th.css(header[key]); else $th.attr(key, header[key]); } } if(this.options.enableSorting){ $th.addClass("-hd-clickable"); $th.bind("click", this.getSortClickFunction(i)); } $tr.append($th); } this.$thead.append($tr); } }; this.drawBody=function(){ this.$tbody.empty(); var lastExAequoRank=null; var lastExAequoValue=null; if(this.options.rows && this.options.rows.length){ for(var i=0; i < this.options.rows.length; i++){ var row=this.options.rows[i]; var $tr=jQuery("
"); var col, $td; if(this.options.showRanking){ $td=jQuery(" | "); var rank=i + 1; if(this.sortedBy !== null){ col=row.cols[this.sortedBy]; var sortValue=col ? col.html : null; if(col && ("value" in col)) sortValue=col.value; if(lastExAequoValue===sortValue){ $td.addClass("-hd-util-intellitable-ex-aequo"); rank=lastExAequoRank; } lastExAequoValue=sortValue; lastExAequoRank=rank; } $td.html(rank).addClass("-hd-util-intellitable-rank"); $tr.append($td); } for(var key in row){ if(row.hasOwnProperty(key)){ if(key==="cols"){ for(var j=0; j < row[key].length; j++){ col=row[key][j]; $td=jQuery(" | "); for(var colKey in col){ if(col.hasOwnProperty(colKey)){ if(colKey==="html") $td.html(col[colKey]); else if(colKey==="style") $td.css(col[colKey]); else $td.attr(colKey, col[colKey]); } } $tr.append($td); } } else if(key==="onClick"){ if(row[key]){ $tr.click(row[key]); $tr.addClass("-hd-clickable"); } } else if(key==="onMouseOver"){ $tr.mouseover(row[key]); } else if(key==="onMouseOut"){ $tr.mouseout(row[key]); } else $tr.attr(key, row[key]); } } this.$tbody.append($tr); } } this.setSortClasses(); this.toggleScrollHelp(); this.options.onDrawBody && this.options.onDrawBody(); }; this.sortAscending=function(sortColumn){ this.sortedBy=sortColumn; this.sorted="asc"; if(this.options.rows && this.options.rows.sort) this.options.rows.sort(function(a, b){ var colA=a.cols[sortColumn] || { "html": "" }; var colB=b.cols[sortColumn] || { "html": "" }; var sortValueA=colA.html; var sortValueB=colB.html; if("sortValue" in colA) sortValueA=colA.sortValue; else if("value" in colA) sortValueA=colA.value; if("sortValue" in colB) sortValueB=colB.sortValue; else if("value" in colB) sortValueB=colB.value; if(hockeydata.util.isNumeric(sortValueA)) sortValueA=parseFloat(sortValueA); if(hockeydata.util.isNumeric(sortValueB)) sortValueB=parseFloat(sortValueB); return (sortValueA < sortValueB ? -1 : 1); }); this.drawBody(); }; this.sortDescending=function(sortColumn){ this.sortedBy=sortColumn; this.sorted="desc"; if(this.options.rows && this.options.rows.sort) this.options.rows.sort(function(a, b){ var colA=a.cols[sortColumn] || { "html": "" }; var colB=b.cols[sortColumn] || { "html": "" }; var sortValueA=colA.html; var sortValueB=colB.html; if("sortValue" in colA) sortValueA=colA.sortValue; else if("value" in colA) sortValueA=colA.value; if("sortValue" in colB) sortValueB=colB.sortValue; else if("value" in colB) sortValueB=colB.value; if(hockeydata.util.isNumeric(sortValueA)) sortValueA=parseFloat(sortValueA); if(hockeydata.util.isNumeric(sortValueB)) sortValueB=parseFloat(sortValueB); return (sortValueB < sortValueA ? -1 : 1); }); this.drawBody(); }; this.setSortClasses=function(){ if(this.sortedBy !== null){ var nThChild=this.sortedBy + 1; if(this.options.showRanking) nThChild++; this.$thead.find("th").removeClass("-hd-util-intellitable-sorted -hd-util-intellitable-sort-asc -hd-util-intellitable-sort-desc"); this.$thead.find("th:nth-child(" + nThChild + ")").addClass("-hd-util-intellitable-sorted -hd-util-intellitable-sort-" + this.sorted); this.$tbody.find("td").removeClass("-hd-util-intellitable-sorted"); this.$tbody.find("td:nth-child(" + nThChild + ")").addClass("-hd-util-intellitable-sorted"); } }; this.drawLegend=function(){ this.$legend=jQuery("").addClass("-hd-util-intellitable-legend"); this.$legendLink=jQuery("").html(this.options.showLegendText).attr("href", "javascript: void(0);").appendTo(this.$legend); this.$legendTable=jQuery(""); this.$legendTBody=jQuery(""); this.$legend.append(this.$legendLink); this.$legend.append(this.$legendTable); this.$legendLink.bind("click", function(){ self.toggleLegend(); }); this.$legendTable.append(this.$legendTBody); this.$domNode.append(this.$legend); for(var key in this.legendItems){ if(this.legendItems.hasOwnProperty(key)){ var $tr=jQuery("
"); var $tdKey=jQuery(" | ").html(key); var $tdVal=jQuery(" | ").html(this.legendItems[key]); $tr.append($tdKey).append($tdVal); this.$legendTBody.append($tr); } } if(this.options["legendTableClass"]) this.$legendTable.addClass(this.options["legendTableClass"]); if(this.options.autoShowLegend) this.toggleLegend(); }; this.toggleLegend=function(){ if(!this.legendVisible){ this.$legendLink.html(this.options.hideLegendText); this.$legendTable.addClass("-hd-util-intellitable-legend-visible"); } else { this.$legendLink.html(this.options.showLegendText); this.$legendTable.removeClass("-hd-util-intellitable-legend-visible"); } this.legendVisible=!this.legendVisible; }; this.addRow=function(row){ this.options.rows.push(row); this.drawBody(); }; this.setRows=function(rows){ this.options.rows=rows; if(this.sortedBy !== null) this.sorted==="desc" ? this.sortDescending(this.sortedBy) : this.sortAscending(this.sortedBy); this.drawBody(); }; this.setRow=function(data, render){ var updated=false; for(var i=0; i < this.options.rows.length; i++){ if(this.options.rows[i].id===data.id){ this.options.rows[i]=data; updated=true; } } !updated && this.addRow(data); if(render){ if(this.sortedBy) this.sorted==="desc" ? this.sortDescending(this.sortedBy) : this.sortAscending(this.sortedBy); this.drawBody(); } }; this.deactivate=function(){ this.inactive=true; this.$overlay.show(); }; this.activate=function(){ this.inactive=false; this.$overlay.hide(); }; this.toggleScrollHelp=function(){ this.$data.width() < this.$table.width() && this.$data.width() > 0 ? this.$scrollHelp.show() : this.$scrollHelp.hide(); }; this.initialize(); } hockeydata.extend(IntelliTable, hockeydata.util, "IntelliTable");})());((function(){ var testDomains=[ "apidev.hockeydata.net", "cloud01dev.hockeydata.net" ]; var isProd=-1===testDomains.indexOf(document.domain); var apiHost="https://" + ( isProd ? "api.hockeydata.net" : document.domain ) + "/"; var myTeamHost=isProd ? "https://myteam.hockeydata.net/" : "https://myteamdev.hockeydata.net/"; var dataPaths={ "americanfootball": "data_af", "icehockey": "data" }; var imgPath="img/"; var dataUriConfiguration={ "getStandings": function(options){ var uri=""; if(options.league) uri += options.league + "/"; return uri + "Standings"; }, "getSchedule": function(options){ var uri=""; if(options.league) uri += options.league + "/"; return uri + "Schedule"; }, "getLeagueSuspensions": function(options){ var uri=""; if(options.league) uri += options.league + "/"; return uri + "LeagueSuspensions"; }, "getTeamStats": function(options){ var uri=""; if(options.league) uri += options.league + "/"; return uri + "Team" + (options.type || "Stats"); }, "getLeaders": function(options){ var uri=""; if(options.league) uri += options.league + "/"; return uri + "Leader" + (options.type || "Stats"); }, "getGameInfo": function(options){ var uri=""; if(options.league) uri += options.league + "/"; return uri + "GameInfo"; }, "getGamePlayByPlay": function(options){ var uri=""; if(options.league) uri += options.league + "/"; return uri + "GamePlayByPlay"; }, "getGameTeamStats": function(options){ var uri=""; if(options.league) uri += options.league + "/"; return uri + "GameTeamStats"; }, "getGamePlayerStats": function(options){ var uri=""; if(options.league) uri += options.league + "/"; return uri + "GamePlayerStats"; }, "getGameReport": function(options){ var uri=""; if(options.league) uri += options.league + "/"; return uri + "GetGameReport"; }, "getTeamDetails": function(options){ var uri=""; if(options.league) uri += options.league + "/"; return uri + "GetTeamDetails"; }, "getPlayerCareerStats": function(options){ var uri=""; if(options.league) uri += options.league + "/"; return uri + "GetPlayerCareerStats"; }, "getPlayerDetails": function(options){ var uri=""; if(options.league) uri += options.league + "/"; return uri + "GetPlayerDetails"; }, "getPlayers": function(options){ var uri=""; if(options.league) uri += options.league + "/"; return uri + "GetAllPlayers"; }, "getKnockoutStage": function(options){ var uri=""; if(options.league) uri += options.league + "/"; return uri + "KnockoutStage"; }, "getTimeOnIce": function(options){ var uri=""; if(options.league) uri += options.league + "/"; return uri + "TimeOnIceSnapshot"; }, "getCategoryLeaders": function(options){ var uri=""; var types={ "Player": "Individual", "Team": "Team" }; if(options.league) uri += options.league + "/"; return uri + "CategoryLeaders" + ((options.type in types) ? types[options.type] : ""); }, "getAds": "pa/GetPageAccessStats", "adTrack": "pa/PageAccessTrack" }; function UriComposer(){} function getDataPath(options){ var sport=jQuery.isPlainObject(options) && ("sport" in options) ? options.sport : null; return (sport in dataPaths) ? (dataPaths[sport] + "/") : ""; } UriComposer.getDataUri=function(serviceName, options){ var uri=apiHost + getDataPath(options); if(serviceName in dataUriConfiguration){ var config=dataUriConfiguration[serviceName]; if(jQuery.isFunction(config)) uri += config(options); else uri += dataUriConfiguration[serviceName]; } return uri; }; UriComposer.parseUri=function(link, id){ var generatedUri=null; if(link && id){ if(jQuery.isFunction(link)) generatedUri=link(id); else if(hockeydata["util"].isString(link)) generatedUri=hockeydata["util"].sprintf(link, id); } return generatedUri; }; UriComposer.getTeamLogoUri=function(options){ options=options || {}; var uri=apiHost + imgPath + options.sport + "/" + options.league + "/team-logos/"; if(options.divisionId) uri += options.divisionId + "/"; return uri + options.teamId + ".png"; }; UriComposer.getTeamPictureUri=function(options){ options=options || {}; return apiHost + imgPath + options.sport + "/" + options.league + "/team-pictures/" + options.divisionId + "/" + options.teamId + ".jpg"; }; UriComposer.getPlayerPortraitUri=function(options){ options=options || {}; var uri=apiHost + imgPath + options.sport + "/" + options.league + "/player-portraits/"; if(options.divisionId) uri += options.divisionId + "/"; return uri + options.playerId + ".png"; }; UriComposer.getBroadcasterLogoUri=function(options){ options=options || {}; return apiHost + imgPath + "_static/broadcasters/" + options.broadcasterId + ".png"; }; UriComposer.getGhostPlayerPortraitUri=function(options){ options=options || {}; return apiHost + imgPath + options.sport + "/_static/ghost-player.png"; }; UriComposer.getNationFlagUri=function(options){ options=options || {}; return apiHost + imgPath + "_static/flags/" + options.nation + ".png"; }; UriComposer.getMyTeamPlayerRegistrationUrl=function(){ return myTeamHost + "myteam/data-asp/api/SavePerson"; }; UriComposer.getMyTeamUploadUrl=function(){ return myTeamHost + "myteam/data-asp/api/UploadFile"; }; UriComposer.getGameDocumentUrl=function(docType, data, options){ var uri=apiHost + getDataPath(options); var params=[]; if(options.league) uri += options.league + "/"; params.push("docType=" + docType); params.push("apiKey=" + options.apiKey); params.push("referer=" + document.domain); params.push("timestamp=" + (new Date()).getTime()); params.push("gameId=" + data.id); params.push("lang=en"); return uri + "GameDocument?" + params.join("&"); }; UriComposer.getDivisionLogoUri=function(options){ options=options || {}; var uri=apiHost + imgPath + options.sport + "/" + options.league + "/division-logos/"; return uri + options.divisionId + ".png"; }; hockeydata.extend(UriComposer, hockeydata["util"], "UriComposer");})()); ((function(){ function LinkComposer(){} LinkComposer.getLinkClickFunction=function(url){ return function(){ if(url) location.href=url; }; }; hockeydata.extend(LinkComposer, hockeydata.util, "LinkComposer"); })()); ((function(){ function Request(options){ var self=this; this.defaultOptions={ "autoSend" : true, "data": null, "complete": null, "error": null, "success": null, "url": null }; this.defaultData={ "apiKey": "VOID", "lang": "en", "referer": document.domain, "timestamp": (new Date()).getTime() }; this.options=jQuery.extend({}, this.defaultOptions, options || {}); this.options.data=jQuery.extend({}, this.defaultData, this.options.data || {}); this.xhr=null; this.requests={}; this.complete=false; this.aborted=false; this.send=function(){ this.xhr=jQuery.ajax({ "complete": function(){ self.complete=true; if(!self.aborted && self.options.complete) self.options.complete(); }, "crossDomain": true, "data": this.options.data, "dataType": "jsonp", "error": function(e){ if(!self.aborted && self.options.error) self.options.error(e); }, "success": function(e){ if(!self.aborted && self.options.success){ self.options.success(e); } }, "url": this.options.url }); }; this.abort=function(){ if(!self.complete){ self.complete=true; self.aborted=true; if(self.xhr) self.xhr.abort(); self.xhr=null; } }; if(this.options.autoSend) this.send(); } hockeydata.extend(Request, hockeydata.util, "Request"); })());((function(){ var subscriptionContainers={}; var defaultReloadInterval=1000 * 60 * 2; var minReloadInterval=1000 * 10; var checkInterval=1000 * 2; var initialTimeout=100; var Data=function(){}; var Subscription=function(subscriptionId, options){ this.options=options || {}; this.subscriptionId=subscriptionId; this.unsubscribe=function(){ if(this.subscriptionId in subscriptionContainers){ var subscriptionContainer=subscriptionContainers[this.subscriptionId]; if(subscriptionContainer){ subscriptionContainer.removeSubscription(this); if(!subscriptionContainer.hasSubscriptions()) delete subscriptionContainers[this.subscriptionId]; } } }; }; var SubscriptionContainer=function(url, requestData, reloadInterval){ var self=this; var subscriptions=[]; var data=null; var status=null; var reloadCount=0; var request=null; var complete=false; var loading=false; var unsubscribed=false; var nextUpdate=0; requestData=requestData || {}; this.reloadInterval=reloadInterval; this.hasData=function(){ return data !== null; }; this.addSubscription=function(subscription){ if(subscription.options.begin) subscription.options.begin(); this.callback(subscription); subscriptions.push(subscription); }; this.removeSubscription=function(subscription){ for(var i=0; i < subscriptions.length; i++){ if(subscriptions[i]===subscription){ subscriptions.splice(i, 1); unsubscribed=true; } } }; this.hasSubscriptions=function(){ return subscriptions.length > 0; }; this.callback=function(subscription){ if(status==="success"){ if(subscription.options.success) subscription.options.success(data); } else if(status==="error"){ if(subscription.options.error) subscription.options.error(data); } if(complete && subscription.options.complete) subscription.options.complete(); }; this.callbackAll=function(){ unsubscribed=false; for(var i=0; i < subscriptions.length; i++){ this.callback(subscriptions[i]); if(unsubscribed){ i--; unsubscribed=false; } } }; this.load=function(){ var now=(new Date()).getTime(); if(nextUpdate <= now){ nextUpdate=now + reloadInterval; var widgetWidths=[]; if(loading && request) request.abort(); if(reloadCount > 0 && !("r" in requestData)) requestData.r=reloadInterval; for(var i=0; i < subscriptions.length; i++){ subscriptions[i].options.begin && subscriptions[i].options.begin(); subscriptions[i].options.$domNode && widgetWidths.indexOf(subscriptions[i].options.$domNode.width())===-1 && widgetWidths.push(subscriptions[i].options.$domNode.width()); } reloadCount++; requestData.widgetWidths=JSON.stringify(widgetWidths); loading=true; request=new hockeydata["util"]["Request"]({ "complete": function(){ complete=true; loading=false; self.callbackAll(); }, "data": requestData, "error": function(e){ status="error"; data=e; }, "success": function(e){ status=(e["statusId"] > 0 ? "success" : "error"); data=e; }, "url": url }); } }; }; var reload=function(){ for(var subscriptionId in subscriptionContainers){ if(subscriptionContainers.hasOwnProperty(subscriptionId)){ var subscriptionContainer=subscriptionContainers[subscriptionId]; subscriptionContainer.load(); } } }; Data.subscribe=function(e){ var defaultOptions={ "reloadInterval": defaultReloadInterval, "url": "" }; var options=jQuery.extend({}, defaultOptions, e || {}); options.reloadInterval=Number(options.reloadInterval); if(isNaN(options.reloadInterval) || options.reloadInterval===0) options.reloadInterval=defaultReloadInterval; if(options.reloadInterval < minReloadInterval) options.reloadInterval=minReloadInterval; var url=options.url; var subscriptionId=url + "_" + (jQuery.isPlainObject(options.data) ? JSON.stringify(options.data) : "") + "_" + options.reloadInterval; var subscription=new Subscription(subscriptionId, options); var subscriptionContainer=(subscriptionId in subscriptionContainers) ? subscriptionContainers[subscriptionId] : null; if(!subscriptionContainer){ subscriptionContainer=new SubscriptionContainer(url, options.data, options.reloadInterval); subscriptionContainers[subscriptionId]=subscriptionContainer; } subscriptionContainer.addSubscription(subscription); return subscription; }; Data.error=function(e, $domNode){ e=e || {}; $domNode.html(jQuery("").addClass("-hd-error -hd-data-error").html("Loading Data failed! Status Id: " + (e["statusId"] || e.status || "unknnown") + ", Status Text: " + (e["statusMsg"] || e.statusText || "unknnown") + ", Data: [" + (JSON.stringify(e.data) || "none") + "]")); }; setInterval(reload, checkInterval); setTimeout(reload, initialTimeout); hockeydata.extend(Data, hockeydata["util"], "Data");})()); ((function(){ function AdPlaceholder(options){ this.defaultOptions={ "apiKey": "VOID" }; this.options=jQuery.extend({}, this.defaultOptions, options || {}); } AdPlaceholder.adQuantifier=1000; hockeydata.extend(AdPlaceholder, hockeydata["util"], "AdPlaceholder"); })()); ((function(){ var adSpaces=[]; var AdController=function(){}; var AdHandler=function(){ var self=this; var initialized=false; var initTimeout=null; var defaultOptions={ "apiKey": "VOID", "dataUrlAds": null }; this.options=null; this.registerSpace=function(adSpace){ adSpaces.push(adSpace); if(!initialized){ initTimeout && clearTimeout(initTimeout); initTimeout=setTimeout(function(){ initialize(adSpace.options); }, 200); } }; this.unregisterSpace=function(adSpace){ for(var i=0; i < adSpaces.length; i++){ if(adSpace===adSpaces[i]){ adSpace.destroy(); adSpaces.splice(i, 1); return true; } } return false; }; var initialize=function(options){ initialized=true; self.options=jQuery.extend({}, defaultOptions, options || {}); if(!self.options.dataUrlAds) self.options.dataUrlAds=hockeydata["util"]["UriComposer"].getDataUri("getAds", self.options); new hockeydata["util"]["Request"]({ "data": { "apiKey": self.options.apiKey, "screenResolution": hockeydata["util"].getScreenResolution() }, "success": function(e){ e["statusId"] > 0 && e.data && processAds(e.data); }, "url": self.options.dataUrlAds }); }; var processAds=function(ads){ for(var i=0; i < ads.length; i++) displayAd(ads[i]); }; var getFreeAdSpace=function(){ var adSpace=null; for(var i=0; i < adSpaces.length; i++) if(!adSpaces[i].hasAd() && (!adSpace || (adSpaces[i].getAdQuantifier() > adSpace.getAdQuantifier()))) adSpace=adSpaces[i]; return adSpace; }; var displayAd=function(ad){ var freeAdSpace=getFreeAdSpace(); freeAdSpace && freeAdSpace.setAd(ad); }; }; var AdSpace=function(options){ var self=this; var defaultOptions={ "apiKey": "VOID", "$domNode": jQuery(""), "adQuantifier": 0, "sport": null }; var ad=null; this.options=jQuery.extend({}, defaultOptions, options || {}); var initialize=function(){ self.options.$domNode.addClass("-hd-util-ad-space"); }; this.setAd=function(adData){ ad=new Ad({ "$domNode": jQuery("").appendTo(this.options.$domNode), "apiKey": self.options.apiKey, "id": adData.id, "imageUrl": adData.content.imageUrl, "html": adData.content.html, "javascript": adData.content.javascript, "sport": self.options.sport }); }; this.destroy=function(){ ad && ad.destroy(); this.options.$domNode && this.options.$domNode.empty(); }; this.hasAd=function(){ return (ad !== null); }; this.getAdQuantifier=function(){ return this.options.adQuantifier; }; initialize(); }; var Ad=function(options){ var self=this; var defaultOptions={ "$domNode": jQuery(""), "apiKey": "VOID", "dataUrlAdTrack": null, "id": null, "imageUrl": null, "html": null, "javascript": null, "sport": null, "noticeText": hockeydata["i18n"].translate("Anzeige") }; this.options=jQuery.extend({}, defaultOptions, options || {}); var initialize=function(){ if(!self.options.dataUrlAdTrack) self.options.dataUrlAdTrack=hockeydata["util"]["UriComposer"].getDataUri("adTrack", self.options); self.options.$domNode.addClass("-hd-util-ad"); if(self.options.imageUrl){ var $imgContainer=jQuery("").addClass("-hd-util-ad-image").appendTo(self.options.$domNode); var img=new Image(); img.onload=function(){ var $a=jQuery(""); var url=self.options.dataUrlAdTrack + "?adId=" + self.options.id + "&apiKey=" + self.options.apiKey + "&screenResolution=" + hockeydata["util"].getScreenResolution(); $a.attr("href", url); $a.attr("target", "_blank"); $a.appendTo($imgContainer); $a.append(img); }; img.src=self.options.imageUrl; } if(self.options.html) jQuery("").addClass("-hd-util-ad-html").html(self.options.html).appendTo(self.options.$domNode); if(self.options.javascript){ var $javascriptContainer=jQuery("").addClass("-hd-util-ad-javascript").appendTo(self.options.$domNode); (function($domNode){ eval(self.options.javascript); })($javascriptContainer); } jQuery("").addClass("-hd-util-ad-notice").html(self.options.noticeText).appendTo(self.options.$domNode); }; this.destroy=function(){ self.$domNode.empty(); }; initialize(); }; var adHandler=new AdHandler(); AdController.createSpace=function(options){ var adSpace=new AdSpace(options); adHandler.registerSpace(adSpace); }; AdController.removeSpace=function(adSpace){ adHandler.unregisterSpace(adSpace); }; hockeydata.extend(AdController, hockeydata["util"], "AdController"); })()); ( ( function(){ function ResponsiveDesign( options ){ var _defaultOptions={ $domNode: jQuery( '' ), breakpoints: [ { size: 1200, name: 'large-desktop' }, { size: 992, name: 'desktop' }, { size: 768, name: 'tablet' }, { size: 576, name: 'large-mobile' } ], classNameBase: '-hd-rd-', interval: 100 }, _options=jQuery.extend( {}, _defaultOptions, options || {} ), _timer=0, _className=null, _domNodeWidth=null; var _initialize=function(){ _watchDog(); _timer=setInterval( _watchDog, _options.interval ); }; var _getClassName=function( width ){ for( var i=0; i < _options.breakpoints.length; i++ ){ var breakpoint=_options.breakpoints[ i ]; if( width >= breakpoint.size ){ return _options.classNameBase + breakpoint.name; } } return _options.classNameBase + 'mobile'; }; var _watchDog=function(){ var width=_options.$domNode.width(); if( _className===null || _domNodeWidth===null || _domNodeWidth !== width){ _className && _options.$domNode.removeClass( _className ); _domNodeWidth=width; _className=_getClassName( width ); _options.$domNode.addClass( _className ); } }; this.destroy=function(){ _className && _options.$domNode.removeClass( _className ); _timer && clearInterval( _timer ); }; _initialize(); } hockeydata.extend( ResponsiveDesign, hockeydata[ 'util' ], 'ResponsiveDesign' ); } )() );((function(){ function Widget(options){ var self=this; this.instance=null; this.defaultOptions={ "$domNode": jQuery(""), "autoReload": false, "responsive": true, "widgetName": null }; this.options=jQuery.extend({}, this.defaultOptions, options || {}); this.widgetName=this.options.widgetName; this.widgetClass=null; this.$domNode=this.options.$domNode; this.adSpace=null; this.responsiveDesign=null; this.initialize=function(){ this.$domNode.addClass("-hd-widget"); if(this.widgetName){ this.widgetClass=eval(this.widgetName); if(this.widgetClass){ this.instance=new this.widgetClass(jQuery.extend({}, this.options, { "$domNode": jQuery("").appendTo(this.$domNode) })); if(this.widgetClass.adQuantifier && this.options.sport==="americanfootball"){ this.adSpace=hockeydata["util"]["AdController"].createSpace(jQuery.extend({}, this.options, { "adQuantifier": this.widgetClass.adQuantifier, "$domNode": jQuery("").appendTo(this.$domNode) })); } if(this.options.responsive) this.responsiveDesign=new hockeydata["util"]["ResponsiveDesign"]({ "$domNode": this.$domNode }); } else { this.$domNode.html(jQuery("").addClass("-hd-error").html("Error: Widget [" + this.widgetName + "] not found. See Console for details.")); console && console.error && console.error("The Widget Class [" + this.widgetName + "] was not found. Make sure to load the class with the hockeydata API and check the class name's spelling. Class names are case-sensitive."); } } }; this.destroy=function(){ if(jQuery.isFunction(this.instance.destroy)) this.instance.destroy(); this.$domNode.empty(); this.instance=null; this.defaultOptions=null; this.options=null; this.widgetName=null; this.widgetClass=null; this.$domNode=null; this.initialize=null; self=null; delete this.instance; delete this.defaultOptions; delete this.options; delete this.widgetName; delete this.widgetClass; delete this.$domNode; delete this.initialize; hockeydata["util"]["AdController"].removeSpace(this.adSpace); this.responsiveDesign && this.responsiveDesign.destroy(); }; this.initialize(); } hockeydata.extend(Widget, hockeydata["util"], "Widget");})()); ((function(){ function WidgetParser($domNode){ this.$domNode=$domNode; this.parse=function(){ this.$domNode.find("[data-hd-widget]").each(function(){ var $this=jQuery(this); if(!$this.hasClass("-hd-widget-parsed")){ var widgetName=$this.attr("data-hd-widget"); var options=$this.attr("data-hd-widget-options"); if(options){ try { options=JSON.parse(options); } catch (e){ options={}; $this.addClass("-hd-error").append("ERROR: Invalid widget options: data-hd-widget-options is not a valid JSON [" + e + "]."); } } else { options={}; $this.addClass("-hd-error").append("ERROR: Widget options not found: attribute data-hd-widget-options is missing."); } if("targetElement" in options) options.$domNode=jQuery(options["targetElement"]); if(!("$domNode" in options)) options.$domNode=$this; if(!("widgetName" in options)) options.widgetName=widgetName; options.$domNode.addClass("-hd -hd-widget-parsed"); new hockeydata.util.Widget(options); } }); } } hockeydata.extend(WidgetParser, hockeydata.util, "WidgetParser"); hockeydata.enqueue(function(){ var wp=new hockeydata.util["WidgetParser"](jQuery("body")); wp.parse(); }); })());((function(){ function LosLibrary(){} hockeydata.extend(LosLibrary, hockeydata, "los");})());((function(){ function Team(options){} hockeydata.extend(Team, hockeydata["los"], "Team");})());((function(){ function FullPage(options){ var self=this; this.defaultOptions={ "$domNode": jQuery(""), "additionalColumnsGames": null, "additionalColumnsGoalkeeperStats": null, "additionalColumnsPlayerStats": null, "additionalColumnsRosterDetails": null, "apiKey": "VOID", "autoReload": false, "columnDefinitionGames": null, "columnDefinitionGoalkeeperStats": null, "columnDefinitionPlayerStats": null, "columnDefinitionRosterDetails": null, "columnsGames": null, "columnsGoalkeeperStats": null, "columnsPlayerStats": null, "columnsRosterDetails": null, "columnSetGames": "default", "columnSetGoalkeeperStats": "default", "columnSetPlayerStats": "default", "columnSetRosterDetails": "default", "dataUrl": null, "divisionId": null, "divisionIdUrlParameter": "divisionId", "enablePreGameReport": false, "error": function(e){ self.error(e); }, "gameLink": null, "league": null, "paint": function(e){ self.paint(e); }, "paintComplete": null, "playerLink": null, "requestData": {}, "rosterOverviewPlayerNameOrder": null, "rowDefinitionTeamStats": null, "rowsTeamStats": null, "rowSetTeamStats": "default", "showPlayerNationInRosterOverview": false, "showPlayerNationFlagInRosterOverview": false, "showTeamFacts": false, "sport": null, "tabs": null, "teamId": null, "teamIdUrlParameter": "teamId" }; this.options=jQuery.extend({}, this.defaultOptions, options || {}); this.options.requestData.apiKey=this.options.apiKey; this.$domNode=this.options.$domNode; this.domNodes={}; this.tables={}; this.dataSubscription=null; this.firstPaint=true; this.initialize=function(){ if(!this.options.league) this.options.league=hockeydata["util"].getLeague(this.options.sport); if(!this.options.divisionId && this.options.divisionIdUrlParameter) this.options.divisionId=hockeydata["util"].getParameter(this.options.divisionIdUrlParameter); if(!this.options.teamId && this.options.teamIdUrlParameter) this.options.teamId=hockeydata["util"].getParameter(this.options.teamIdUrlParameter); this.options.requestData.divisionId=this.options.divisionId; this.options.requestData.teamId=this.options.teamId; if(!this.options.dataUrl) this.options.dataUrl=hockeydata["util"]["UriComposer"].getDataUri("getTeamDetails", this.options); this.$domNode.addClass("-hd-los -hd-los-team-full-page"); this.dataSubscription=hockeydata["util"]["Data"].subscribe({ "$domNode": this.$domNode, "begin": function(){ self.$domNode.addClass("-hd-loading"); }, "complete": function(){ self.$domNode.removeClass("-hd-loading"); if(!self.options.autoReload) self.dataSubscription.unsubscribe(); }, "data": self.options.requestData, "error": self.options.error, "success": function(e){ if(e["statusId"] > 0 && ("data" in e) && e.data){ self.options._divisionId=e.data.divisionId; self.options.paint(e.data); if(self.options.paintComplete) self.options.paintComplete["call"](self); } else self.options.error(e); }, "url": self.options.dataUrl }); }; this.destroy=function(){ if(this.dataSubscription) this.dataSubscription.unsubscribe(); }; this.error=function(e){ if(this.firstPaint) hockeydata["util"]["Data"].error(e, this.$domNode); }; this.initializeTable=function(table, columns, columnDefinition, $node){ var tableHeaders=[]; for(var i=0; i < columns.length; i++){ var column=columns[i]; if(columnDefinition && (column in columnDefinition) && ("header" in columnDefinition[column])) tableHeaders.push(columnDefinition[column]["header"]); else tableHeaders.push({ "html": " " }); } this.tables[table]=new hockeydata["util"]["IntelliTable"](jQuery.extend({}, this.options, { "$domNode": $node, "headers": tableHeaders })); }; this.paint=function(data){ var i, tableRow, category; var drawPlayerStats=("playerStats" in data) || ("goalkeeperStats" in data); data=data || {}; data.teamData=data.teamData || {}; data.teamData.images=data.teamData.images || {}; data.games=data.games || []; data.teamRoster=data.teamRoster || []; if(self.firstPaint){ self.firstPaint=false; this.domNodes.teamInfo={}; this.domNodes.teamInfo.$teamInfo=jQuery("").addClass("-hd-los-team-full-page-team-info").appendTo(this.$domNode); this.domNodes.teamInfo.$teamLogo=jQuery("").addClass("-hd-los-team-full-page-team-logo").appendTo(this.domNodes.teamInfo.$teamInfo); this.domNodes.teamInfo.$teamShortname=jQuery("").addClass("-hd-los-team-full-page-team-short-name").appendTo(this.domNodes.teamInfo.$teamInfo); this.domNodes.teamInfo.$teamLongname=jQuery("").addClass("-hd-los-team-full-page-team-long-name").appendTo(this.domNodes.teamInfo.$teamInfo); if(this.options.showTeamFacts){ this.domNodes.teamFacts={}; this.domNodes.teamFacts.$teamFacts=jQuery("").addClass("-hd-los-team-full-page-team-facts"); this.domNodes.teamFacts.$teamPicture=jQuery("").addClass("-hd-los-team-full-page-team-picture").appendTo(this.domNodes.teamFacts.$teamFacts); this.domNodes.teamFacts.$teamFactsTable=jQuery("").addClass("-hd-los-team-full-page-team-facts-table").appendTo(this.domNodes.teamFacts.$teamFacts); this.tables.teamFacts=new hockeydata["util"]["IntelliTable"](jQuery.extend({}, this.options, { "$domNode": this.domNodes.teamFacts.$teamFactsTable, "hideHeaders": true })); var teamFacts=null; self.domNodes.teamFacts.$teamPicture.html(hockeydata["util"]["ImageLoader"].load((data.teamData.images["teamPicture"] || hockeydata["util"]["UriComposer"].getTeamPictureUri({ "sport": self.options.sport, "league": self.options.league, "divisionId": (self.options._divisionId || self.options.divisionId), "teamId": data.teamData.id })))); try { teamFacts=JSON.parse(data.teamData["teamInformation"]); } catch(e){} if(hockeydata["util"].isArray(teamFacts)){ var teamFactsTableRows=[]; for(i=0; i < teamFacts.length; i++){ var teamFact=teamFacts[i]; tableRow={ "cols": [], "class": "-hd-los-team-full-page-team-facts-table-row", "style": teamFact.style }; if(teamFact["isHeader"]){ tableRow.class += " -hd-los-team-full-page-team-facts-table-header-row"; tableRow.cols.push({ "html": teamFact.label, "colSpan": 2 }); } else if(teamFact["noLabel"]) tableRow.cols.push({ "html": teamFact.text, "colSpan": 2 }); else { tableRow.cols.push({ "html": teamFact.label }); tableRow.cols.push({ "html": teamFact.text }); } teamFactsTableRows.push(tableRow); } this.tables.teamFacts.setRows(teamFactsTableRows); } } this.teamStatsCategories=hockeydata["los"]["Configuration"].getTeamFullPageStatsCategories(this.options.sport); this.domNodes.teamStats={}; this.domNodes.teamStats.$teamStats=jQuery("").addClass("-hd-los-team-full-page-container -hd-los-team-full-page-team-stats"); this.domNodes.teamStats.$headline=jQuery("").addClass("-hd-los-team-full-page-headline").html(hockeydata["i18n"].translate("Team Stats")).appendTo(this.domNodes.teamStats.$teamStats); this.domNodes.teamStats.$data=jQuery("").addClass("-hd-los-team-full-page-container-data -hd-los-team-full-page-team-stats-data").appendTo(this.domNodes.teamStats.$teamStats); for(i=0; i < this.teamStatsCategories.length; i++){ category=this.teamStatsCategories[i]; if(!this.options["rowDefinitionTeamStats" + category.name]) this.options["rowDefinitionTeamStats" + category.name]=hockeydata["los"]["Configuration"].getTableRowDefinition({ "sport": this.options.sport, "league": this.options.league, "type": "teamFullPageTeamStats" + category.name }); if(!this.options["rowsTeamStats" + category.name]) this.options["rowsTeamStats" + category.name]=hockeydata["los"]["Configuration"].getTableRows({ "sport": this.options.sport, "league": this.options.league, "rowSet": this.options["rowSetTeamStats" + category.name], "type": "teamFullPageTeamStats" + category.name }); else if(hockeydata["util"].isString(this.options["rowsTeamStats" + category.name])) this.options["rowsTeamStats" + category.name]=this.options["rowsTeamStats" + category.name].split(","); } this.tables.teamStats=new hockeydata["util"]["IntelliTable"](jQuery.extend({}, this.options, { "$domNode": this.domNodes.teamStats.$data, "hideHeaders": true, "rows": [] })); if(drawPlayerStats){ this.domNodes.playerStats={}; this.domNodes.playerStats.$playerStats=jQuery(""); if("playerStats" in data){ this.domNodes.playerStats.$fieldplayers=jQuery("").addClass("-hd-los-team-full-page-container -hd-los-team-full-page-player-stats").appendTo(this.domNodes.playerStats.$playerStats); this.domNodes.playerStats.$fieldplayersHeadline=jQuery("").addClass("-hd-los-team-full-page-headline").html(hockeydata["i18n"].translate("Fieldplayer Stats")).appendTo(this.domNodes.playerStats.$fieldplayers); this.domNodes.playerStats.$fieldplayersData=jQuery("").addClass("-hd-los-team-full-page-container-data -hd-los-team-full-page-player-stats-data").appendTo(this.domNodes.playerStats.$fieldplayers); if(!this.options.columnDefinitionPlayerStats) this.options.columnDefinitionPlayerStats=hockeydata["los"]["Configuration"].getTableColumnDefinition({ "sport": this.options.sport, "league": this.options.league, "type": "teamFullPagePlayerStats" }); if(!this.options.columnsPlayerStats) this.options.columnsPlayerStats=hockeydata["los"]["Configuration"].getTableColumns({ "sport": this.options.sport, "league": this.options.league, "columnSet": this.options.columnSetPlayerStats, "type": "teamFullPagePlayerStats" }); else if(hockeydata["util"].isString(this.options.columnsPlayerStats)) this.options.columnsPlayerStats=this.options.columnsPlayerStats.split(","); hockeydata["los"]["Configuration"].extendColumns(this.options.columnsPlayerStats, this.options.additionalColumnsPlayerStats); this.initializeTable("playerStats", this.options.columnsPlayerStats, this.options.columnDefinitionPlayerStats, this.domNodes.playerStats.$fieldplayersData); } if("goalkeeperStats" in data){ this.domNodes.playerStats.$goalkeepers=jQuery("").addClass("-hd-los-team-full-page-container -hd-los-team-full-page-player-stats").appendTo(this.domNodes.playerStats.$playerStats); this.domNodes.playerStats.$goalkeepersHeadline=jQuery("").addClass("-hd-los-team-full-page-headline").html(hockeydata["i18n"].translate("Goalkeeper Stats")).appendTo(this.domNodes.playerStats.$goalkeepers); this.domNodes.playerStats.$goalkeepersData=jQuery("").addClass("-hd-los-team-full-page-container-data -hd-los-team-full-page-player-stats-data").appendTo(this.domNodes.playerStats.$goalkeepers); if(!this.options.columnDefinitionGoalkeeperStats) this.options.columnDefinitionGoalkeeperStats=hockeydata["los"]["Configuration"].getTableColumnDefinition({ "sport": this.options.sport, "league": this.options.league, "type": "teamFullPageGoalkeeperStats" }); if(!this.options.columnsGoalkeeperStats) this.options.columnsGoalkeeperStats=hockeydata["los"]["Configuration"].getTableColumns({ "sport": this.options.sport, "league": this.options.league, "columnSet": this.options.columnSetGoalkeeperStats, "type": "teamFullPageGoalkeeperStats" }); else if(hockeydata["util"].isString(this.options.columnsGoalkeeperStats)) this.options.columnsGoalkeeperStats=this.options.columnsGoalkeeperStats.split(","); hockeydata["los"]["Configuration"].extendColumns(this.options.columnsGoalkeeperStats, this.options.additionalColumnsGoalkeeperStats); this.initializeTable("goalkeeperStats", this.options.columnsGoalkeeperStats, this.options.columnDefinitionGoalkeeperStats, this.domNodes.playerStats.$goalkeepersData); } } this.domNodes.games={}; this.domNodes.games.$games=jQuery("").addClass("-hd-los-team-full-page-container -hd-los-team-full-page-games"); this.domNodes.games.$headline=jQuery("").addClass("-hd-los-team-full-page-headline").html(hockeydata["i18n"].translate("Games")).appendTo(this.domNodes.games.$games); this.domNodes.games.$data=jQuery("").addClass("-hd-los-team-full-page-container-data -hd-los-team-full-page-games-data").appendTo(this.domNodes.games.$games); if(!this.options.columnDefinitionGames) this.options.columnDefinitionGames=hockeydata["los"]["Configuration"].getTableColumnDefinition({ "sport": this.options.sport, "league": this.options.league, "type": "teamFullPageGames" }); if(!this.options.columnsGames) this.options.columnsGames=hockeydata["los"]["Configuration"].getTableColumns({ "sport": this.options.sport, "league": this.options.league, "columnSet": this.options.columnSetGames, "type": "teamFullPageGames" }); else if(hockeydata["util"].isString(this.options.columnsGames)) this.options.columnsGames=this.options.columnsGames.split(","); hockeydata["los"]["Configuration"].extendColumns(this.options.columnsGames, this.options.additionalColumnsGames); this.initializeTable("games", this.options.columnsGames, this.options.columnDefinitionGames, this.domNodes.games.$data); this.domNodes.roster={}; this.domNodes.roster.$roster=jQuery("").addClass("-hd-los-team-full-page-roster"); this.domNodes.roster.$overview=jQuery("").addClass("-hd-los-team-full-page-roster-overview"); this.domNodes.roster.$details=jQuery("").addClass("-hd-los-team-full-page-container -hd-los-team-full-page-roster-details"); this.domNodes.roster.$detailsHeadline=jQuery("").addClass("-hd-los-team-full-page-headline").html(hockeydata["i18n"].translate("Roster")).appendTo(this.domNodes.roster.$details); this.domNodes.roster.$detailsData=jQuery("").addClass("-hd-los-team-full-page-container-data -hd-los-team-full-page-roster-details-data").appendTo(this.domNodes.roster.$details); if(!this.options.columnDefinitionRosterDetails) this.options.columnDefinitionRosterDetails=hockeydata["los"]["Configuration"].getTableColumnDefinition({ "sport": this.options.sport, "league": this.options.league, "type": "teamFullPageRosterDetails" }); if(!this.options.columnsRosterDetails) this.options.columnsRosterDetails=hockeydata["los"]["Configuration"].getTableColumns({ "sport": this.options.sport, "league": this.options.league, "columnSet": this.options.columnSetRosterDetails, "type": "teamFullPageRosterDetails" }); else if(hockeydata["util"].isString(this.options.columnsRosterDetails)) this.options.columnsRosterDetails=this.options.columnsRosterDetails.split(","); hockeydata["los"]["Configuration"].extendColumns(this.options.columnsRosterDetails, this.options.additionalColumnsRosterDetails); this.initializeTable("rosterDetails", this.options.columnsRosterDetails, this.options.columnDefinitionRosterDetails, this.domNodes.roster.$detailsData); var availableTabs={ "teamStats": { "button": { "label": hockeydata["i18n"].translate("Team Stats") }, "content": this.domNodes.teamStats.$teamStats }, "games": { "button": { "label": hockeydata["i18n"].translate("Games") }, "content": this.domNodes.games.$games }, "roster": { "button": { "label": hockeydata["i18n"].translate("Roster") }, "content": this.domNodes.roster.$roster } }; var tabs=[]; var tabsRoster=[ { "button": { "label": hockeydata["i18n"].translate("Overview") }, "content": this.domNodes.roster.$overview }, { "button": { "label": hockeydata["i18n"].translate("Details") }, "content": this.domNodes.roster.$details } ]; if(this.options.showTeamFacts) availableTabs["teamInfo"]={ "button": { "label": hockeydata["i18n"].translate("Team Info") }, "content": this.domNodes.teamFacts.$teamFacts }; if(drawPlayerStats) availableTabs["playerStats"]={ "button": { "label": hockeydata["i18n"].translate("Player Stats") }, "content": this.domNodes.playerStats.$playerStats }; if(!this.options.tabs){ this.options.tabs=[]; this.options.showTeamFacts && this.options.tabs.push("teamInfo"); this.options.tabs.push("teamStats"); drawPlayerStats && this.options.tabs.push("playerStats"); this.options.tabs.push("games"); this.options.tabs.push("roster"); } else if(hockeydata["util"].isString(this.options.tabs)) this.options.tabs=this.options.tabs.split(","); for(i=0; i < this.options.tabs.length; i++) (this.options.tabs[i] in availableTabs) && tabs.push(availableTabs[this.options.tabs[i]]); this.domNodes.$tabs=jQuery("").addClass("-hd-los-team-full-page-tabs").appendTo(this.$domNode); this.domNodes["Tabs"]=new hockeydata["util"]["Tabs"](jQuery.extend({}, this.options, { "$domNode": this.domNodes.$tabs, "tabs": tabs })); this.domNodes.roster["Tabs"]=new hockeydata["util"]["Tabs"](jQuery.extend({}, this.options, { "$domNode": this.domNodes.roster.$roster, "tabs": tabsRoster })); } self.domNodes.teamInfo.$teamLogo.html(hockeydata["util"]["ImageLoader"].load((data.teamData.images["teamLogo"] || hockeydata["util"]["UriComposer"].getTeamLogoUri({ "sport": self.options.sport, "league": self.options.league, "divisionId": (self.options._divisionId || self.options.divisionId), "teamId": data.teamData.id })))); self.domNodes.teamInfo.$teamShortname.html(data.teamData.teamShortname || ""); self.domNodes.teamInfo.$teamLongname.html(data.teamData.teamLongname || ""); var teamStatsTableRows=[]; for(i=0; i < this.teamStatsCategories.length; i++){ category=this.teamStatsCategories[i]; if(category.title) teamStatsTableRows.push({ "cols": [ { "html": category.title, "colSpan": 2 } ], "class": "-hd-los-team-full-page-team-stats-row-title" }); for(var j=0; j < self.options["rowsTeamStats" + category.name].length; j++){ var rowName=self.options["rowsTeamStats" + category.name][j]; var rowDefinition=(rowName in self.options["rowDefinitionTeamStats" + category.name]) ? self.options["rowDefinitionTeamStats" + category.name][rowName] : {}; tableRow={ "cols": [], "class": "-hd-los-team-full-page-team-stats-row -hd-los-team-full-page-team-" + rowName }; var value=(rowName in data[category.key]) ? data[category.key][rowName] : null; if("format" in rowDefinition && jQuery.isFunction(rowDefinition.format)) value=rowDefinition.format(value); if("fn" in rowDefinition && jQuery.isFunction(rowDefinition.fn)) value=rowDefinition.fn(data.teamStats, this.options); if(value===null) value=" "; tableRow.cols.push({ "html": rowDefinition.title }); tableRow.cols.push({ "html": value }); teamStatsTableRows.push(tableRow); } } this.tables.teamStats.setRows(teamStatsTableRows); if(drawPlayerStats){ ("playerStats" in data) && self.tables.playerStats.setRows(self.getRows(data.playerStats, self.options.columnsPlayerStats, self.options.columnDefinitionPlayerStats, self.options.playerLink)); ("goalkeeperStats" in data) && self.tables["goalkeeperStats"].setRows(self.getRows(data["goalkeeperStats"], self.options.columnsGoalkeeperStats, self.options.columnDefinitionGoalkeeperStats, self.options.playerLink)); } self.tables.games.setRows(self.getRows(data.games, self.options.columnsGames, self.options.columnDefinitionGames, function(dataRow){ return (dataRow.status || self.options.enablePreGameReport ? hockeydata["util"]["UriComposer"].parseUri(self.options.gameLink, [ dataRow.id, self.options.divisionId ]) : null); })); self.domNodes.roster.$overview.empty(); for(i=0; i < data.teamRoster.length; i++){ var player=data.teamRoster[i]; var images=player.images || {}; var playerPortraitImage=hockeydata["util"]["ImageLoader"].load((images["playerSmallPortrait"] || hockeydata["util"]["UriComposer"].getPlayerPortraitUri({ "sport": self.options.sport, "league": self.options.league, "divisionId": (self.options._divisionId || self.options.divisionId), "playerId": player.id })), { "onerror": function(){ this.src=hockeydata["util"]["UriComposer"].getGhostPlayerPortraitUri({ "sport": self.options.sport }); } }); var uri=hockeydata["util"]["UriComposer"].parseUri(self.options.playerLink, [ player.id, self.options.divisionId ]); var $playerContainer=jQuery("").addClass("-hd-los-team-full-page-roster-player-container").appendTo(self.domNodes.roster.$overview); var $playerPortrait=jQuery("").addClass("-hd-los-team-full-page-roster-player-portrait").appendTo($playerContainer); var $playerDetails=jQuery("").addClass("-hd-los-team-full-page-roster-player-details").appendTo($playerContainer); var $playerJerseyNo=jQuery("").addClass("-hd-los-team-full-page-roster-player-jersey-no").appendTo($playerDetails); var $playerName=jQuery("").addClass("-hd-los-team-full-page-roster-player-name").appendTo($playerDetails); var $playerPosition=jQuery("").addClass("-hd-los-team-full-page-roster-player-position").appendTo($playerDetails); $playerPortrait.append(playerPortraitImage); $playerJerseyNo.append(player.playerJerseyNr || ""); $playerPosition.append(player.position || ""); if(jQuery.isArray(self.options.rosterOverviewPlayerNameOrder)) for(var j=0; j < self.options.rosterOverviewPlayerNameOrder.length; j++) $playerName.append((player[self.options.rosterOverviewPlayerNameOrder[j]] || "") + " "); else $playerName.append((player.playerLastname || "") + " " + (player.playerFirstname || "")); if(uri) $playerContainer.click(hockeydata["util"]["LinkComposer"].getLinkClickFunction(uri)).addClass("-hd-clickable"); if(self.options.showPlayerNationInRosterOverview && player.nation) $playerName.append(" (" + player.nation + ")"); if(self.options.showPlayerNationFlagInRosterOverview && (player.images["playerNationFlag"] || player.nation)) $playerName.append(" ").append(hockeydata["util"]["ImageLoader"].load((player.images["playerNationFlag"] || hockeydata["util"]["UriComposer"].getNationFlagUri({ "nation": player.nation })))); } self.tables["rosterDetails"].setRows(self.getRows(data.teamRoster, self.options.columnsRosterDetails, self.options.columnDefinitionRosterDetails, self.options.playerLink)); }; this.getRows=function(dataRows, columns, columnDefinitions, rowLink){ var tableRows=[]; for(var i=0; i < dataRows.length; i++){ var dataRow=dataRows[i]; var uri=(jQuery.isFunction(rowLink) ? rowLink(dataRow) : hockeydata["util"]["UriComposer"].parseUri(rowLink, [ dataRow.id, self.options.divisionId ])); var tableRow={ "cols": [], "class": "" }; var j; if(uri) tableRow.onClick=hockeydata["util"]["LinkComposer"].getLinkClickFunction(uri); for(j=0; j < columns.length; j++){ var columnName=columns[j]; var columnDefinition=(columnName in columnDefinitions) ? columnDefinitions[columnName] : {}; var cellValue=null; var cell={ "class": "" }; if(columnName in dataRow){ var dataValue=dataRow[columnName]; if(jQuery.isPlainObject(dataValue)){ cellValue=("value" in dataValue) ? dataValue.value : " "; if("sortValue" in dataValue) cell.sortValue=dataValue.sortValue; if("labels" in dataValue && dataValue["labels"].length) for(var k=0; k < dataValue["labels"].length; k++) cell.class += " -hd-label-" + dataValue["labels"][k]; if("key" in columnDefinition){ var key=columnDefinition["key"]; if(key in dataValue) cellValue=dataValue[key]; } } else cellValue=dataValue; } if("class" in columnDefinition) cell.class += " " + columnDefinition.class; if("format" in columnDefinition && jQuery.isFunction(columnDefinition.format)) cellValue=columnDefinition.format(cellValue); if("fn" in columnDefinition && jQuery.isFunction(columnDefinition.fn)) cellValue=columnDefinition.fn(dataRow, this.options); if("sortValue" in columnDefinition && jQuery.isFunction(columnDefinition.sortValue)) cell.sortValue=columnDefinition.sortValue(dataRow, this.options); cell.html=cellValue===null ? " " : cellValue; cell.value=cellValue; tableRow.cols.push(cell); } if("labels" in dataRow && dataRow["labels"].length) for(j=0; j < dataRow["labels"].length; j++) tableRow.class += " -hd-label-" + dataRow["labels"][j]; tableRows.push(tableRow); } return tableRows; }; this.initialize(); } hockeydata.extend(FullPage, hockeydata["los"]["Team"], "FullPage");})());/* served by: los-apiserver-prod *//* 0.040028095245361; not cached */