 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 ? "[" : ("<span class='-hd-label -hd-label-" + (labels[sum % labels.length]) + "'>")) + str + (noHtml ? "]" : "</span>")); }; 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( '<a/>' ).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( '<img/>' ).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("<div/>"), "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("<div/>").addClass("-hd-util-tabs-buttons").appendTo(this.$domNode); this.$content=jQuery("<div/>").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("<a/>").addClass("-hd-util-tabs-button").attr("href", "#").appendTo(this.$buttons); var $pane=jQuery("<div/>").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("<div/>"), "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("<div/>"); this.$data=jQuery("<div/>"); this.$table=jQuery("<table/>"); this.$thead=jQuery("<thead/>"); this.$tbody=jQuery("<tbody/>"); this.$overlay=jQuery("<div/>"); 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("<tr/>"); if(this.options.showRanking) jQuery("<th/>").html("&nbsp;").appendTo($tr); for(var i=0; i < this.options.headers.length; i++){ var header=this.options.headers[i]; var $th=jQuery("<th/>"); 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("<tr/>"); var col, $td; if(this.options.showRanking){ $td=jQuery("<td/>"); 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("<td/>"); 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("<div/>").addClass("-hd-util-intellitable-legend"); this.$legendLink=jQuery("<a/>").html(this.options.showLegendText).attr("href", "javascript: void(0);").appendTo(this.$legend); this.$legendTable=jQuery("<table/>"); this.$legendTBody=jQuery("<tbody/>"); 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("<tr/>"); var $tdKey=jQuery("<td/>").html(key); var $tdVal=jQuery("<td/>").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 || {}; if(options.gender=="2"){ return apiHost + imgPath + options.sport + "/_static/ghost-player-female.png"; } 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("<div/>").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("<div/>"), "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("<div/>").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("<div/>"), "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("<div/>").addClass("-hd-util-ad-image").appendTo(self.options.$domNode); var img=new Image(); img.onload=function(){ var $a=jQuery("<a/>"); 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("<div/>").addClass("-hd-util-ad-html").html(self.options.html).appendTo(self.options.$domNode); if(self.options.javascript){ var $javascriptContainer=jQuery("<div/>").addClass("-hd-util-ad-javascript").appendTo(self.options.$domNode); (function($domNode){ eval(self.options.javascript); })($javascriptContainer); } jQuery("<div/>").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( '<div/>' ), 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("<div/>"), "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("<div/>").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("<div/>").appendTo(this.$domNode) })); } if(this.options.responsive) this.responsiveDesign=new hockeydata["util"]["ResponsiveDesign"]({ "$domNode": this.$domNode }); } else { this.$domNode.html(jQuery("<div/>").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 Game(options){} hockeydata.extend(Game, hockeydata["los"], "Game");})());((function(){ function LiveBox(options){ var self=this; this.defaultOptions={ "$domNode": jQuery("<div/>"), "apiKey": "VOID", "autoReload": false, "columnDefinitionGoals": null, "columnDefinitionPenalties": null, "columnDefinitionPlayByPlay": null, "columnDefinitionScores": null, "columnsGoals": null, "columnsPenalties": null, "columnsPlayByPlay": null, "columnsScores": null, "columnSetGoals": "default", "columnSetPenalties": "default", "columnSetPlayByPlay": "default", "columnSetScores": "default", "dataUrl": null, "divisionId": null, "error": function(e){ self.error(e); }, "gameId": null, "gameLink": null, "league": null, "paint": function(e){ self.paint(e); }, "requestData": {}, "rowDefinitionTeamStats": null, "rowsTeamStats": null, "rowSetTeamStats": "default", "showDivisionLongName": false, "showDivisionShortName": false, "showGameDocumentLinks": false, "showGameState": false, "sport": null }; this.options=jQuery.extend({}, this.defaultOptions, options || {}); this.options.requestData.apiKey=this.options.apiKey; this.options.requestData.gameId=this.options.gameId; this.$domNode=this.options.$domNode; this.domNodes={}; this.tables={}; this.firstPaint=true; this.dataSubscription=null; this.tabs=null; this.initialize=function(){ if(!this.options.league) this.options.league=hockeydata["util"].getLeague(this.options.sport); if(!this.options.dataUrl) this.options.dataUrl=hockeydata["util"]["UriComposer"].getDataUri("getGameReport", this.options); this.$domNode.addClass("-hd-los -hd-los-game-live-box"); 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.gameData.divisionId; self.options.paint(e.data); } 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.paint=function(data){ var i, lastPeriod; var drawTicker=false; var drawScores=false; var drawPlayByPlay=false; var drawGoals=false; var drawPenalties=false; var gameFacts=[]; var tickerActions=[]; data=data || {}; data.gameData=data.gameData || {}; if(("homeGoals" in data) || ("awayGoals" in data)){ data.homeGoals=data.homeGoals || []; data.awayGoals=data.awayGoals || []; drawTicker=true; drawGoals=true; } if(("homePenalties" in data) || ("awayPenalties" in data)){ data.homePenalties=data.homePenalties || []; data.awayPenalties=data.awayPenalties || []; drawTicker=true; drawPenalties=true; } if("scores" in data){ data.scores=data.scores || []; drawScores=true; } if("playByPlay" in data){ data.playByPlay=data.playByPlay || []; drawPlayByPlay=true; } if(jQuery.isPlainObject(data.gameData.scheduledDate) && ("formattedShort" in data.gameData.scheduledDate)) gameFacts.push({ "key": "scheduledDate", "value": data.gameData.scheduledDate["formattedShort"], "label": hockeydata["i18n"].translate("Scheduled Date") }); if("scheduledTime" in data.gameData) gameFacts.push({ "key": "scheduledTime", "value": data.gameData.scheduledTime, "label": hockeydata["i18n"].translate("Scheduled Time") }); if(jQuery.isPlainObject(data.gameData.location) && ("shortname" in data.gameData.location)) gameFacts.push({ "key": "location", "value": data.gameData.location["shortname"], "label": hockeydata["i18n"].translate("Location") }); if("attendance" in data.gameData) gameFacts.push({ "key": "attendance", "value": data.gameData["attendance"], "label": hockeydata["i18n"].translate("Attendance") }); if(jQuery.isPlainObject(data.gameData["gameOfficials"]) && ("referee" in data.gameData["gameOfficials"])) gameFacts.push({ "key": "referee", "value": data.gameData["gameOfficials"]["referee"], "label": hockeydata["i18n"].translate("Referee") }); if(jQuery.isPlainObject(data.gameData["gameOfficials"]) && ("ref1" in data.gameData["gameOfficials"]) && jQuery.isPlainObject(data.gameData["gameOfficials"]["ref1"])) gameFacts.push({ "key": "referee1", "value": data.gameData["gameOfficials"]["ref1"]["lastname"] + " " + data.gameData["gameOfficials"]["ref1"]["firstname"], "label": hockeydata["i18n"].translate("Referee 1") }); if(jQuery.isPlainObject(data.gameData["gameOfficials"]) && ("ref2" in data.gameData["gameOfficials"]) && jQuery.isPlainObject(data.gameData["gameOfficials"]["ref2"])) gameFacts.push({ "key": "referee2", "value": data.gameData["gameOfficials"]["ref2"]["lastname"] + " " + data.gameData["gameOfficials"]["ref2"]["firstname"], "label": hockeydata["i18n"].translate("Referee 2") }); if(jQuery.isPlainObject(data.gameData["gameOfficials"]) && ("umpire" in data.gameData["gameOfficials"])) gameFacts.push({ "key": "umpire", "value": data.gameData["gameOfficials"]["umpire"], "label": hockeydata["i18n"].translate("Umpire") }); if(jQuery.isPlainObject(data.gameData["gameOfficials"]) && ("linesman" in data.gameData["gameOfficials"])) gameFacts.push({ "key": "linesman", "value": data.gameData["gameOfficials"]["linesman"], "label": hockeydata["i18n"].translate("Linesman") }); if(jQuery.isPlainObject(data.gameData["gameOfficials"]) && ("linesman1" in data.gameData["gameOfficials"]) && jQuery.isPlainObject(data.gameData["gameOfficials"]["linesman1"])) gameFacts.push({ "key": "linesman1", "value": data.gameData["gameOfficials"]["linesman1"]["lastname"] + " " + data.gameData["gameOfficials"]["linesman1"]["firstname"], "label": hockeydata["i18n"].translate("Linesman 1") }); if(jQuery.isPlainObject(data.gameData["gameOfficials"]) && ("linesman2" in data.gameData["gameOfficials"]) && jQuery.isPlainObject(data.gameData["gameOfficials"]["linesman2"])) gameFacts.push({ "key": "linesman2", "value": data.gameData["gameOfficials"]["linesman2"]["lastname"] + " " + data.gameData["gameOfficials"]["linesman2"]["firstname"], "label": hockeydata["i18n"].translate("Linesman 2") }); if(jQuery.isPlainObject(data.gameData["gameOfficials"]) && ("lineJudge" in data.gameData["gameOfficials"])) gameFacts.push({ "key": "lineJudge", "value": data.gameData["gameOfficials"]["lineJudge"], "label": hockeydata["i18n"].translate("Line Judge") }); if(jQuery.isPlainObject(data.gameData["gameOfficials"]) && ("backJudge" in data.gameData["gameOfficials"])) gameFacts.push({ "key": "backJudge", "value": data.gameData["gameOfficials"]["backJudge"], "label": hockeydata["i18n"].translate("Back Judge") }); if(jQuery.isPlainObject(data.gameData["gameOfficials"]) && ("fieldJudge" in data.gameData["gameOfficials"])) gameFacts.push({ "key": "fieldJudge", "value": data.gameData["gameOfficials"]["fieldJudge"], "label": hockeydata["i18n"].translate("Field Judge") }); if(jQuery.isPlainObject(data.gameData["gameOfficials"]) && ("sideJudge" in data.gameData["gameOfficials"])) gameFacts.push({ "key": "sideJudge", "value": data.gameData["gameOfficials"]["sideJudge"], "label": hockeydata["i18n"].translate("Side Judge") }); if(jQuery.isPlainObject(data.gameData["teamOfficials"]) && ("headcoachhome" in data.gameData["teamOfficials"]) && jQuery.isPlainObject(data.gameData["teamOfficials"]["headcoachhome"])) gameFacts.push({ "key": "headcoachhome", "value": data.gameData["teamOfficials"]["headcoachhome"]["lastname"] + " " + data.gameData["teamOfficials"]["headcoachhome"]["firstname"], "label": hockeydata["i18n"].translate("Head Coach") + " " + (data.gameData.homeTeamShortname || hockeydata["i18n"].translate("Heim")) }); if(jQuery.isPlainObject(data.gameData["teamOfficials"]) && ("headcoachaway" in data.gameData["teamOfficials"]) && jQuery.isPlainObject(data.gameData["teamOfficials"]["headcoachaway"])) gameFacts.push({ "key": "headcoachaway", "value": data.gameData["teamOfficials"]["headcoachaway"]["lastname"] + " " + data.gameData["teamOfficials"]["headcoachaway"]["firstname"], "label": hockeydata["i18n"].translate("Head Coach") + " " + (data.gameData.awayTeamShortname || hockeydata["i18n"].translate("Gast")) }); if(jQuery.isPlainObject(data.gameData["weatherInfo"])) gameFacts.push({ "key": "weatherInfo", "value": Math.floor(data.gameData["weatherInfo"]["temperatureCelsius"]) + "° C | " + hockeydata["los"]["Configuration"].getWindDirection(data.gameData["weatherInfo"]["windDirection"]) + " " + Math.floor(data.gameData["weatherInfo"]["windSpeed"]) + " km/h", "label": hockeydata["i18n"].translate("Weather Conditions") }); if(self.firstPaint){ self.firstPaint=false; var uri=hockeydata["util"]["UriComposer"].parseUri(self.options.gameLink, [ data.gameData.id, self.options.divisionId ]); self.domNodes.gameInfo={}; self.domNodes.gameInfo.$gameInfo=jQuery("<div/>").addClass("-hd-los-game-live-box-game-info").appendTo(self.$domNode); if(self.options.showGameState) self.domNodes.gameInfo.$gameState=jQuery("<div/>").addClass("-hd-los-game-live-box-game-state").appendTo(self.domNodes.gameInfo.$gameInfo); self.domNodes.gameInfo.$awayTeam=jQuery("<div/>").addClass("-hd-los-game-live-box-team -hd-los-game-live-box-team-away").appendTo(self.domNodes.gameInfo.$gameInfo); self.domNodes.gameInfo.$awayTeamName=jQuery("<div/>").addClass("-hd-los-game-live-box-team-name -hd-los-game-live-box-team-name-away").appendTo(self.domNodes.gameInfo.$awayTeam); self.domNodes.gameInfo.$awayTeamLogo=jQuery("<div/>").addClass("-hd-los-game-live-box-team-logo -hd-los-game-live-box-team-logo-away").appendTo(self.domNodes.gameInfo.$awayTeam); self.domNodes.gameInfo.$homeTeam=jQuery("<div/>").addClass("-hd-los-game-live-box-team -hd-los-game-live-box-team-home").appendTo(self.domNodes.gameInfo.$gameInfo); self.domNodes.gameInfo.$homeTeamLogo=jQuery("<div/>").addClass("-hd-los-game-live-box-team-logo -hd-los-game-live-box-team-logo-home").appendTo(self.domNodes.gameInfo.$homeTeam); self.domNodes.gameInfo.$homeTeamName=jQuery("<div/>").addClass("-hd-los-game-live-box-team-name -hd-los-game-live-box-team-name-home").appendTo(self.domNodes.gameInfo.$homeTeam); self.domNodes.gameInfo.$score=jQuery("<div/>").addClass("-hd-los-game-live-box-score").appendTo(self.domNodes.gameInfo.$gameInfo); self.domNodes.gameInfo.$scoreHome=jQuery("<div/>").addClass("-hd-los-game-live-box-score-home").appendTo(self.domNodes.gameInfo.$score); self.domNodes.gameInfo.$scoreDivider=jQuery("<div/>").addClass("-hd-los-game-live-box-score-divider").appendTo(self.domNodes.gameInfo.$score); self.domNodes.gameInfo.$scoreAway=jQuery("<div/>").addClass("-hd-los-game-live-box-score-away").appendTo(self.domNodes.gameInfo.$score); if(uri) self.domNodes.gameInfo.$gameInfo.click(hockeydata["util"]["LinkComposer"].getLinkClickFunction(uri)).addClass("-hd-clickable"); if(self.options.showDivisionShortName) self.domNodes.gameInfo.$divisionShortName=jQuery("<div/>").addClass("-hd-los-game-live-box-division-name -hd-los-game-live-box-division-short-name").appendTo(self.domNodes.gameInfo.$gameInfo); if(self.options.showDivisionLongName) self.domNodes.gameInfo.$divisionLongName=jQuery("<div/>").addClass("-hd-los-game-live-box-division-name -hd-los-game-live-box-division-long-name").appendTo(self.domNodes.gameInfo.$gameInfo); self.domNodes.periodStats={}; self.domNodes.periodStats.$periodStats=jQuery("<div/>").addClass("-hd-los-game-live-box-period-stats").appendTo(self.$domNode); if(self.options.showGameDocumentLinks){ self.domNodes.gameDocumentLinks={}; self.domNodes.gameDocumentLinks.$container=jQuery("<div/>").addClass("-hd-los-game-live-box-document-links").appendTo(self.$domNode); } if(drawTicker) self.domNodes.$ticker=jQuery("<div/>").addClass("-hd-los-game-live-box-ticker").appendTo(self.$domNode); if(drawScores){ self.domNodes.$scores=jQuery("<div/>").addClass("-hd-los-game-live-box-scores").appendTo(self.$domNode); if(!self.options.columnDefinitionScores) self.options.columnDefinitionScores=hockeydata["los"]["Configuration"].getTableColumnDefinition({ "sport": self.options.sport, "league": self.options.league, "type": "gameLiveBoxScores" }); if(!self.options.columnsScores) self.options.columnsScores=hockeydata["los"]["Configuration"].getTableColumns({ "sport": self.options.sport, "league": self.options.league, "columnSet": self.options.columnSetScores, "type": "gameLiveBoxScores" }); else if(hockeydata["util"].isString(self.options.columnsScores)) self.options.columnsScores=self.options.columnsScores.split(","); self.initializeTable("scores", self.options.columnsScores, self.options.columnDefinitionScores, self.domNodes.$scores); } if(drawPlayByPlay){ self.domNodes.$playByPlay=jQuery("<div/>").addClass("-hd-los-game-live-box-play-by-play").appendTo(self.$domNode); if(!self.options.columnDefinitionPlayByPlay) self.options.columnDefinitionPlayByPlay=hockeydata["los"]["Configuration"].getTableColumnDefinition({ "sport": self.options.sport, "league": self.options.league, "type": "gameLiveBoxPlayByPlay" }); if(!self.options.columnsPlayByPlay) self.options.columnsPlayByPlay=hockeydata["los"]["Configuration"].getTableColumns({ "sport": self.options.sport, "league": self.options.league, "columnSet": self.options.columnSetPlayByPlay, "type": "gameLiveBoxPlayByPlay" }); else if(hockeydata["util"].isString(self.options.columnsPlayByPlay)) self.options.columnsPlayByPlay=self.options.columnsPlayByPlay.split(","); self.initializeTable("playByPlay", self.options.columnsPlayByPlay, self.options.columnDefinitionPlayByPlay, self.domNodes.$playByPlay); } self.domNodes.$teamStats=jQuery("<div/>").addClass("-hd-los-game-live-box-team-stats").appendTo(self.$domNode); if(!self.options.rowDefinitionTeamStats) self.options.rowDefinitionTeamStats=hockeydata["los"]["Configuration"].getTableRowDefinition({ "sport": self.options.sport, "league": self.options.league, "type": "gameLiveBoxTeamStats" }); if(!self.options.rowsTeamStats) self.options.rowsTeamStats=hockeydata["los"]["Configuration"].getTableRows({ "sport": self.options.sport, "league": self.options.league, "rowSet": self.options.rowSetTeamStats, "type": "gameLiveBoxTeamStats" }); else if(hockeydata["util"].isString(self.options.rowsTeamStats)) self.options.rowsTeamStats=self.options.rowsTeamStats.split(","); self.tables.teamStats=new hockeydata["util"]["IntelliTable"](jQuery.extend({}, self.options, { "$domNode": self.domNodes.$teamStats, "headers": [ { "html": "&nbsp;" }, { "html": data.gameData.homeTeamShortname || hockeydata["i18n"].translate("Home") }, { "html": data.gameData.awayTeamShortname || hockeydata["i18n"].translate("Away") } ], "rows": [] })); if(drawGoals){ self.domNodes.$goals=jQuery("<div/>").addClass("-hd-los-game-live-box-goals").appendTo(self.$domNode); if(!self.options.columnDefinitionGoals) self.options.columnDefinitionGoals=hockeydata["los"]["Configuration"].getTableColumnDefinition({ "sport": self.options.sport, "league": self.options.league, "type": "gameLiveBoxGoals" }); if(!self.options.columnsGoals) self.options.columnsGoals=hockeydata["los"]["Configuration"].getTableColumns({ "sport": self.options.sport, "league": self.options.league, "columnSet": self.options.columnSetGoals, "type": "gameLiveBoxGoals" }); else if(hockeydata["util"].isString(self.options.columnsGoals)) self.options.columnsGoals=self.options.columnsGoals.split(","); self.initializeTable("goals", self.options.columnsGoals, self.options.columnDefinitionGoals, self.domNodes.$goals); } if(drawPenalties){ self.domNodes.$penalties=jQuery("<div/>").addClass("-hd-los-game-live-box-penalties").appendTo(self.$domNode); if(!self.options.columnDefinitionPenalties) self.options.columnDefinitionPenalties=hockeydata["los"]["Configuration"].getTableColumnDefinition({ "sport": self.options.sport, "league": self.options.league, "type": "gameLiveBoxPenalties" }); if(!self.options.columnsPenalties) self.options.columnsPenalties=hockeydata["los"]["Configuration"].getTableColumns({ "sport": self.options.sport, "league": self.options.league, "columnSet": self.options.columnSetPenalties, "type": "gameLiveBoxPenalties" }); else if(hockeydata["util"].isString(self.options.columnsPenalties)) self.options.columnsPenalties=self.options.columnsPenalties.split(","); self.initializeTable("penalties", self.options.columnsPenalties, self.options.columnDefinitionPenalties, self.domNodes.$penalties); } if(gameFacts.length){ self.domNodes.gameFacts={}; self.domNodes.gameFacts.$gameFacts=jQuery("<div/>").addClass("-hd-los-game-live-box-game-facts").appendTo(self.$domNode); for(i=0; i < gameFacts.length; i++) self.domNodes.gameFacts[gameFacts[i].key]=jQuery("<div/>").appendTo(jQuery("<div/>").addClass("-hd-los-game-live-box-game-fact-value").appendTo(jQuery("<div/>").addClass("-hd-los-game-live-box-game-fact-row -hd-los-game-live-box-game-fact-row-" + gameFacts[i].key).appendTo(self.domNodes.gameFacts.$gameFacts).append(jQuery("<div/>").addClass("-hd-los-game-live-box-game-fact-label").append(jQuery("<div/>").append(gameFacts[i].label))))); } var tabs=[]; if(drawTicker) tabs.push({ "button": { "label": hockeydata["i18n"].translate("Ticker") }, "content": self.domNodes.$ticker }); if(drawScores) tabs.push({ "button": { "label": hockeydata["i18n"].translate("Scores") }, "content": self.domNodes.$scores }); if(drawPlayByPlay) tabs.push({ "button": { "label": hockeydata["i18n"].translate("Play by Play") }, "content": self.domNodes.$playByPlay }); tabs.push({ "button": { "label": hockeydata["i18n"].translate("Stats") }, "content": self.domNodes.$teamStats }); if(drawGoals) tabs.push({ "button": { "label": hockeydata["i18n"].translate("Goals") }, "content": self.domNodes.$goals }); if(drawPenalties) tabs.push({ "button": { "label": hockeydata["i18n"].translate("Penalties") }, "content": self.domNodes.$penalties }); tabs.push({ "button": { "label": hockeydata["i18n"].translate("Info") }, "content": self.domNodes.gameFacts.$gameFacts }); self.domNodes.$tabs=jQuery("<div/>").addClass("-hd-los-game-live-box-tabs").appendTo(self.$domNode); self.tabs=new hockeydata["util"]["Tabs"](jQuery.extend({}, self.options, { "$domNode": self.domNodes.$tabs, "tabs": tabs })); } self.$domNode.removeClass("-hd-los-game-live-box-status-0 -hd-los-game-live-box-status-1 -hd-los-game-live-box-status-2 -hd-los-game-live-box-status-3 -hd-los-game-live-box-status-4"); self.$domNode.addClass("-hd-los-game-live-box-status-" + data.gameData.gameStatus); var scoreDivider=""; if(data.gameData["isShootOut"]) scoreDivider="<span class='-hd-los-game-live-box-shootout'>" + hockeydata["i18n"].translate("SO", "Shootout") + "</span>"; else if(data.gameData["isOvertime"]) scoreDivider="<span class='-hd-los-game-live-box-overtime'>" + hockeydata["i18n"].translate("OT", "Overtime") + "</span>"; self.options.showDivisionShortName && self.domNodes.gameInfo.$divisionShortName.html(data.gameData["divisionShortname"]); self.options.showDivisionLongName && self.domNodes.gameInfo.$divisionLongName.html(data.gameData["divisionLongname"]); if(self.options.showGameState){ if(0===data.gameData.gameStatus) self.domNodes.gameInfo.$gameState.html(hockeydata["i18n"].translate("SCHEDULED")); else if(1===data.gameData.gameStatus){ if(hockeydata["util"].isArray(data.gameData["liveTimePeriodBar"]) && data.gameData["liveTimePeriodBar"].length){ self.domNodes.gameInfo.$gameState.empty(); var $liveTimeTableRow=jQuery("<tr/>").appendTo(jQuery("<tbody/>").appendTo(jQuery("<table/>").appendTo(jQuery("<div/>").addClass("-hd-los-game-live-box-period-bar").appendTo(self.domNodes.gameInfo.$gameState)))); for(i=0; i < data.gameData["liveTimePeriodBar"].length; i++){ var bar=data.gameData["liveTimePeriodBar"][i]; var $bar=jQuery("<td/>").appendTo($liveTimeTableRow); var $fill=jQuery("<div/>").addClass("-hd-los-game-live-box-period-bar-fill").appendTo($bar); if(("longName" in bar) && bar["longName"]) $bar.attr("title", bar["longName"]); if(("shortName" in bar) && bar["shortName"]) jQuery("<div/>").addClass("-hd-los-game-live-box-period-bar-label").html(bar["shortName"]).appendTo($bar); if(bar["isActive"]) $bar.addClass("-hd-los-game-live-box-period-bar-active"); $bar.css({"width": bar.maxLength + "%"}); $fill.css({"width": bar.progress + "%"}); } } else self.domNodes.gameInfo.$gameState.html(hockeydata["i18n"].translate("LIVE")); } else if(data.gameData.gameStatus >= 2) self.domNodes.gameInfo.$gameState.html(hockeydata["i18n"].translate("FINAL")); } self.domNodes.gameInfo.$homeTeamLogo.html(hockeydata["util"]["ImageLoader"].load(hockeydata["util"]["UriComposer"].getTeamLogoUri({ "sport": self.options.sport, "league": self.options.league, "divisionId": (self.options._divisionId || self.options.divisionId), "teamId": data.gameData.homeTeamId }))); self.domNodes.gameInfo.$homeTeamName.html(data.gameData.homeTeamShortname || ""); self.domNodes.gameInfo.$awayTeamLogo.html(hockeydata["util"]["ImageLoader"].load(hockeydata["util"]["UriComposer"].getTeamLogoUri({ "sport": self.options.sport, "league": self.options.league, "divisionId": (self.options._divisionId || self.options.divisionId), "teamId": data.gameData.awayTeamId }))); self.domNodes.gameInfo.$awayTeamName.html(data.gameData.awayTeamShortname || ""); self.domNodes.gameInfo.$scoreHome.html(("homeTeamScore" in data.gameData) ? data.gameData.homeTeamScore : "-"); self.domNodes.gameInfo.$scoreDivider.html(scoreDivider); self.domNodes.gameInfo.$scoreAway.html(("awayTeamScore" in data.gameData) ? data.gameData.awayTeamScore : "-"); if(hockeydata["util"].isArray(data.gameData.periodStats) && data.gameData.periodStats.length){ self.domNodes.periodStats.$periodStats.empty(); var $periodStatsHeader=jQuery("<div/>").addClass("-hd-los-game-live-box-period-stats-header").appendTo(self.domNodes.periodStats.$periodStats); var $periodStatsScore=jQuery("<div/>").addClass("-hd-los-game-live-box-period-stats-score").appendTo(self.domNodes.periodStats.$periodStats); var $periodStatsShotsOnGoal=jQuery("<div/>").addClass("-hd-los-game-live-box-period-stats-additional").appendTo(self.domNodes.periodStats.$periodStats); jQuery("<div/>").html("&nbsp;").appendTo($periodStatsHeader); jQuery("<div/>").html(hockeydata["i18n"].translate("Score")).appendTo($periodStatsScore); jQuery("<div/>").html(hockeydata["i18n"].translate("SOG", "Shots on Goal")).appendTo($periodStatsShotsOnGoal); for(i=0; i < data.gameData.periodStats.length; i++){ var periodStats=data.gameData.periodStats[i]; jQuery("<div/>").html(("period" in periodStats) ? periodStats["period"] : "").appendTo($periodStatsHeader); jQuery("<div/>").html((("homeScore" in periodStats) ? periodStats["homeScore"] : "-") + " : " + (("awayScore" in periodStats) ? periodStats["awayScore"] : "-")).appendTo($periodStatsScore); jQuery("<div/>").html((("homeShotsOnGoal" in periodStats) ? periodStats["homeShotsOnGoal"] : "-") + " : " + (("awayShotsOnGoal" in periodStats) ? periodStats["awayShotsOnGoal"] : "-")).appendTo($periodStatsShotsOnGoal); } } if(self.options.showGameDocumentLinks){ self.domNodes.gameDocumentLinks.$container.empty(); if(0===data.gameData.gameStatus){ jQuery("<a/>") .appendTo(self.domNodes.gameDocumentLinks.$container) .attr("href", hockeydata["util"]["UriComposer"].getGameDocumentUrl("eligiblePlayers", { "id": self.options.gameId }, self.options)) .attr("target", "_blank") .attr("title", hockeydata["i18n"].translate("Eligible Players")) .addClass("-hd-game-document-link -hd-game-document-link-eligible-players") .html(hockeydata["i18n"].translate("Eligible Players")); } else { jQuery("<a/>") .appendTo(self.domNodes.gameDocumentLinks.$container) .attr("href", hockeydata["util"]["UriComposer"].getGameDocumentUrl("officialRoster", { "id": self.options.gameId }, self.options)) .attr("target", "_blank") .attr("title", hockeydata["i18n"].translate("Official Roster")) .addClass("-hd-game-document-link -hd-game-document-link-official-roster") .html(hockeydata["i18n"].translate("Official Roster")); jQuery("<a/>") .appendTo(self.domNodes.gameDocumentLinks.$container) .attr("href", hockeydata["util"]["UriComposer"].getGameDocumentUrl("gameReport", { "id": self.options.gameId }, self.options)) .attr("target", "_blank") .attr("title", hockeydata["i18n"].translate("Game Report")) .addClass("-hd-game-document-link -hd-game-document-link-game-report") .html(hockeydata["i18n"].translate("Game Report")); } } if(drawScores){ lastPeriod=null; self.tables.scores.setRows(self.getRows(data.scores, self.options.columnsScores, self.options.columnDefinitionScores, null, function(dataRow, tableRows){ if(dataRow["gamePeriod"] && (lastPeriod===null || lastPeriod !== dataRow["gamePeriod"])){ lastPeriod=dataRow["gamePeriod"]; tableRows.push({ "cols": [{ "html": hockeydata["i18n"].translate("Period") + " " + lastPeriod, "colspan": self.options.columnsScores.length }], "class": "-hd-los-game-live-box-scores-row-period-change" }); } })); } if(drawPlayByPlay){ lastPeriod=null; self.options.lastGameTime=null; self.options.homeTeamId=data.gameData.homeTeamId; self.options.homeTeamBackColor=data.gameData.homeTeamBackColor; self.options.homeTeamForeColor=data.gameData.homeTeamForeColor; self.options.awayTeamId=data.gameData.awayTeamId; self.options.awayTeamBackColor=data.gameData.awayTeamBackColor; self.options.awayTeamForeColor=data.gameData.awayTeamForeColor; self.tables.playByPlay.setRows(self.getRows(data.playByPlay, self.options.columnsPlayByPlay, self.options.columnDefinitionPlayByPlay, null, function(dataRow, tableRows){ if(dataRow["GamePeriod"] && (lastPeriod===null || lastPeriod !== dataRow["GamePeriod"])){ lastPeriod=dataRow["GamePeriod"]; tableRows.push({ "cols": [{ "html": hockeydata["i18n"].translate("Period") + " " + lastPeriod, "colspan": self.options.columnsPlayByPlay.length }], "class": "-hd-los-game-live-box-play-by-play-row-period-change" }); } }, "-hd-los-game-play-by-play-col-")); } var teamStatsTableRows=[]; for(i=0; i < self.options.rowsTeamStats.length; i++){ var rowName=self.options.rowsTeamStats[i]; var rowDefinition=(rowName in self.options.rowDefinitionTeamStats) ? self.options.rowDefinitionTeamStats[rowName] : {}; var tableRow={ "cols": [], "class": "-hd-los-game-live-box-team-stats-row -hd-los-game-live-box-team-" + rowName }; var homeValue=(rowName in data.homeTeamStats) ? data.homeTeamStats[rowName] : null; var awayValue=(rowName in data.awayTeamStats) ? data.awayTeamStats[rowName] : null; if("format" in rowDefinition && jQuery.isFunction(rowDefinition.format)){ homeValue=rowDefinition.format(homeValue); awayValue=rowDefinition.format(awayValue); } if("fn" in rowDefinition && jQuery.isFunction(rowDefinition.fn)){ homeValue=rowDefinition.fn(data.homeTeamStats, self.options); awayValue=rowDefinition.fn(data.awayTeamStats, self.options); } if(homeValue===null) homeValue="&nbsp;"; if(awayValue===null) awayValue="&nbsp;"; tableRow.cols.push({ "html": rowDefinition.title }); tableRow.cols.push({ "html": homeValue }); tableRow.cols.push({ "html": awayValue }); teamStatsTableRows.push(tableRow); } self.tables.teamStats.setRows(teamStatsTableRows); if(drawGoals){ var goals=[]; var goal; for(i=0; i < data.homeGoals.length; i++){ goal=data.homeGoals[i]; goal.teamShortname=data.gameData.homeTeamShortname || ""; goal.teamId=data.gameData.homeTeamId || ""; goal.type="goal"; goals.push(goal); tickerActions.push(goal); } for(i=0; i < data.awayGoals.length; i++){ goal=data.awayGoals[i]; goal.teamShortname=data.gameData.awayTeamShortname || ""; goal.teamId=data.gameData.awayTeamId || ""; goal.type="goal"; goals.push(goal); tickerActions.push(goal); } goals.sort(function(a, b){ return a.gameTime - b.gameTime; }); self.tables.goals.setRows(self.getRows(goals, self.options.columnsGoals, self.options.columnDefinitionGoals)); } if(drawPenalties){ var penalties=[]; var penalty; for(i=0; i < data.homePenalties.length; i++){ penalty=data.homePenalties[i]; penalty.teamShortname=data.gameData.homeTeamShortname || ""; penalty.teamId=data.gameData.homeTeamId || ""; penalty.type="penalty"; penalties.push(penalty); tickerActions.push(penalty); } for(i=0; i < data.awayPenalties.length; i++){ penalty=data.awayPenalties[i]; penalty.teamShortname=data.gameData.awayTeamShortname || ""; penalty.teamId=data.gameData.awayTeamId || ""; penalty.type="penalty"; penalties.push(penalty); tickerActions.push(penalty); } penalties.sort(function(a, b){ return a.gameTime - b.gameTime; }); self.tables.penalties.setRows(self.getRows(penalties, self.options.columnsPenalties, self.options.columnDefinitionPenalties)); } if(drawTicker){ self.domNodes.$ticker.empty(); tickerActions.sort(function(a, b){ return b.gameTime - a.gameTime; }); for(i=0; i < tickerActions.length; i++){ var action=tickerActions[i]; var headline=""; var body=""; var $action=jQuery("<div/>").addClass("-hd-los-game-live-box-ticker-action -hd-los-game-live-box-ticker-action-" + action.type).appendTo(self.domNodes.$ticker); var $teamLogo=jQuery("<div/>").addClass("-hd-los-game-live-box-ticker-action-team-logo").appendTo($action); var $headline=jQuery("<div/>").addClass("-hd-los-game-live-box-ticker-action-headline").appendTo($action); var $body=jQuery("<div/>").addClass("-hd-los-game-live-box-ticker-action-body").appendTo($action); if(action.type==="goal"){ headline += hockeydata["i18n"].translate("Goal") + " @ " + action.gameTimeFormatted + " " + action.gameStrength; if(jQuery.isPlainObject(action.scoredBy)) body += "<div class='-hd-los-game-live-box-ticker-action-body-goal-scorer'>" + hockeydata["i18n"].translate("Scorer") + ": " + action.scoredBy.playerFirstname + " " + action.scoredBy.playerLastname + "</div>"; body += "<div class='-hd-los-game-live-box-ticker-action-body-goal-new-score'>" + hockeydata["i18n"].translate("New score") + ": " + action.newScore + "</div>"; } else if(action.type==="penalty"){ headline += hockeydata["i18n"].translate("Penalty") + " @ " + action.gameTimeFormatted; body += hockeydata["util"].sprintf(hockeydata["i18n"].translate("%s, %s (%s)."), hockeydata["util"].formatDuration(action.penaltyLength), (jQuery.isPlainObject(action.offender) ? (action.offender.playerFirstname + " " + action.offender.playerLastname) : ""), action.offence); } $teamLogo.html(hockeydata["util"]["ImageLoader"].load(hockeydata["util"]["UriComposer"].getTeamLogoUri({ "sport": self.options.sport, "league": self.options.league, "divisionId": (self.options._divisionId || self.options.divisionId), "teamId": action.teamId }))); $headline.html(headline); $body.html(body); } } for(i=0; i < gameFacts.length; i++) self.domNodes.gameFacts[gameFacts[i].key].html(gameFacts[i].value); }; 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": "&nbsp;" }); } this.tables[table]=new hockeydata["util"]["IntelliTable"](jQuery.extend({}, this.options, { "$domNode": $node, "headers": tableHeaders, "hideHeaders": true })); }; this.getRows=function(dataRows, columns, columnDefinitions, rowLink, beforeColumns, cellClassPrefix){ var tableRows=[]; var j; 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": [] }; if(beforeColumns) beforeColumns(dataRow, tableRows); 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": (cellClassPrefix ? (cellClassPrefix + columnName) : "") }; if(columnName in dataRow){ var dataValue=dataRow[columnName]; if(jQuery.isPlainObject(dataValue)){ cellValue=("value" in dataValue) ? dataValue.value : "&nbsp;"; 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); cell.html=cellValue===null ? "&nbsp;" : 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]; 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(LiveBox, hockeydata["los"]["Game"], "LiveBox");})());/* served by: los-apiserver-prod *//* 0.005436897277832; not cached */