 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(){ var SelectHandler=function(){ var selects=[]; this.add=function( select ){ selects.push( select ); }; this.remove=function( select ){ for( var i=0; i < selects.length; i++ ){ if( selects[ i ]===select ){ selects.splice( i, 1 ); return true; } } return false; }; this.closeAll=function( select ){ for( var i=0; i < selects.length; i++ ){ if( selects[ i ] !== select ){ selects[ i ].close(); } } }; jQuery( document ).click( this.closeAll ); }; var selectHandler=new SelectHandler(); var Select=function( $select ){ var _$select, _$wrapper, _$display, _$list; var _self=this; var _addOptions=function( $node, headline, selectedIndex ){ if( headline ){ jQuery( '<li/>' ).addClass( '-hd-util-select-headline' ).appendTo( _$list ).attr( 'title', headline ).html( headline ); } var $options=$node.find( '> option' ); $options.each( function( index ){ var $option=jQuery( this ); var html=$option.html(); var text=$option.text(); var $item=jQuery( '<li/>' ).addClass( '-hd-clickable' ).appendTo( _$list ).attr( 'title', text ).html( html ); if( headline ){ $item.addClass( '-hd-util-select-sub' ); } if( selectedIndex===index ){ $item.addClass( '-hd-util-select-selected' ); } $item.click( function(){ _$list.find( '.-hd-util-select-selected' ).removeClass( '-hd-util-select-selected' ); $item.addClass( '-hd-util-select-selected' ); _$display.attr( 'title', text ).html( html ); jQuery( $options[ index ] ).prop( 'selected', true ); _$select.change(); } ); } ); }; var _initialize=function(){ _$select=jQuery( $select ); _$wrapper=jQuery( '<div/>' ).addClass( '-hd-util-select' ).insertBefore( _$select ); _$display=jQuery( '<div/>' ).addClass( '-hd-util-select-display -hd-clickable' ).appendTo( _$wrapper ).click( _open ); _$list=jQuery( '<ul/>' ).addClass( '-hd-util-select-list' ).appendTo( _$wrapper ); _$select.appendTo( _$wrapper ); selectHandler.add( _self ); _update(); }; var _update=function(){ var selectedIndex=_$select.prop( 'selectedIndex' ); var $selected=_$select.find( ':selected' ); var $optionGroups=_$select.find( '> optgroup' ); _$display.attr( 'title', "" ).empty(); _$list.empty(); if( $selected.length ){ _$display.attr( 'title', $selected.text() ).html( $selected.html() ); } _addOptions( _$select, null, selectedIndex ); $optionGroups.each( function(){ _addOptions( jQuery( this ), jQuery( this ).attr( 'label' ) ); } ); }; var _open=function( e ){ e.stopPropagation(); selectHandler.closeAll( _self ); _$wrapper.toggleClass( '-hd-util-select-open' ); }; var _destroy=function(){ selectHandler.remove( _self ); _$select.insertAfter( _$wrapper ); _$wrapper.remove(); }; var _close=function(){ _$wrapper.removeClass( '-hd-util-select-open' ); }; this.destroy=_destroy; this.close=_close; this.open=_open; this.update=_update; _initialize(); }; hockeydata.extend( Select, hockeydata[ 'util' ], 'Select' ); } )() ); ((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 StatsCompare(options){ var self=this; this.defaults={ "$domNode": jQuery("<div/>"), "color1": null, "color2": null, "rows": [], "title1": "", "title2": "", "titleLabel": "" }; this.options=jQuery.extend({}, this.defaults, options || {}); this.$domNode=this.options.$domNode; this.domNodes={}; this.initialize=function(){ this.$domNode.empty(); this.$domNode.addClass("-hd-util-stats-compare"); this.domNodes.$header=jQuery("<div/>").addClass("-hd-util-stats-compare-header").appendTo(this.$domNode); this.domNodes.$rows=jQuery("<div/>").addClass("-hd-util-stats-compare-rows").appendTo(this.$domNode); this.renderHeader(); if(this.options.rows){ for(var i=0; i < this.options.rows.length; i++){ this.renderRow(this.options.rows[i]); } } }; this.renderHeader=function(){ jQuery("<div/>").addClass("-hd-util-stats-compare-header-title -hd-util-stats-compare-header-title-1").append(this.options.title1).appendTo(this.domNodes.$header); jQuery("<div/>").addClass("-hd-util-stats-compare-header-title -hd-util-stats-compare-header-title-label").append(this.options.titleLabel).appendTo(this.domNodes.$header); jQuery("<div/>").addClass("-hd-util-stats-compare-header-title -hd-util-stats-compare-header-title-2").append(this.options.title2).appendTo(this.domNodes.$header); }; this.renderRow=function(row){ var $row=jQuery("<div/>").addClass("-hd-util-stats-compare-row").appendTo(this.domNodes.$rows); var $displayValue1=jQuery("<div/>").addClass("-hd-util-stats-compare-row-display-value -hd-util-stats-compare-row-display-value-1"); var $displayValue2=jQuery("<div/>").addClass("-hd-util-stats-compare-row-display-value -hd-util-stats-compare-row-display-value-2"); var $labelAndBar=jQuery("<div/>").addClass("-hd-util-stats-compare-row-label-bar"); var $label=jQuery("<div/>").addClass("-hd-util-stats-compare-row-label").append(row.label); var $bar=jQuery("<div/>").addClass("-hd-util-stats-compare-row-bar"); var total=row.value1 + row.value2; var css1={ width: (row.value1 / total * 100) + "%" }; var css2={ width: (row.value2 / total * 100) + "%" }; $displayValue1.append(row.displayValue1).appendTo($row); $labelAndBar.appendTo($row); $displayValue2.append(row.displayValue2).appendTo($row); $label.appendTo($labelAndBar); $bar.appendTo($labelAndBar); row.title && $label.attr("title", row.title); if(this.options.color1) css1["background-color"]=(this.options.color1.length===6 ? "#" : "") + this.options.color1; if(this.options.color2) css2["background-color"]=(this.options.color2.length===6 ? "#" : "") + this.options.color2; jQuery("<div/>").addClass("-hd-util-stats-compare-row-bar-value -hd-util-stats-compare-row-bar-value-1").appendTo($bar).css(css1); jQuery("<div/>").addClass("-hd-util-stats-compare-row-bar-spacer").appendTo($bar); jQuery("<div/>").addClass("-hd-util-stats-compare-row-bar-value -hd-util-stats-compare-row-bar-value-2").appendTo($bar).css(css2); }; this.initialize(); } hockeydata.extend(StatsCompare, hockeydata["util"], "StatsCompare");})());((function(){ function PlayerCompare(options){ var self=this; this.defaults={ "$domNode": jQuery("<div/>"), "divisionId": null, "league": null, "rows": [], "sport": null, "title1": "", "title2": "", "titleLabel": "", "valuesConfiguration": null }; this.options=jQuery.extend({}, this.defaults, options || {}); this.$domNode=this.options.$domNode; this.domNodes={}; this.initialize=function(){ if(!this.options.league) this.options.league=hockeydata.util.getLeague(this.options.sport); this.$domNode.empty(); this.$domNode.addClass("-hd-util-player-compare"); this.domNodes.$header=jQuery("<div/>").addClass("-hd-util-player-compare-header").appendTo(this.$domNode); this.domNodes.$rows=jQuery("<div/>").addClass("-hd-util-player-compare-rows").appendTo(this.$domNode); this.renderHeader(); if(this.options.rows){ for(var i=0; i < this.options.rows.length; i++){ this.renderRow(this.options.rows[i], i===0); } } }; this.renderHeader=function(){ jQuery("<div/>").addClass("-hd-util-player-compare-header-title -hd-util-player-compare-header-title-1").append(this.options.title1).appendTo(this.domNodes.$header); jQuery("<div/>").addClass("-hd-util-player-compare-header-title -hd-util-player-compare-header-title-label").append(this.options.titleLabel).appendTo(this.domNodes.$header); jQuery("<div/>").addClass("-hd-util-player-compare-header-title -hd-util-player-compare-header-title-2").append(this.options.title2).appendTo(this.domNodes.$header); }; this.renderRow=function(row, large){ var $row=jQuery("<div/>").addClass("-hd-util-player-compare-row").appendTo(this.domNodes.$rows); if(row.player1 || row.player2){ this.renderPlayer({ "$row": $row, "large": large, "index": 1, "player": row.player1 }); this.renderPlayer({ "$row": $row, "large": large, "index": 2, "player": row.player2 }); } else { $row.addClass("-hd-util-player-compare-row-empty"); } }; this.renderPlayer=function(options){ var $player=jQuery("<div/>").addClass("-hd-util-player-compare-row-player -hd-util-player-compare-row-player-" + options.index).appendTo(options.$row); if(!options.player){ return; } var $meta=jQuery("<div/>").addClass("-hd-util-player-compare-row-player-meta"); var $values=jQuery("<div/>").addClass("-hd-util-player-compare-row-player-values"); var metaValues=[]; var values=[]; options.player.playerJerseyNr && metaValues.push("#" + options.player.playerJerseyNr); options.player.position && metaValues.push(options.player.position); jQuery("<div/>").addClass("-hd-util-player-compare-row-player-name").append(options.player.playerFirstname + " " + options.player.playerLastname).appendTo($meta); jQuery("<div/>").addClass("-hd-util-player-compare-row-player-meta-values").append(metaValues.join(" | ")).appendTo($meta); if(this.options.valuesConfiguration){ for(var i=0; i < this.options.valuesConfiguration.length; i++){ var valueConfig=this.options.valuesConfiguration[i]; var value=(valueConfig.key in options.player) ? options.player[valueConfig.key] : "?"; if(options.large){ var $value=jQuery("<div/>").addClass("-hd-util-player-compare-row-player-value").appendTo($values); jQuery("<div/>").addClass("-hd-util-player-compare-row-player-value-label").append(valueConfig.label).appendTo($value); jQuery("<div/>").addClass("-hd-util-player-compare-row-player-value-display").append(value).appendTo($value); } else values.push(valueConfig.label + ": " + value); } } if(options.large){ var $header=jQuery("<div/>").addClass("-hd-util-player-compare-row-player-header").appendTo($player); var $playerPortrait=jQuery("<div/>").addClass("-hd-util-player-compare-row-player-portrait").appendTo($header); $meta.appendTo($header); $player.addClass("-hd-util-player-compare-row-player-large"); $playerPortrait.append(hockeydata.util.ImageLoader.load(hockeydata.util.UriComposer.getPlayerPortraitUri({ "sport": this.options.sport, "league": this.options.league, "divisionId": this.options.divisionId, "playerId": options.player.id }), { "onerror": function(){ this.src=hockeydata.util.UriComposer.getGhostPlayerPortraitUri({ "sport": self.options.sport }); } })); } else { $meta.appendTo($player); $values.append(values.join(", ")); } $values.appendTo($player); }; this.initialize(); } hockeydata.extend(PlayerCompare, hockeydata["util"], "PlayerCompare");})());((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 FullReport(options){ var self=this; this.defaultOptions={ "$domNode": jQuery("<div/>"), "additionalColumnsFieldPlayers": null, "additionalColumnsGoalKeepers": null, "additionalColumnsGoals": null, "additionalColumnsPreGameReportTeamStatsHead2HeadGames": null, "apiKey": "VOID", "autoReload": false, "columnDefinitionFieldPlayers": null, "columnDefinitionGoalKeeperChanges": null, "columnDefinitionGoalKeepers": null, "columnDefinitionGoals": null, "columnDefinitionLeadersDefense": null, "columnDefinitionLeadersPassing": null, "columnDefinitionLeadersReceiving": null, "columnDefinitionLeadersRushing": null, "columnDefinitionPenalties": null, "columnDefinitionPlayByPlay": null, "columnDefinitionPreGameReportTeamStatsHead2HeadGames": null, "columnDefinitionRoster": null, "columnDefinitionScores": null, "columnDefinitionTimeOnIce": null, "columnsFieldPlayers": null, "columnsGoalKeeperChanges": null, "columnsGoalKeepers": null, "columnsGoals": null, "columnsLeadersDefense": null, "columnsLeadersPassing": null, "columnsLeadersReceiving": null, "columnsLeadersRushing": null, "columnsPenalties": null, "columnsPlayByPlay": null, "columnsPreGameReportTeamStatsHead2HeadGames": null, "columnsRoster": null, "columnsScores": null, "columnsTimeOnIce": null, "columnSetFieldPlayers": "default", "columnSetGoalKeeperChanges": "default", "columnSetGoalKeepers": "default", "columnSetGoals": "default", "columnSetLeadersDefense": "default", "columnSetLeadersPassing": "default", "columnSetLeadersReceiving": "default", "columnSetLeadersRushing": "default", "columnSetPenalties": "default", "columnSetPlayByPlay": "default", "columnSetPreGameReportTeamStatsHead2HeadGames": null, "columnSetRoster": "default", "columnSetScores": "default", "columnSetTimeOnIce": "default", "dataUrl": null, "dataUrlTimeOnIce": null, "divisionId": null, "divisionIdUrlParameter": "divisionId", "enablePreGameReport": false, "error": function(e){ self.error(e); }, "gameId": null, "gameIdUrlParameter": "gameId", "league": null, "paint": function(e){ self.paint(e); }, "paintComplete": null, "playerCompareRowDefinitionPreGameReportBadBoys": null, "playerCompareRowDefinitionPreGameReportGameWinners": null, "playerCompareRowDefinitionPreGameReportGoalkeepers": null, "playerCompareRowDefinitionPreGameReportPowerplay": null, "playerCompareRowDefinitionPreGameReportTopscorers": null, "playerLink": null, "reloadInterval": null, "requestData": {}, "rowDefinitionTeamStats": null, "rowsTeamStats": null, "rowSetTeamStats": "default", "showGameState": false, "showPlayerNationInLineups": false, "showPlayerNationFlagInLineups": false, "showShotChart": false, "showYouTubeLink": false, "sport": null, "statsCompareRowDefinitionPreGameReportLastGames": null, "statsCompareRowDefinitionPreGameReportTeamStatsHead2Head": null, "statsCompareRowDefinitionPreGameReportTeamStatsSeason": null, "tabbedStats": false, "teamLink": null, "timeOnIce": false }; this.options=jQuery.extend({}, this.defaultOptions, options || {}); this.options.requestData.apiKey=this.options.apiKey; this.$domNode=this.options.$domNode; this.domNodes={}; this.timerTimeOnIce=null; this.timerIntervalTimeOnIce=1000 * 5; this.tables={}; this.timeOnIceRowsSet=false; this.playersOnIce={ "home": {}, "away": {} }; this.players={}; this.gameStatus=null; this.gameActions=null; this.gameData=null; this.dataSubscription=null; this.firstPaint=true; this.shotChart={}; this.logoUrl={ "home": null, "away": null }; this.isPreGameReport=false; this.initialize=function(){ if(!this.options.league) this.options.league=hockeydata["util"].getLeague(this.options.sport); if(!this.options.divisionId && this.options.divisionIdUrlParameter) this.options.divisionId=hockeydata["util"].getParameter(this.options.divisionIdUrlParameter); if(!this.options.gameId && this.options.gameIdUrlParameter) this.options.gameId=hockeydata["util"].getParameter(this.options.gameIdUrlParameter); this.options.requestData.gameId=this.options.gameId; if(!this.options.dataUrl) this.options.dataUrl=hockeydata["util"]["UriComposer"].getDataUri("getGameReport", this.options); this.$domNode.addClass("-hd-los -hd-los-game-full-report"); 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, "reloadInterval": self.options.reloadInterval, "success": function(e){ if(e["statusId"] > 0 && ("data" in e) && e.data){ e.data.gameData=e.data.gameData || {}; e.data.gameData.images=e.data.gameData.images || {}; e.data.gameActions=e.data.gameActions || {}; self.gameData=e.data.gameData; self.gameActions=e.data.gameActions; self.gameStatus=e.data.gameData.gameStatus; self.awayFieldPlayers=e.data.awayFieldPlayers; self.awayGoalKeepers=e.data.awayGoalKeepers; self.homeFieldPlayers=e.data.homeFieldPlayers; self.homeGoalKeepers=e.data.homeGoalKeepers; self.options._divisionId=e.data.gameData.divisionId; self.addPlayers(e.data.awayFieldPlayers); self.addPlayers(e.data.awayGoalKeepers); self.addPlayers(e.data.homeFieldPlayers); self.addPlayers(e.data.homeGoalKeepers); self.logoUrl.home=(e.data.gameData.images["homeTeamLogo"] || hockeydata["util"]["UriComposer"].getTeamLogoUri({ "sport": self.options.sport, "league": self.options.league, "divisionId": (self.options._divisionId || self.options.divisionId), "teamId": e.data.gameData.homeTeamId })); self.logoUrl.away=(e.data.gameData.images["awayTeamLogo"] || hockeydata["util"]["UriComposer"].getTeamLogoUri({ "sport": self.options.sport, "league": self.options.league, "divisionId": (self.options._divisionId || self.options.divisionId), "teamId": e.data.gameData.awayTeamId })); if(self.gameData.gameStatus===0 && self.options.enablePreGameReport) self.isPreGameReport=true; else if(self.gameData.gameStatus && self.isPreGameReport && ! self.firstPaint){ self.isPreGameReport=false; self.firstPaint=true; self.$domNode.empty(); } self.options.paint(e.data); if(self.options.timeOnIce && !self.timerTimeOnIce && self.gameStatus===1) self.loadTimeOnIce(); self.options.paintComplete && self.options.paintComplete["call"](self); } else self.options.error(e); }, "url": self.options.dataUrl }); }; this.destroy=function(){ if(this.dataSubscription) this.dataSubscription.unsubscribe(); if(this.options.showShotChart){ this.shotChart.typeSelect && this.shotChart.typeSelect.destroy(); this.shotChart.periodSelect && this.shotChart.periodSelect.destroy(); this.shotChart.teamOrPlayerSelect && this.shotChart.teamOrPlayerSelect.destroy(); } }; this.error=function(){ if(this.firstPaint) this.$domNode.html(jQuery("<div/>").html(hockeydata["i18n"].translate("No Game Data available yet."))); }; this.getToggleButtonFunction=function($buttonGroup, $contents, $activeButton, $activeContent){ return function(){ if(!$activeButton.hasClass("-hd-button-active")){ $buttonGroup.find(".-hd-button-active").removeClass("-hd-button-active"); $activeButton.addClass("-hd-button-active"); $contents.find("> div").hide(); jQuery.isFunction($activeContent) ? $activeContent() : $activeContent.show(); } }; }; this.prepareColumns=function(columnsName, columnSetName, columnDefinitionName, columnDefinitionType){ if(!this.options[columnDefinitionName]) this.options[columnDefinitionName]=hockeydata["los"]["Configuration"].getTableColumnDefinition({ "sport": this.options.sport, "league": this.options.league, "type": columnDefinitionType }); if(!this.options[columnsName]) this.options[columnsName]=hockeydata["los"]["Configuration"].getTableColumns({ "sport": this.options.sport, "league": this.options.league, "columnSet": this.options[columnSetName], "type": columnDefinitionType }); else if(hockeydata["util"].isString(this.options[columnsName])) this.options[columnsName]=this.options[columnsName].split(","); }; this.initializeTable=function(table, columns, columnDefinition, $node, hideHeaders){ var tableHeaders=[]; var options={ "$domNode": $node, "headers": 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;" }); } if(typeof hideHeaders !== "undefined") options.hideHeaders=hideHeaders; this.tables[table]=new hockeydata["util"]["IntelliTable"](jQuery.extend({}, this.options, options)); }; this.addPlayers=function(players){ if(players) for(var i=0; i < players.length; i++) self.players[players[i].id]=players[i]; }; this.addShotChartGameAction=function(gameAction, filterChange){ if(self.domNodes.shotChart.$playingArea.find(".-hd-los-game-full-report-shot-chart-game-action-" + gameAction.guid).length) return false; var gameActionClasses=""; gameActionClasses += " -hd-los-game-full-report-shot-chart-game-action"; gameActionClasses += " -hd-los-game-full-report-shot-chart-game-action-" + gameAction.guid; gameActionClasses += " -hd-los-game-full-report-shot-chart-game-action-type-" + gameAction.type; gameActionClasses += " -hd-los-game-full-report-shot-chart-game-action-team-" + (self.gameData.homeTeamId===gameAction.teamId ? "home" : "away"); if(self.gameActionsInitialized && !filterChange) gameActionClasses += " -hd-los-game-full-report-shot-chart-game-action-new"; var $gameAction=jQuery("<div/>").addClass(gameActionClasses).appendTo(self.domNodes.shotChart.$playingArea).attr("data-id", gameAction.guid); var $content=jQuery("<div/>"); var text=hockeydata["i18n"].translate("Unknown Action Type"); var player=self.players[gameAction.playerId]; var playerName=player ? player.playerFirstname + " " + player.playerLastname : null; var period=null; if(gameAction.type==="SHOT-SAVE") text=playerName ? hockeydata["util"].sprintf(hockeydata["i18n"].translate("Saved shot by <u>%s</u> from %sm."), playerName, gameAction["goalDistance"]) : hockeydata["util"].sprintf(hockeydata["i18n"].translate("Saved shot from %sm."), gameAction["goalDistance"]); else if(gameAction.type==="SHOT-GOAL") text=playerName ? hockeydata["util"].sprintf(hockeydata["i18n"].translate("Goal by <u>%s</u> from %sm."), playerName, gameAction["goalDistance"]) : hockeydata["util"].sprintf(hockeydata["i18n"].translate("Goal from %sm."), gameAction["goalDistance"]); else if(gameAction.type==="SHOT-BLOCK") text=playerName ? hockeydata["util"].sprintf(hockeydata["i18n"].translate("Blocked shot by <u>%s</u> from %sm."), playerName, gameAction["goalDistance"]) : hockeydata["util"].sprintf(hockeydata["i18n"].translate("Blocked shot from %sm."), gameAction["goalDistance"]); if(gameAction["period"]===99) period=hockeydata["i18n"].translate("Shootout"); else if(gameAction["period"] >= 11) period=hockeydata["i18n"].translate("Overtime") + " " + (gameAction["period"] - 10); else period=hockeydata["i18n"].translate("Period") + " " + gameAction["period"]; if(period){ text += "<br/>"; text += "<span class='-hd-los-game-full-report-shot-chart-game-action-period'>" + period + "</span>"; } jQuery("<div/>").addClass("-hd-los-game-full-report-shot-chart-game-action-team-logo").appendTo($content).html(hockeydata["util"]["ImageLoader"].load(self.gameData.homeTeamId===gameAction.teamId ? self.logoUrl.home : self.logoUrl.away)); jQuery("<div/>").addClass("-hd-los-game-full-report-shot-chart-game-action-text").appendTo($content).html(text); $gameAction.css({ "left": gameAction.x + "%", "top": gameAction.y + "%" }); new hockeydata["util"]["PopUp"]({ "$domNode": jQuery("<div/>").appendTo($gameAction), "content": $content, "handle": "click" }); }; this.updateShotChart=function(filterChange){ if(self.gameActions){ var gameActionsObject={}; var filterType=self.domNodes.shotChart.options.$type.val(); var filterPeriod=self.domNodes.shotChart.options.$period.val(); var filterPeriodNo=Number(filterPeriod); var filterTeamOrPlayer=self.domNodes.shotChart.options.$teamOrPlayer.val(); var checkFilter=function(gameAction){ if(gameAction["isDeleted"]) return false; if(filterType && filterType !== gameAction.type) return false; if(filterPeriod && ((!isNaN(filterPeriodNo) && filterPeriodNo !== gameAction["period"]) || (filterPeriod==='other' && gameAction["period"] <= 3))) return false; if(filterTeamOrPlayer){ var filterId=Number(filterTeamOrPlayer.substring(1)); if((filterTeamOrPlayer[0]==="t" && filterId !== gameAction.teamId) || (filterTeamOrPlayer[0]==="p" && filterId !== gameAction.playerId)) return false; } return true; }; for(var i=0; i < self.gameActions.length; i++){ if(checkFilter(self.gameActions[i])){ self.addShotChartGameAction(self.gameActions[i], filterChange); gameActionsObject[self.gameActions[i].guid]=true; } } self.domNodes.shotChart.$playingArea.find(".-hd-los-game-full-report-shot-chart-game-action").each(function(){ var $this=jQuery(this); if(!($this.attr("data-id") in gameActionsObject)) $this.remove(); }); self.gameActionsInitialized=true; } }; this.paint=function(data){ var i, lastPeriod; var drawTeamStats=false; var drawGoals=false; var drawPenalties=false; var drawFieldPlayers=false; var drawGoalKeepers=false; var drawGoalKeeperChanges=false; var drawScores=false; var drawPlayByPlay=false; var drawLeaders=false; var drawRosters=false; var drawShotChart=false; var drawPreGameReportLastGames=false; var drawPreGameReportTeamStatsSeason=false; var drawPreGameReportTeamStatsHead2Head=false; var drawPreGameReportStarPlayers=false; var gameFacts=[]; data=data || {}; data.gameData=data.gameData || {}; if(("homeTeamStats" in data) || ("awayTeamStats" in data)){ data.homeTeamStats=data.homeTeamStats || []; data.awayTeamStats=data.awayTeamStats || []; drawTeamStats=true; } if(("homeGoals" in data) || ("awayGoals" in data)){ data.homeGoals=data.homeGoals || []; data.awayGoals=data.awayGoals || []; drawGoals=true; } if(("homePenalties" in data) || ("awayPenalties" in data)){ data.homePenalties=data.homePenalties || []; data.awayPenalties=data.awayPenalties || []; drawPenalties=true; } if(("homeFieldPlayers" in data) || ("awayFieldPlayers" in data)){ data.homeFieldPlayers=data.homeFieldPlayers || []; data.awayFieldPlayers=data.awayFieldPlayers || []; drawFieldPlayers=true; } if(("homeGoalKeepers" in data) || ("awayGoalKeepers" in data)){ data.homeGoalKeepers=data.homeGoalKeepers || []; data.awayGoalKeepers=data.awayGoalKeepers || []; drawGoalKeepers=true; } if(("homeGoalKeeperChanges" in data) || ("awayGoalKeeperChanges" in data)){ data.homeGoalKeeperChanges=data.homeGoalKeeperChanges || []; data.awayGoalKeeperChanges=data.awayGoalKeeperChanges || []; drawGoalKeeperChanges=true; } if("scores" in data){ data.scores=data.scores || []; drawScores=true; } if(self.options.showShotChart && ("gameActions" in data) && data.gameActions !== null && !this.isPreGameReport){ data.gameActions=data.gameActions || []; drawShotChart=true; } if("playByPlay" in data){ data.playByPlay=data.playByPlay || []; drawPlayByPlay=true; } if(("homePassingLeaders" in data) || ("awayPassingLeaders" in data) || ("homeReceivingLeaders" in data) || ("awayReceivingLeaders" in data) || ("homeRushingLeaders" in data) || ("awayRushingLeaders" in data) || ("homeDefensiveLeaders" in data) || ("awayDefensiveLeaders" in data)){ data.homePassingLeaders=data.homePassingLeaders || []; data.awayPassingLeaders=data.awayPassingLeaders || []; data.homeReceivingLeaders=data.homeReceivingLeaders || []; data.awayReceivingLeaders=data.awayReceivingLeaders || []; data.homeRushingLeaders=data.homeRushingLeaders || []; data.awayRushingLeaders=data.awayRushingLeaders || []; data.homeDefensiveLeaders=data.homeDefensiveLeaders || []; data.awayDefensiveLeaders=data.awayDefensiveLeaders || []; drawLeaders=true; } if(("homeRoster" in data) || ("awayRoster" in data)){ data.homeRoster=data.homeRoster || []; data.awayRoster=data.awayRoster || []; drawRosters=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) && ("longname" in data.gameData.location)) gameFacts.push({ "key": "location", "value": data.gameData.location["longname"], "label": hockeydata["i18n"].translate("Location") }); if(("attendance" in data.gameData) && data.gameData["attendance"]) gameFacts.push({ "key": "attendance", "value": hockeydata.util.formatNumber(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(jQuery.isPlainObject(data.gameData["weatherData"])) gameFacts.push({ "key": "weatherData", "value": "<img src='" + data.gameData["weatherData"]["weatherIconUrl"] + "' alt=''> " + Math.floor(data.gameData["weatherData"]["temperatureCelsius"]) + "° C | " + Math.floor(data.gameData["weatherData"]["windSpeed"]) + " m/s | " + Math.floor(data.gameData["weatherData"]["cloudiness"]) + " % " + hockeydata["i18n"].translate("clouds"), "label": hockeydata["i18n"].translate("Weather Conditions") }); self.$domNode.removeClass("-hd-los-game-full-report-status-0 -hd-los-game-full-report-status-1 -hd-los-game-full-report-status-2 -hd-los-game-full-report-status-3 -hd-los-game-full-report-status-4"); self.$domNode.addClass("-hd-los-game-full-report-status-" + self.gameStatus); if(self.firstPaint){ self.firstPaint=false; this.domNodes.gameInfo={}; this.domNodes.gameInfo.$gameInfo=jQuery("<div/>").addClass("-hd-los-game-full-report-game-info").appendTo(this.$domNode); if(this.isPreGameReport) this.domNodes.gameInfo.$preGameReportHeader=jQuery("<div/>").addClass("-hd-los-game-full-report-pre-game-report-header").append(hockeydata["i18n"].translate("Pre-Game Report")).appendTo(this.domNodes.gameInfo.$gameInfo); if(this.options.showGameState) this.domNodes.gameInfo.$gameState=jQuery("<div/>").addClass("-hd-los-game-full-report-game-state").appendTo(this.domNodes.gameInfo.$gameInfo); this.domNodes.gameInfo.$gameStateExtended=jQuery("<div/>").addClass("-hd-los-game-full-report-game-state-extended").appendTo(this.domNodes.gameInfo.$gameInfo); this.domNodes.gameInfo.$awayTeam=jQuery("<div/>").addClass("-hd-los-game-full-report-team -hd-los-game-full-report-team-away").appendTo(this.domNodes.gameInfo.$gameInfo); this.domNodes.gameInfo.$awayTeamName=jQuery("<div/>").addClass("-hd-los-game-full-report-team-name -hd-los-game-full-report-team-name-away").appendTo(this.domNodes.gameInfo.$awayTeam); this.domNodes.gameInfo.$awayTeamLogo=jQuery("<div/>").addClass("-hd-los-game-full-report-team-logo -hd-los-game-full-report-team-logo-away").appendTo(this.domNodes.gameInfo.$awayTeam); this.domNodes.gameInfo.$homeTeam=jQuery("<div/>").addClass("-hd-los-game-full-report-team -hd-los-game-full-report-team-home").appendTo(this.domNodes.gameInfo.$gameInfo); this.domNodes.gameInfo.$homeTeamLogo=jQuery("<div/>").addClass("-hd-los-game-full-report-team-logo -hd-los-game-full-report-team-logo-home").appendTo(this.domNodes.gameInfo.$homeTeam); this.domNodes.gameInfo.$homeTeamName=jQuery("<div/>").addClass("-hd-los-game-full-report-team-name -hd-los-game-full-report-team-name-home").appendTo(this.domNodes.gameInfo.$homeTeam); this.domNodes.gameInfo.$score=jQuery("<div/>").addClass("-hd-los-game-full-report-score").appendTo(this.domNodes.gameInfo.$gameInfo); this.domNodes.gameInfo.$scoreHome=jQuery("<div/>").addClass("-hd-los-game-full-report-score-home").appendTo(this.domNodes.gameInfo.$score); this.domNodes.gameInfo.$scoreDivider=jQuery("<div/>").addClass("-hd-los-game-full-report-score-divider").appendTo(this.domNodes.gameInfo.$score); this.domNodes.gameInfo.$scoreAway=jQuery("<div/>").addClass("-hd-los-game-full-report-score-away").appendTo(this.domNodes.gameInfo.$score); this.domNodes.gameInfo.$periodStats=jQuery("<div/>").addClass("-hd-los-game-full-report-period-stats").appendTo(this.domNodes.gameInfo.$gameInfo); this.domNodes.gameInfo.$gameStreams=jQuery("<div/>").addClass("-hd-los-game-full-report-streams").appendTo(this.domNodes.gameInfo.$gameInfo).hide(); if(self.options.showYouTubeLink) this.domNodes.gameInfo.$youTubeLink=jQuery("<div/>").addClass("-hd-los-game-full-report-youtube-link").appendTo(this.domNodes.gameInfo.$gameInfo); self.domNodes.gameInfo.$homeTeamLogo.html(hockeydata["util"]["ImageLoader"].load(self.logoUrl.home)); self.domNodes.gameInfo.$awayTeamLogo.html(hockeydata["util"]["ImageLoader"].load(self.logoUrl.away)); var uriHomeTeam=hockeydata["util"]["UriComposer"].parseUri(self.options.teamLink, [ data.gameData.homeTeamId, self.options.divisionId ]); var uriAwayTeam=hockeydata["util"]["UriComposer"].parseUri(self.options.teamLink, [ data.gameData.awayTeamId, self.options.divisionId ]); if(uriHomeTeam){ self.domNodes.gameInfo.$homeTeamLogo.click(hockeydata["util"]["LinkComposer"].getLinkClickFunction(uriHomeTeam)).addClass("-hd-clickable"); self.domNodes.gameInfo.$homeTeamName.click(hockeydata["util"]["LinkComposer"].getLinkClickFunction(uriHomeTeam)).addClass("-hd-clickable"); } if(uriAwayTeam){ self.domNodes.gameInfo.$awayTeamLogo.click(hockeydata["util"]["LinkComposer"].getLinkClickFunction(uriAwayTeam)).addClass("-hd-clickable"); self.domNodes.gameInfo.$awayTeamName.click(hockeydata["util"]["LinkComposer"].getLinkClickFunction(uriAwayTeam)).addClass("-hd-clickable"); } if(gameFacts.length){ this.domNodes.gameFacts={}; this.domNodes.gameFacts.$gameFacts=jQuery("<div/>").addClass("-hd-los-game-full-report-game-facts").appendTo(this.$domNode); for(i=0; i < gameFacts.length; i++) this.domNodes.gameFacts[gameFacts[i].key]=jQuery("<div/>").appendTo(jQuery("<div/>").addClass("-hd-los-game-full-report-game-fact-value").appendTo(jQuery("<div/>").addClass("-hd-los-game-full-report-game-fact-row -hd-los-game-full-report-game-fact-row-" + gameFacts[i].key).appendTo(this.domNodes.gameFacts.$gameFacts).append(jQuery("<div/>").addClass("-hd-los-game-full-report-game-fact-label").append(jQuery("<div/>").append( gameFacts[i].label))))); } if(self.options.timeOnIce){ this.domNodes.timeOnIce={}; this.domNodes.timeOnIce.highlights={}; this.domNodes.timeOnIce.$timeOnIce=jQuery("<div/>").addClass("-hd-los-game-full-report-container -hd-los-game-full-report-time-on-ice").appendTo(this.$domNode).hide(); this.domNodes.timeOnIce.$headline=jQuery("<div/>").addClass("-hd-los-game-full-report-headline").html("<span>" + hockeydata["i18n"].translate("Time on Ice") + "</span>").appendTo(this.domNodes.timeOnIce.$timeOnIce); this.domNodes.timeOnIce.$gameTime=jQuery("<span/>").appendTo(this.domNodes.timeOnIce.$headline); this.domNodes.timeOnIce.$dataHighlights=jQuery("<div/>").addClass("-hd-los-game-full-report-container-data -hd-los-game-full-report-time-on-ice-data-highlights").appendTo(this.domNodes.timeOnIce.$timeOnIce); this.domNodes.timeOnIce.highlights.$home=jQuery("<div/>").addClass("-hd-los-game-full-report-time-on-ice-highlights-team -hd-los-game-full-report-time-on-ice-highlights-home").appendTo(this.domNodes.timeOnIce.$dataHighlights); this.domNodes.timeOnIce.highlights.$away=jQuery("<div/>").addClass("-hd-los-game-full-report-time-on-ice-highlights-team -hd-los-game-full-report-time-on-ice-highlights-away").appendTo(this.domNodes.timeOnIce.$dataHighlights); this.domNodes.timeOnIce.$dataTable=jQuery("<div/>").addClass("-hd-los-game-full-report-container-data -hd-los-game-full-report-time-on-ice-data-table").appendTo(this.domNodes.timeOnIce.$timeOnIce); if(!this.options.columnDefinitionTimeOnIce) this.options.columnDefinitionTimeOnIce=hockeydata["los"]["Configuration"].getTableColumnDefinition({ "sport": this.options.sport, "league": this.options.league, "type": "gameFullReportTimeOnIce" }); if(!this.options.columnsTimeOnIce) this.options.columnsTimeOnIce=hockeydata["los"]["Configuration"].getTableColumns({ "sport": this.options.sport, "league": this.options.league, "columnSet": this.options.columnSetTimeOnIce, "type": "gameFullReportTimeOnIce" }); else if(hockeydata["util"].isString(this.options.columnsTimeOnIce)) this.options.columnsTimeOnIce=this.options.columnsTimeOnIce.split(","); this.initializeTable("timeOnIce", this.options.columnsTimeOnIce, this.options.columnDefinitionTimeOnIce, this.domNodes.timeOnIce.$dataTable); if(!this.options.dataUrlTimeOnIce) this.options.dataUrlTimeOnIce=hockeydata["util"]["UriComposer"].getDataUri("getTimeOnIce", this.options); } if(drawShotChart){ this.domNodes.shotChart={ "options": {} }; this.domNodes.shotChart.$shotChart=jQuery("<div/>").addClass("-hd-los-game-full-report-container -hd-los-game-full-report-shot-chart").appendTo(this.$domNode); this.domNodes.shotChart.$headline=jQuery("<div/>").addClass("-hd-los-game-full-report-headline").html("<span>" + hockeydata["i18n"].translate("Shot Chart") + "</span>").appendTo(this.domNodes.shotChart.$shotChart); this.domNodes.shotChart.$data=jQuery("<div/>").addClass("-hd-los-game-full-report-container-data -hd-los-game-full-report-shot-chart-data").appendTo(this.domNodes.shotChart.$shotChart); this.domNodes.shotChart.options.$options=jQuery("<div/>").addClass("-hd-los-game-full-report-shot-chart-options").appendTo(this.domNodes.shotChart.$data); this.domNodes.shotChart.options.$typeWrapper=jQuery("<div/>").appendTo(this.domNodes.shotChart.options.$options); this.domNodes.shotChart.options.$type=jQuery("<select/>").appendTo(this.domNodes.shotChart.options.$typeWrapper); this.domNodes.shotChart.options.$periodWrapper=jQuery("<div/>").appendTo(this.domNodes.shotChart.options.$options); this.domNodes.shotChart.options.$period=jQuery("<select/>").appendTo(this.domNodes.shotChart.options.$periodWrapper); this.domNodes.shotChart.options.$teamOrPlayerWrapper=jQuery("<div/>").appendTo(this.domNodes.shotChart.options.$options); this.domNodes.shotChart.options.$teamOrPlayer=jQuery("<select/>").appendTo(this.domNodes.shotChart.options.$teamOrPlayerWrapper); this.domNodes.shotChart.$playingAreaWrapper=jQuery("<div/>").addClass("-hd-los-game-full-report-shot-chart-playing-area-wrapper").appendTo(this.domNodes.shotChart.$data); this.domNodes.shotChart.$playingArea=jQuery("<div/>").addClass("-hd-los-game-full-report-shot-chart-playing-area -hd-los-game-full-report-shot-chart-playing-area-" + self.options.sport).appendTo(this.domNodes.shotChart.$playingAreaWrapper); this.domNodes.shotChart.$legend=jQuery("<div/>").addClass("-hd-los-game-full-report-shot-chart-legend").appendTo(this.domNodes.shotChart.$data); this.domNodes.shotChart.options.$type.append(jQuery("<option value=''/>").html(hockeydata["i18n"].translate("All Shots"))); this.domNodes.shotChart.options.$type.append(jQuery("<option value='SHOT-GOAL'/>").html(hockeydata["i18n"].translate("Goals"))); this.domNodes.shotChart.options.$type.append(jQuery("<option value='SHOT-SAVE'/>").html(hockeydata["i18n"].translate("Saved Shots"))); this.domNodes.shotChart.options.$type.append(jQuery("<option value='SHOT-BLOCK'/>").html(hockeydata["i18n"].translate("Blocked Shots"))); this.domNodes.shotChart.options.$period.append(jQuery("<option value=''/>").html(hockeydata["i18n"].translate("All Periods"))); this.domNodes.shotChart.options.$period.append(jQuery("<option value='1'/>").html(hockeydata["i18n"].translate("Period 1"))); this.domNodes.shotChart.options.$period.append(jQuery("<option value='2'/>").html(hockeydata["i18n"].translate("Period 2"))); this.domNodes.shotChart.options.$period.append(jQuery("<option value='3'/>").html(hockeydata["i18n"].translate("Period 3"))); this.domNodes.shotChart.options.$period.append(jQuery("<option value='other'/>").html(hockeydata["i18n"].translate("OT & SO"))); this.domNodes.shotChart.options.$teamOrPlayer.append(jQuery("<option value=''/>").html(hockeydata["i18n"].translate("All Teams & Players"))); this.domNodes.shotChart.options.$teamOrPlayer.append(jQuery("<option value='t" + data.gameData.homeTeamId + "'/>").html(hockeydata["i18n"].translate("Home Team"))); this.domNodes.shotChart.options.$teamOrPlayer.append(jQuery("<option value='t" + data.gameData.awayTeamId + "'/>").html(hockeydata["i18n"].translate("Away Team"))); this.domNodes.shotChart.options.$homePlayers=jQuery("<optgroup/>").appendTo(this.domNodes.shotChart.options.$teamOrPlayer).attr("label", hockeydata["i18n"].translate("Home Team Players")); this.domNodes.shotChart.options.$awayPlayers=jQuery("<optgroup/>").appendTo(this.domNodes.shotChart.options.$teamOrPlayer).attr("label", hockeydata["i18n"].translate("Away Team Players")); var homeFieldPlayers=data.homeFieldPlayers.slice(); var awayFieldPlayers=data.awayFieldPlayers.slice(); var sortFn=function(a, b){ var nameA=a.playerLastname + " " + a.playerFirstname; var nameB=b.playerLastname + " " + b.playerFirstname; return (nameA < nameB) ? -1 : nameA > nameB ? 1 : 0; }; homeFieldPlayers.sort(sortFn); awayFieldPlayers.sort(sortFn); for(i=0; i < homeFieldPlayers.length; i++) this.domNodes.shotChart.options.$homePlayers.append(jQuery("<option value='p" + homeFieldPlayers[i].id + "'/>").html(homeFieldPlayers[i].playerLastname + " " + homeFieldPlayers[i].playerFirstname)); for(i=0; i < awayFieldPlayers.length; i++) this.domNodes.shotChart.options.$awayPlayers.append(jQuery("<option value='p" + awayFieldPlayers[i].id + "'/>").html(awayFieldPlayers[i].playerLastname + " " + awayFieldPlayers[i].playerFirstname)); this.shotChart.typeSelect=new hockeydata["util"]["Select"](this.domNodes.shotChart.options.$type); this.shotChart.periodSelect=new hockeydata["util"]["Select"](this.domNodes.shotChart.options.$period); this.shotChart.teamOrPlayerSelect=new hockeydata["util"]["Select"](this.domNodes.shotChart.options.$teamOrPlayer); this.domNodes.shotChart.options.$type.change(function(){ self.updateShotChart(true); }); this.domNodes.shotChart.options.$period.change(function(){ self.updateShotChart(true); }); this.domNodes.shotChart.options.$teamOrPlayer.change(function(){ self.updateShotChart(true); }); this.domNodes.shotChart.$legend.append(jQuery("<div/>").append(jQuery("<span/>").addClass("-hd-los-game-full-report-shot-chart-legend-type -hd-los-game-full-report-shot-chart-legend-type-SHOT-GOAL")).append(jQuery("<span/>").html(hockeydata["i18n"].translate("Goal")))); this.domNodes.shotChart.$legend.append(jQuery("<div/>").append(jQuery("<span/>").addClass("-hd-los-game-full-report-shot-chart-legend-type -hd-los-game-full-report-shot-chart-legend-type-SHOT-SAVE")).append(jQuery("<span/>").html(hockeydata["i18n"].translate("Saved Shot")))); this.domNodes.shotChart.$legend.append(jQuery("<div/>").append(jQuery("<span/>").addClass("-hd-los-game-full-report-shot-chart-legend-type -hd-los-game-full-report-shot-chart-legend-type-SHOT-BLOCK")).append(jQuery("<span/>").html(hockeydata["i18n"].translate("Blocked Shot")))); this.domNodes.shotChart.$legend.append(jQuery("<div/>").append(jQuery("<span/>").addClass("-hd-los-game-full-report-shot-chart-legend-type -hd-los-game-full-report-shot-chart-legend-type-home-team")).append(jQuery("<span/>").html(hockeydata["i18n"].translate("Home Team")))); this.domNodes.shotChart.$legend.append(jQuery("<div/>").append(jQuery("<span/>").addClass("-hd-los-game-full-report-shot-chart-legend-type -hd-los-game-full-report-shot-chart-legend-type-away-team")).append(jQuery("<span/>").html(hockeydata["i18n"].translate("Away Team")))); } if(drawScores){ this.domNodes.scores={}; this.domNodes.scores.$scores=jQuery("<div/>").addClass("-hd-los-game-full-report-container -hd-los-game-full-report-scores").appendTo(this.$domNode); this.domNodes.scores.$headline=jQuery("<div/>").addClass("-hd-los-game-full-report-headline").html("<span>" + hockeydata["i18n"].translate("Scores") + "</span>").appendTo(this.domNodes.scores.$scores); this.domNodes.scores.$data=jQuery("<div/>").addClass("-hd-los-game-full-report-container-data -hd-los-game-full-report-scores-data").appendTo(this.domNodes.scores.$scores); if(!this.options.columnDefinitionScores) this.options.columnDefinitionScores=hockeydata["los"]["Configuration"].getTableColumnDefinition({ "sport": this.options.sport, "league": this.options.league, "type": "gameFullReportScores" }); if(!this.options.columnsScores) this.options.columnsScores=hockeydata["los"]["Configuration"].getTableColumns({ "sport": this.options.sport, "league": this.options.league, "columnSet": this.options.columnSetScores, "type": "gameFullReportScores" }); else if(hockeydata["util"].isString(this.options.columnsScores)) this.options.columnsScores=this.options.columnsScores.split(","); this.initializeTable("scores", this.options.columnsScores, this.options.columnDefinitionScores, this.domNodes.scores.$data, true); } if(drawTeamStats){ this.domNodes.teamStats={}; this.domNodes.teamStats.$teamStats=jQuery("<div/>").addClass("-hd-los-game-full-report-container -hd-los-game-full-report-team-stats").appendTo(this.$domNode); this.domNodes.teamStats.$headline=jQuery("<div/>").addClass("-hd-los-game-full-report-headline").html("<span>" + hockeydata["i18n"].translate("Team Stats") + "</span>").appendTo(this.domNodes.teamStats.$teamStats); this.domNodes.teamStats.$data=jQuery("<div/>").addClass("-hd-los-game-full-report-container-data -hd-los-game-full-report-team-stats-data").appendTo(this.domNodes.teamStats.$teamStats); if(!this.options.rowDefinitionTeamStats) this.options.rowDefinitionTeamStats=hockeydata["los"]["Configuration"].getTableRowDefinition({ "sport": this.options.sport, "league": this.options.league, "type": "gameFullReportTeamStats" }); if(!this.options.rowsTeamStats) this.options.rowsTeamStats=hockeydata["los"]["Configuration"].getTableRows({ "sport": this.options.sport, "league": this.options.league, "rowSet": this.options.rowSetTeamStats, "type": "gameFullReportTeamStats" }); else if(hockeydata["util"].isString(this.options.rowsTeamStats)) this.options.rowsTeamStats=this.options.rowsTeamStats.split(","); this.tables.teamStats=new hockeydata["util"]["IntelliTable"](jQuery.extend({}, this.options, { "$domNode": this.domNodes.teamStats.$data, "headers": [ { "html": "&nbsp;" }, { "html": data.gameData.homeTeamShortname || hockeydata["i18n"].translate("Home") }, { "html": data.gameData.awayTeamShortname || hockeydata["i18n"].translate("Away") } ], "rows": [] })); } if(drawLeaders){ this.domNodes.leaders={}; this.domNodes.leaders.$leaders=jQuery("<div/>").addClass("-hd-los-game-full-report-container -hd-los-game-full-report-leaders").appendTo(this.$domNode); this.domNodes.leaders.$headline=jQuery("<div/>").addClass("-hd-los-game-full-report-headline").html("<span>" + hockeydata["i18n"].translate("Leaders") + "</span>").appendTo(this.domNodes.leaders.$leaders); this.domNodes.leaders.$data=jQuery("<div/>").appendTo(this.domNodes.leaders.$leaders); this.domNodes.leaders.$dataPassingHome=jQuery("<div/>").addClass("-hd-los-game-full-report-container-data -hd-los-game-full-report-leaders-data -hd-los-game-full-report-leaders-data-passing").appendTo(this.domNodes.leaders.$data); this.domNodes.leaders.$dataReceivingHome=jQuery("<div/>").addClass("-hd-los-game-full-report-container-data -hd-los-game-full-report-leaders-data -hd-los-game-full-report-leaders-data-receiving").appendTo(this.domNodes.leaders.$data).hide(); this.domNodes.leaders.$dataRushingHome=jQuery("<div/>").addClass("-hd-los-game-full-report-container-data -hd-los-game-full-report-leaders-data -hd-los-game-full-report-leaders-data-rushing").appendTo(this.domNodes.leaders.$data).hide(); this.domNodes.leaders.$dataDefenseHome=jQuery("<div/>").addClass("-hd-los-game-full-report-container-data -hd-los-game-full-report-leaders-data -hd-los-game-full-report-leaders-data-defense").appendTo(this.domNodes.leaders.$data).hide(); this.domNodes.leaders.$dataPassingAway=jQuery("<div/>").addClass("-hd-los-game-full-report-container-data -hd-los-game-full-report-leaders-data -hd-los-game-full-report-leaders-data-passing").appendTo(this.domNodes.leaders.$data).hide(); this.domNodes.leaders.$dataReceivingAway=jQuery("<div/>").addClass("-hd-los-game-full-report-container-data -hd-los-game-full-report-leaders-data -hd-los-game-full-report-leaders-data-receiving").appendTo(this.domNodes.leaders.$data).hide(); this.domNodes.leaders.$dataRushingAway=jQuery("<div/>").addClass("-hd-los-game-full-report-container-data -hd-los-game-full-report-leaders-data -hd-los-game-full-report-leaders-data-rushing").appendTo(this.domNodes.leaders.$data).hide(); this.domNodes.leaders.$dataDefenseAway=jQuery("<div/>").addClass("-hd-los-game-full-report-container-data -hd-los-game-full-report-leaders-data -hd-los-game-full-report-leaders-data-defense").appendTo(this.domNodes.leaders.$data).hide(); this.domNodes.leaders.$toggleTeam=jQuery("<div/>").addClass("-hd-button-group").prependTo(this.domNodes.leaders.$headline); this.domNodes.leaders.$toggleTeamHome=jQuery("<button type='button'/>").addClass("-hd-button -hd-button-active").html(data.gameData.homeTeamShortname || hockeydata["i18n"].translate("Home")).appendTo(this.domNodes.leaders.$toggleTeam); this.domNodes.leaders.$toggleTeamAway=jQuery("<button type='button'/>").addClass("-hd-button").html(data.gameData.awayTeamShortname || hockeydata["i18n"].translate("Away")).appendTo(this.domNodes.leaders.$toggleTeam); this.domNodes.leaders.$toggleType=jQuery("<div/>").addClass("-hd-button-group").prependTo(this.domNodes.leaders.$headline); this.domNodes.leaders.$toggleTypePassing=jQuery("<button type='button'/>").addClass("-hd-button -hd-button-active").html(hockeydata["i18n"].translate("Passing")).appendTo(this.domNodes.leaders.$toggleType).attr("data-type", "Passing"); this.domNodes.leaders.$toggleTypeReceiving=jQuery("<button type='button'/>").addClass("-hd-button").html(hockeydata["i18n"].translate("Receiving")).appendTo(this.domNodes.leaders.$toggleType).attr("data-type", "Receiving"); this.domNodes.leaders.$toggleTypeRushing=jQuery("<button type='button'/>").addClass("-hd-button").html(hockeydata["i18n"].translate("Rushing")).appendTo(this.domNodes.leaders.$toggleType).attr("data-type", "Rushing"); this.domNodes.leaders.$toggleTypeDefense=jQuery("<button type='button'/>").addClass("-hd-button").html(hockeydata["i18n"].translate("Defense")).appendTo(this.domNodes.leaders.$toggleType).attr("data-type", "Defense"); var toggleLeaders=function(){ var team=self.domNodes.leaders.$toggleTeamHome.hasClass("-hd-button-active") ? "Home" : "Away"; var type=self.domNodes.leaders.$toggleType.find(".-hd-button-active").attr("data-type"); self.domNodes.leaders["$data" + type + team].show(); }; this.domNodes.leaders.$toggleTeamHome.click(this.getToggleButtonFunction(this.domNodes.leaders.$toggleTeam, this.domNodes.leaders.$data, this.domNodes.leaders.$toggleTeamHome, toggleLeaders)); this.domNodes.leaders.$toggleTeamAway.click(this.getToggleButtonFunction(this.domNodes.leaders.$toggleTeam, this.domNodes.leaders.$data, this.domNodes.leaders.$toggleTeamAway, toggleLeaders)); this.domNodes.leaders.$toggleTypePassing.click(this.getToggleButtonFunction(this.domNodes.leaders.$toggleType, this.domNodes.leaders.$data, this.domNodes.leaders.$toggleTypePassing, toggleLeaders)); this.domNodes.leaders.$toggleTypeReceiving.click(this.getToggleButtonFunction(this.domNodes.leaders.$toggleType, this.domNodes.leaders.$data, this.domNodes.leaders.$toggleTypeReceiving, toggleLeaders)); this.domNodes.leaders.$toggleTypeRushing.click(this.getToggleButtonFunction(this.domNodes.leaders.$toggleType, this.domNodes.leaders.$data, this.domNodes.leaders.$toggleTypeRushing, toggleLeaders)); this.domNodes.leaders.$toggleTypeDefense.click(this.getToggleButtonFunction(this.domNodes.leaders.$toggleType, this.domNodes.leaders.$data, this.domNodes.leaders.$toggleTypeDefense, toggleLeaders)); this.prepareColumns("columnsLeadersPassing", "columnSetLeadersPassing", "columnDefinitionLeadersPassing", "gameFullReportLeadersPassing"); this.prepareColumns("columnsLeadersReceiving", "columnSetLeadersReceiving", "columnDefinitionLeadersReceiving", "gameFullReportLeadersReceiving"); this.prepareColumns("columnsLeadersRushing", "columnSetLeadersRushing", "columnDefinitionLeadersRushing", "gameFullReportLeadersRushing"); this.prepareColumns("columnsLeadersDefense", "columnSetLeadersDefense", "columnDefinitionLeadersDefense", "gameFullReportLeadersDefense"); this.initializeTable("leadersPassingHome", this.options.columnsLeadersPassing, this.options.columnDefinitionLeadersPassing, this.domNodes.leaders.$dataPassingHome); this.initializeTable("leadersPassingAway", this.options.columnsLeadersPassing, this.options.columnDefinitionLeadersPassing, this.domNodes.leaders.$dataPassingAway); this.initializeTable("leadersReceivingHome", this.options.columnsLeadersReceiving, this.options.columnDefinitionLeadersReceiving, this.domNodes.leaders.$dataReceivingHome); this.initializeTable("leadersReceivingAway", this.options.columnsLeadersReceiving, this.options.columnDefinitionLeadersReceiving, this.domNodes.leaders.$dataReceivingAway); this.initializeTable("leadersRushingHome", this.options.columnsLeadersRushing, this.options.columnDefinitionLeadersRushing, this.domNodes.leaders.$dataRushingHome); this.initializeTable("leadersRushingAway", this.options.columnsLeadersRushing, this.options.columnDefinitionLeadersRushing, this.domNodes.leaders.$dataRushingAway); this.initializeTable("leadersDefenseHome", this.options.columnsLeadersDefense, this.options.columnDefinitionLeadersDefense, this.domNodes.leaders.$dataDefenseHome); this.initializeTable("leadersDefenseAway", this.options.columnsLeadersDefense, this.options.columnDefinitionLeadersDefense, this.domNodes.leaders.$dataDefenseAway); } if(drawGoals){ this.domNodes.goals={}; this.domNodes.goals.$goals=jQuery("<div/>").addClass("-hd-los-game-full-report-container -hd-los-game-full-report-goals").appendTo(this.$domNode); this.domNodes.goals.$headline=jQuery("<div/>").addClass("-hd-los-game-full-report-headline").html("<span>" + hockeydata["i18n"].translate("Goals") + "</span>").appendTo(this.domNodes.goals.$goals); this.domNodes.goals.$data=jQuery("<div/>").addClass("-hd-los-game-full-report-container-data -hd-los-game-full-report-goals-data").appendTo(this.domNodes.goals.$goals); if(!this.options.columnDefinitionGoals) this.options.columnDefinitionGoals=hockeydata["los"]["Configuration"].getTableColumnDefinition({ "sport": this.options.sport, "league": this.options.league, "type": "gameFullReportGoals" }); if(!this.options.columnsGoals) this.options.columnsGoals=hockeydata["los"]["Configuration"].getTableColumns({ "sport": this.options.sport, "league": this.options.league, "columnSet": this.options.columnSetGoals, "type": "gameFullReportGoals" }); else if(hockeydata["util"].isString(this.options.columnsGoals)) this.options.columnsGoals=this.options.columnsGoals.split(","); hockeydata["los"]["Configuration"].extendColumns(this.options.columnsGoals, this.options.additionalColumnsGoals); this.initializeTable("goals", this.options.columnsGoals, this.options.columnDefinitionGoals, this.domNodes.goals.$data); } if(drawPenalties){ this.domNodes.penalties={}; this.domNodes.penalties.$penalties=jQuery("<div/>").addClass("-hd-los-game-full-report-container -hd-los-game-full-report-penalties").appendTo(this.$domNode); this.domNodes.penalties.$headline=jQuery("<div/>").addClass("-hd-los-game-full-report-headline").html("<span>" + hockeydata["i18n"].translate("Penalties") + "</span>").appendTo(this.domNodes.penalties.$penalties); this.domNodes.penalties.$data=jQuery("<div/>").addClass("-hd-los-game-full-report-container-data -hd-los-game-full-report-penalties-data").appendTo(this.domNodes.penalties.$penalties); if(!this.options.columnDefinitionPenalties) this.options.columnDefinitionPenalties=hockeydata["los"]["Configuration"].getTableColumnDefinition({ "sport": this.options.sport, "league": this.options.league, "type": "gameFullReportPenalties" }); if(!this.options.columnsPenalties) this.options.columnsPenalties=hockeydata["los"]["Configuration"].getTableColumns({ "sport": this.options.sport, "league": this.options.league, "columnSet": this.options.columnSetPenalties, "type": "gameFullReportPenalties" }); else if(hockeydata["util"].isString(this.options.columnsPenalties)) this.options.columnsPenalties=this.options.columnsPenalties.split(","); this.initializeTable("penalties", this.options.columnsPenalties, this.options.columnDefinitionPenalties, this.domNodes.penalties.$data); } if(drawFieldPlayers){ this.domNodes.fieldPlayers={}; this.domNodes.fieldPlayers.$fieldPlayers=jQuery("<div/>").addClass("-hd-los-game-full-report-container -hd-los-game-full-report-field-players").appendTo(this.$domNode); this.domNodes.fieldPlayers.$headline=jQuery("<div/>").addClass("-hd-los-game-full-report-headline").html("<span>" + hockeydata["i18n"].translate("Field Players") + "</span>").appendTo(this.domNodes.fieldPlayers.$fieldPlayers); this.domNodes.fieldPlayers.$data=jQuery("<div/>").appendTo(this.domNodes.fieldPlayers.$fieldPlayers); this.domNodes.fieldPlayers.$dataBoxScoreHome=jQuery("<div/>").addClass("-hd-los-game-full-report-container-data -hd-los-game-full-report-field-players-data -hd-los-game-full-report-field-players-data-box-score").appendTo(this.domNodes.fieldPlayers.$data); this.domNodes.fieldPlayers.$dataBoxScoreAway=jQuery("<div/>").addClass("-hd-los-game-full-report-container-data -hd-los-game-full-report-field-players-data -hd-los-game-full-report-field-players-data-box-score").appendTo(this.domNodes.fieldPlayers.$data).hide(); this.domNodes.fieldPlayers.$dataLineupsHome=jQuery("<div/>").addClass("-hd-los-game-full-report-container-data -hd-los-game-full-report-field-players-data -hd-los-game-full-report-field-players-data-lineups").appendTo(this.domNodes.fieldPlayers.$data).hide(); this.domNodes.fieldPlayers.$dataLineupsAway=jQuery("<div/>").addClass("-hd-los-game-full-report-container-data -hd-los-game-full-report-field-players-data -hd-los-game-full-report-field-players-data-lineups").appendTo(this.domNodes.fieldPlayers.$data).hide(); this.domNodes.fieldPlayers.$toggleTeam=jQuery("<div/>").addClass("-hd-button-group").prependTo(this.domNodes.fieldPlayers.$headline); this.domNodes.fieldPlayers.$toggleTeamHome=jQuery("<button type='button'/>").addClass("-hd-button -hd-button-active").html(data.gameData.homeTeamShortname || hockeydata["i18n"].translate("Home")).appendTo(this.domNodes.fieldPlayers.$toggleTeam); this.domNodes.fieldPlayers.$toggleTeamAway=jQuery("<button type='button'/>").addClass("-hd-button").html(data.gameData.awayTeamShortname || hockeydata["i18n"].translate("Away")).appendTo(this.domNodes.fieldPlayers.$toggleTeam); this.domNodes.fieldPlayers.$toggleType=jQuery("<div/>").addClass("-hd-button-group").prependTo(this.domNodes.fieldPlayers.$headline); this.domNodes.fieldPlayers.$toggleTypeBoxScore=jQuery("<button type='button'/>").addClass("-hd-button -hd-button-active").html(hockeydata["i18n"].translate("Boxscore")).appendTo(this.domNodes.fieldPlayers.$toggleType); this.domNodes.fieldPlayers.$toggleTypeLineups=jQuery("<button type='button'/>").addClass("-hd-button").html(hockeydata["i18n"].translate("Lineups")).appendTo(this.domNodes.fieldPlayers.$toggleType); var toggleFieldPlayers=function(){ var team=self.domNodes.fieldPlayers.$toggleTeamHome.hasClass("-hd-button-active") ? "Home" : "Away"; var type=self.domNodes.fieldPlayers.$toggleTypeBoxScore.hasClass("-hd-button-active") ? "BoxScore" : "Lineups"; self.domNodes.fieldPlayers["$data" + type + team].show(); }; this.domNodes.fieldPlayers.$toggleTeamHome.click(this.getToggleButtonFunction(this.domNodes.fieldPlayers.$toggleTeam, this.domNodes.fieldPlayers.$data, this.domNodes.fieldPlayers.$toggleTeamHome, toggleFieldPlayers)); this.domNodes.fieldPlayers.$toggleTeamAway.click(this.getToggleButtonFunction(this.domNodes.fieldPlayers.$toggleTeam, this.domNodes.fieldPlayers.$data, this.domNodes.fieldPlayers.$toggleTeamAway, toggleFieldPlayers)); this.domNodes.fieldPlayers.$toggleTypeBoxScore.click(this.getToggleButtonFunction(this.domNodes.fieldPlayers.$toggleType, this.domNodes.fieldPlayers.$data, this.domNodes.fieldPlayers.$toggleTypeBoxScore, toggleFieldPlayers)); this.domNodes.fieldPlayers.$toggleTypeLineups.click(this.getToggleButtonFunction(this.domNodes.fieldPlayers.$toggleType, this.domNodes.fieldPlayers.$data, this.domNodes.fieldPlayers.$toggleTypeLineups, toggleFieldPlayers)); if(!this.options.columnDefinitionFieldPlayers) this.options.columnDefinitionFieldPlayers=hockeydata["los"]["Configuration"].getTableColumnDefinition({ "sport": this.options.sport, "league": this.options.league, "type": "gameFullReportFieldPlayers" }); if(!this.options.columnsFieldPlayers) this.options.columnsFieldPlayers=hockeydata["los"]["Configuration"].getTableColumns({ "sport": this.options.sport, "league": this.options.league, "columnSet": this.options.columnSetFieldPlayers, "type": "gameFullReportFieldPlayers" }); else if(hockeydata["util"].isString(this.options.columnsFieldPlayers)) this.options.columnsFieldPlayers=this.options.columnsFieldPlayers.split(","); hockeydata["los"]["Configuration"].extendColumns(this.options.columnsFieldPlayers, this.options.additionalColumnsFieldPlayers); this.initializeTable("fieldPlayersHome", this.options.columnsFieldPlayers, this.options.columnDefinitionFieldPlayers, this.domNodes.fieldPlayers.$dataBoxScoreHome); this.initializeTable("fieldPlayersAway", this.options.columnsFieldPlayers, this.options.columnDefinitionFieldPlayers, this.domNodes.fieldPlayers.$dataBoxScoreAway); } if(drawGoalKeepers){ this.domNodes.goalKeepers={}; this.domNodes.goalKeepers.$goalKeepers=jQuery("<div/>").addClass("-hd-los-game-full-report-container -hd-los-game-full-report-goal-keepers").appendTo(this.$domNode); this.domNodes.goalKeepers.$headline=jQuery("<div/>").addClass("-hd-los-game-full-report-headline").html("<span>" + hockeydata["i18n"].translate("Goalkeepers") + "</span>").appendTo(this.domNodes.goalKeepers.$goalKeepers); this.domNodes.goalKeepers.$data=jQuery("<div/>").appendTo(this.domNodes.goalKeepers.$goalKeepers); this.domNodes.goalKeepers.$dataHome=jQuery("<div/>").addClass("-hd-los-game-full-report-container-data -hd-los-game-full-report-goal-keepers-data").appendTo(this.domNodes.goalKeepers.$data); this.domNodes.goalKeepers.$dataAway=jQuery("<div/>").addClass("-hd-los-game-full-report-container-data -hd-los-game-full-report-goal-keepers-data").appendTo(this.domNodes.goalKeepers.$data).hide(); this.domNodes.goalKeepers.$toggleTeam=jQuery("<div/>").addClass("-hd-button-group").prependTo(this.domNodes.goalKeepers.$headline); this.domNodes.goalKeepers.$toggleTeamHome=jQuery("<button type='button'/>").addClass("-hd-button -hd-button-active").html(data.gameData.homeTeamShortname || hockeydata["i18n"].translate("Home")).appendTo(this.domNodes.goalKeepers.$toggleTeam); this.domNodes.goalKeepers.$toggleTeamAway=jQuery("<button type='button'/>").addClass("-hd-button").html(data.gameData.awayTeamShortname || hockeydata["i18n"].translate("Away")).appendTo(this.domNodes.goalKeepers.$toggleTeam); this.domNodes.goalKeepers.$toggleTeamHome.click(this.getToggleButtonFunction(this.domNodes.goalKeepers.$toggleTeam, this.domNodes.goalKeepers.$data, this.domNodes.goalKeepers.$toggleTeamHome, this.domNodes.goalKeepers.$dataHome)); this.domNodes.goalKeepers.$toggleTeamAway.click(this.getToggleButtonFunction(this.domNodes.goalKeepers.$toggleTeam, this.domNodes.goalKeepers.$data, this.domNodes.goalKeepers.$toggleTeamAway, this.domNodes.goalKeepers.$dataAway)); if(!this.options.columnDefinitionGoalKeepers) this.options.columnDefinitionGoalKeepers=hockeydata["los"]["Configuration"].getTableColumnDefinition({ "sport": this.options.sport, "league": this.options.league, "type": "gameFullReportGoalKeepers" }); if(!this.options.columnsGoalKeepers) this.options.columnsGoalKeepers=hockeydata["los"]["Configuration"].getTableColumns({ "sport": this.options.sport, "league": this.options.league, "columnSet": this.options.columnSetGoalKeepers, "type": "gameFullReportGoalKeepers" }); else if(hockeydata["util"].isString(this.options.columnsGoalKeepers)) this.options.columnsGoalKeepers=this.options.columnsGoalKeepers.split(","); hockeydata["los"]["Configuration"].extendColumns(this.options.columnsGoalKeepers, this.options.additionalColumnsGoalKeepers); this.initializeTable("goalKeepersHome", this.options.columnsGoalKeepers, this.options.columnDefinitionGoalKeepers, this.domNodes.goalKeepers.$dataHome); this.initializeTable("goalKeepersAway", this.options.columnsGoalKeepers, this.options.columnDefinitionGoalKeepers, this.domNodes.goalKeepers.$dataAway); } if(drawGoalKeeperChanges){ this.domNodes.goalKeeperChanges={}; this.domNodes.goalKeeperChanges.$goalKeeperChanges=jQuery("<div/>").addClass("-hd-los-game-full-report-container -hd-los-game-full-report-goal-keeper-changes").appendTo(this.$domNode); this.domNodes.goalKeeperChanges.$headline=jQuery("<div/>").addClass("-hd-los-game-full-report-headline").html("<span>" + hockeydata["i18n"].translate("Goalkeeper Changes") + "</span>").appendTo(this.domNodes.goalKeeperChanges.$goalKeeperChanges); this.domNodes.goalKeeperChanges.$data=jQuery("<div/>").addClass("-hd-los-game-full-report-container-data -hd-los-game-full-report-goal-keeper-changes-data").appendTo(this.domNodes.goalKeeperChanges.$goalKeeperChanges); if(!this.options.columnDefinitionGoalKeeperChanges) this.options.columnDefinitionGoalKeeperChanges=hockeydata["los"]["Configuration"].getTableColumnDefinition({ "sport": this.options.sport, "league": this.options.league, "type": "gameFullReportGoalKeeperChanges" }); if(!this.options.columnsGoalKeeperChanges) this.options.columnsGoalKeeperChanges=hockeydata["los"]["Configuration"].getTableColumns({ "sport": this.options.sport, "league": this.options.league, "columnSet": this.options.columnSetGoalKeeperChanges, "type": "gameFullReportGoalKeeperChanges" }); else if(hockeydata["util"].isString(this.options.columnsGoalKeeperChanges)) this.options.columnsGoalKeeperChanges=this.options.columnsGoalKeeperChanges.split(","); this.initializeTable("goalKeeperChanges", this.options.columnsGoalKeeperChanges, this.options.columnDefinitionGoalKeeperChanges, this.domNodes.goalKeeperChanges.$data); } if(drawPlayByPlay){ this.domNodes.playByPlay={}; this.domNodes.playByPlay.$playByPlay=jQuery("<div/>").addClass("-hd-los-game-full-report-container -hd-los-game-full-report-play-by-play").appendTo(this.$domNode); this.domNodes.playByPlay.$headline=jQuery("<div/>").addClass("-hd-los-game-full-report-headline").html("<span>" + hockeydata["i18n"].translate("Play by Play") + "</span>").appendTo(this.domNodes.playByPlay.$playByPlay); this.domNodes.playByPlay.$data=jQuery("<div/>").addClass("-hd-los-game-full-report-container-data -hd-los-game-full-report-play-by-play-data").appendTo(this.domNodes.playByPlay.$playByPlay); if(!this.options.columnDefinitionPlayByPlay) this.options.columnDefinitionPlayByPlay=hockeydata["los"]["Configuration"].getTableColumnDefinition({ "sport": this.options.sport, "league": this.options.league, "type": "gameFullReportPlayByPlay" }); if(!this.options.columnsPlayByPlay) this.options.columnsPlayByPlay=hockeydata["los"]["Configuration"].getTableColumns({ "sport": this.options.sport, "league": this.options.league, "columnSet": this.options.columnSetPlayByPlay, "type": "gameFullReportPlayByPlay" }); else if(hockeydata["util"].isString(this.options.columnsPlayByPlay)) this.options.columnsPlayByPlay=this.options.columnsPlayByPlay.split(","); this.initializeTable("playByPlay", this.options.columnsPlayByPlay, this.options.columnDefinitionPlayByPlay, this.domNodes.playByPlay.$data, true); } if(drawRosters){ this.domNodes.rosters={}; this.domNodes.rosters.$rosters=jQuery("<div/>").addClass("-hd-los-game-full-report-container -hd-los-game-full-report-rosters").appendTo(this.$domNode); this.domNodes.rosters.$headline=jQuery("<div/>").addClass("-hd-los-game-full-report-headline").html("<span>" + hockeydata["i18n"].translate("Roster") + "</span>").appendTo(this.domNodes.rosters.$rosters); this.domNodes.rosters.$data=jQuery("<div/>").appendTo(this.domNodes.rosters.$rosters); this.domNodes.rosters.$dataHome=jQuery("<div/>").addClass("-hd-los-game-full-report-container-data -hd-los-game-full-report-goal-keepers-data").appendTo(this.domNodes.rosters.$data); this.domNodes.rosters.$dataAway=jQuery("<div/>").addClass("-hd-los-game-full-report-container-data -hd-los-game-full-report-goal-keepers-data").appendTo(this.domNodes.rosters.$data).hide(); this.domNodes.rosters.$toggleTeam=jQuery("<div/>").addClass("-hd-button-group").prependTo(this.domNodes.rosters.$headline); this.domNodes.rosters.$toggleTeamHome=jQuery("<button type='button'/>").addClass("-hd-button -hd-button-active").html(data.gameData.homeTeamShortname || hockeydata["i18n"].translate("Home")).appendTo(this.domNodes.rosters.$toggleTeam); this.domNodes.rosters.$toggleTeamAway=jQuery("<button type='button'/>").addClass("-hd-button").html(data.gameData.awayTeamShortname || hockeydata["i18n"].translate("Away")).appendTo(this.domNodes.rosters.$toggleTeam); this.domNodes.rosters.$toggleTeamHome.click(this.getToggleButtonFunction(this.domNodes.rosters.$toggleTeam, this.domNodes.rosters.$data, this.domNodes.rosters.$toggleTeamHome, this.domNodes.rosters.$dataHome)); this.domNodes.rosters.$toggleTeamAway.click(this.getToggleButtonFunction(this.domNodes.rosters.$toggleTeam, this.domNodes.rosters.$data, this.domNodes.rosters.$toggleTeamAway, this.domNodes.rosters.$dataAway)); if(!this.options.columnDefinitionRoster) this.options.columnDefinitionRoster=hockeydata["los"]["Configuration"].getTableColumnDefinition({ "sport": this.options.sport, "league": this.options.league, "type": "gameFullReportRoster" }); if(!this.options.columnsRoster) this.options.columnsRoster=hockeydata["los"]["Configuration"].getTableColumns({ "sport": this.options.sport, "league": this.options.league, "columnSet": this.options.columnSetRoster, "type": "gameFullReportRoster" }); else if(hockeydata["util"].isString(this.options.columnsRoster)) this.options.columnsRoster=this.options.columnsRoster.split(","); this.initializeTable("rosterHome", this.options.columnsRoster, this.options.columnDefinitionRoster, this.domNodes.rosters.$dataHome); this.initializeTable("rosterAway", this.options.columnsRoster, this.options.columnDefinitionRoster, this.domNodes.rosters.$dataAway); } if(this.isPreGameReport){ this.domNodes.preGameReport={ lastGames: {}, teamStats: { head2head: {} }, starPlayers: {} }; this.domNodes.preGameReport.$preGameReport=jQuery("<div/>").addClass("-hd-los-game-full-report-pre-game-report-container").appendTo(this.$domNode); if(data.homeLastGames || data.awayLastGames){ drawPreGameReportLastGames=true; this.domNodes.preGameReport.lastGames.$lastGames=jQuery("<div/>").addClass("-hd-los-game-full-report-container -hd-los-game-full-report-pre-game-report-last-games").appendTo(this.domNodes.preGameReport.$preGameReport); this.domNodes.preGameReport.lastGames.$headline=jQuery("<div/>").addClass("-hd-los-game-full-report-headline").html("<span>" + hockeydata["i18n"].translate("Last Games") + "</span>").appendTo(this.domNodes.preGameReport.lastGames.$lastGames); this.domNodes.preGameReport.lastGames.$data=jQuery("<div/>").addClass("-hd-los-game-full-report-container-data -hd-los-game-full-report-pre-game-report-last-games-data").appendTo(this.domNodes.preGameReport.lastGames.$lastGames); this.domNodes.preGameReport.lastGames.$roadTo=jQuery("<div/>").addClass("-hd-los-game-full-report-pre-game-report-last-games-road-to").appendTo(this.domNodes.preGameReport.lastGames.$data); this.domNodes.preGameReport.lastGames.$roadToHome=jQuery("<div/>").addClass("-hd-los-game-full-report-pre-game-report-last-games-road-to-results -hd-los-game-full-report-pre-game-report-last-games-road-to-home").appendTo(this.domNodes.preGameReport.lastGames.$roadTo); this.domNodes.preGameReport.lastGames.$roadToMeta=jQuery("<div/>").addClass("-hd-los-game-full-report-pre-game-report-last-games-road-to-meta").appendTo(this.domNodes.preGameReport.lastGames.$roadTo); this.domNodes.preGameReport.lastGames.$roadToAway=jQuery("<div/>").addClass("-hd-los-game-full-report-pre-game-report-last-games-road-to-results -hd-los-game-full-report-pre-game-report-last-games-road-to-away").appendTo(this.domNodes.preGameReport.lastGames.$roadTo); this.domNodes.preGameReport.lastGames.$gameCompare=jQuery("<div/>").addClass("-hd-los-game-full-report-pre-game-report-last-games-game-compare").appendTo(this.domNodes.preGameReport.lastGames.$data); if(jQuery.isPlainObject(data.gameData.scheduledDate) && ("formattedShort" in data.gameData.scheduledDate)) this.domNodes.preGameReport.lastGames.$roadToMeta.append(data.gameData.scheduledDate["formattedShort"]); if(!this.options.statsCompareRowDefinitionPreGameReportLastGames) this.options.statsCompareRowDefinitionPreGameReportLastGames=hockeydata.los.Configuration.getStatsCompareRowDefinition(this.options.sport, "preGameReportLastGames"); } if((data.homeTeamStatsSeason && data.awayTeamStatsSeason) || (data.homeTeamStatsHead2Head && data.awayTeamStatsHead2Head)){ this.domNodes.preGameReport.teamStats.$teamStats=jQuery("<div/>").addClass("-hd-los-game-full-report-container -hd-los-game-full-report-pre-game-report-team-stats").appendTo(this.domNodes.preGameReport.$preGameReport); this.domNodes.preGameReport.teamStats.$headline=jQuery("<div/>").addClass("-hd-los-game-full-report-headline").html("<span>" + hockeydata["i18n"].translate("Team Stats Comparison") + "</span>").appendTo(this.domNodes.preGameReport.teamStats.$teamStats); this.domNodes.preGameReport.teamStats.$data=jQuery("<div/>").addClass("-hd-los-game-full-report-container-data -hd-los-game-full-report-pre-game-report-team-stats-data").appendTo(this.domNodes.preGameReport.teamStats.$teamStats); this.domNodes.preGameReport.teamStats.$season=jQuery("<div/>").addClass("-hd-los-game-full-report-pre-game-report-team-stats-season"); this.domNodes.preGameReport.teamStats.$head2head=jQuery("<div/>").addClass("-hd-los-game-full-report-pre-game-report-team-stats-head2head"); this.domNodes.preGameReport.teamStats.head2head.$statsComparison=jQuery("<div/>").addClass("-hd-los-game-full-report-pre-game-report-team-stats-head2head-stats-comparison").appendTo(this.domNodes.preGameReport.teamStats.$head2head); this.domNodes.preGameReport.teamStats.head2head.$games=jQuery("<div/>").addClass("-hd-los-game-full-report-pre-game-report-team-stats-head2head-games").appendTo(this.domNodes.preGameReport.teamStats.$head2head); this.domNodes.preGameReport.teamStats.head2head.$gamesHeader=jQuery("<div/>").addClass("-hd-los-game-full-report-pre-game-report-team-stats-head2head-games-header").appendTo(this.domNodes.preGameReport.teamStats.head2head.$games).append(hockeydata["i18n"].translate("Head 2 Head Games")); this.domNodes.preGameReport.teamStats.head2head.$gamesSchedule=jQuery("<div/>").addClass("-hd-los-game-full-report-pre-game-report-team-stats-head2head-games-schedule").appendTo(this.domNodes.preGameReport.teamStats.head2head.$games); if(!this.options.statsCompareRowDefinitionPreGameReportTeamStatsSeason) this.options.statsCompareRowDefinitionPreGameReportTeamStatsSeason=hockeydata.los.Configuration.getStatsCompareRowDefinition(this.options.sport, "preGameReportTeamStatsSeason"); if(!this.options.statsCompareRowDefinitionPreGameReportTeamStatsHead2Head) this.options.statsCompareRowDefinitionPreGameReportTeamStatsHead2Head=hockeydata.los.Configuration.getStatsCompareRowDefinition(this.options.sport, "preGameReportTeamStatsHead2Head"); if(data.homeTeamStatsSeason && data.awayTeamStatsSeason && data.homeTeamStatsHead2Head && data.awayTeamStatsHead2Head){ drawPreGameReportTeamStatsSeason=true; drawPreGameReportTeamStatsHead2Head=true; this.domNodes.preGameReport.teamStats.$tabs=jQuery("<div/>").addClass("-hd-los-game-full-report-stats-tabs").appendTo(this.domNodes.preGameReport.teamStats.$data); var preGameReportTeamStatsTab=[ { "button": { "label": hockeydata.i18n.translate("Season") }, "content": this.domNodes.preGameReport.teamStats.$season }, { "button": { "label": hockeydata.i18n.translate("Head 2 Head") }, "content": this.domNodes.preGameReport.teamStats.$head2head } ]; new hockeydata.util.Tabs(jQuery.extend({}, self.options, { "$domNode": this.domNodes.preGameReport.teamStats.$tabs, "tabs": preGameReportTeamStatsTab })); } else if(data.homeTeamStatsSeason && data.awayTeamStatsSeason){ drawPreGameReportTeamStatsSeason=true; this.domNodes.preGameReport.teamStats.$season.appendTo(this.domNodes.preGameReport.teamStats.$data); } else { drawPreGameReportTeamStatsHead2Head=true; this.domNodes.preGameReport.teamStats.$head2head.appendTo(this.domNodes.preGameReport.teamStats.$data); } if(drawPreGameReportTeamStatsHead2Head){ if(!this.options.columnDefinitionPreGameReportTeamStatsHead2HeadGames) this.options.columnDefinitionPreGameReportTeamStatsHead2HeadGames=hockeydata["los"]["Configuration"].getTableColumnDefinition({ "sport": this.options.sport, "league": this.options.league, "type": "gameFullReportPreGameReportTeamStatsHead2HeadGames" }); if(!this.options.columnsPreGameReportTeamStatsHead2HeadGames) this.options.columnsPreGameReportTeamStatsHead2HeadGames=hockeydata["los"]["Configuration"].getTableColumns({ "sport": this.options.sport, "league": this.options.league, "columnSet": this.options.columnSetPreGameReportTeamStatsHead2HeadGames, "type": "gameFullReportPreGameReportTeamStatsHead2HeadGames" }); else if(hockeydata["util"].isString(this.options.columnsPreGameReportTeamStatsHead2HeadGames)) this.options.columnsPreGameReportTeamStatsHead2HeadGames=this.options.columnsPreGameReportTeamStatsHead2HeadGames.split(","); hockeydata["los"]["Configuration"].extendColumns(this.options.columnsPreGameReportTeamStatsHead2HeadGames, this.options.additionalColumnsPreGameReportTeamStatsHead2HeadGames); this.initializeTable("preGameReportTeamStatsHead2HeadGames", this.options.columnsPreGameReportTeamStatsHead2HeadGames, this.options.columnDefinitionPreGameReportTeamStatsHead2HeadGames, this.domNodes.preGameReport.teamStats.head2head.$gamesSchedule); } } if(data.homeStarPlayers && data.awayStarPlayers){ drawPreGameReportStarPlayers=true; if(!this.options.playerCompareRowDefinitionPreGameReportTopscorers) this.options.playerCompareRowDefinitionPreGameReportTopscorers=hockeydata.los.Configuration.getPlayerCompareRowDefinition(this.options.sport, "preGameReportTopscorers"); if(!this.options.playerCompareRowDefinitionPreGameReportGameWinners) this.options.playerCompareRowDefinitionPreGameReportGameWinners=hockeydata.los.Configuration.getPlayerCompareRowDefinition(this.options.sport, "preGameReportGameWinners"); if(!this.options.playerCompareRowDefinitionPreGameReportPowerplay) this.options.playerCompareRowDefinitionPreGameReportPowerplay=hockeydata.los.Configuration.getPlayerCompareRowDefinition(this.options.sport, "preGameReportPowerplay"); if(!this.options.playerCompareRowDefinitionPreGameReportBadBoys) this.options.playerCompareRowDefinitionPreGameReportBadBoys=hockeydata.los.Configuration.getPlayerCompareRowDefinition(this.options.sport, "preGameReportBadBoys"); if(!this.options.playerCompareRowDefinitionPreGameReportGoalkeepers) this.options.playerCompareRowDefinitionPreGameReportGoalkeepers=hockeydata.los.Configuration.getPlayerCompareRowDefinition(this.options.sport, "preGameReportGoalkeepers"); this.domNodes.preGameReport.starPlayers.$starPlayers=jQuery("<div/>").addClass("-hd-los-game-full-report-container -hd-los-game-full-report-pre-game-report-star-players").appendTo(this.domNodes.preGameReport.$preGameReport); this.domNodes.preGameReport.starPlayers.$headline=jQuery("<div/>").addClass("-hd-los-game-full-report-headline").html("<span>" + hockeydata["i18n"].translate("Players") + "</span>").appendTo(this.domNodes.preGameReport.starPlayers.$starPlayers); this.domNodes.preGameReport.starPlayers.$data=jQuery("<div/>").addClass("-hd-los-game-full-report-container-data -hd-los-game-full-report-pre-game-report-star-players-data").appendTo(this.domNodes.preGameReport.starPlayers.$starPlayers); this.domNodes.preGameReport.starPlayers.$playerCompare=jQuery("<div/>").addClass("-hd-los-game-full-report-pre-game-report-star-players-player-compare").appendTo(this.domNodes.preGameReport.starPlayers.$data); } } if(this.options.tabbedStats){ var statsTabs=[]; if(self.options.timeOnIce) statsTabs.push({ "button": { "label": hockeydata["i18n"].translate("Time on Ice") }, "content": this.domNodes.timeOnIce.$timeOnIce }); if(drawShotChart) statsTabs.push({ "button": { "label": hockeydata["i18n"].translate("Shot Chart") }, "content": this.domNodes.shotChart.$shotChart }); if(drawScores) statsTabs.push({ "button": { "label": hockeydata["i18n"].translate("Scores") }, "content": this.domNodes.scores.$scores }); if(drawTeamStats) statsTabs.push({ "button": { "label": hockeydata["i18n"].translate("Team Stats") }, "content": this.domNodes.teamStats.$teamStats }); if(drawLeaders) statsTabs.push({ "button": { "label": hockeydata["i18n"].translate("Leaders") }, "content": this.domNodes.leaders.$leaders }); if(drawGoals) statsTabs.push({ "button": { "label": hockeydata["i18n"].translate("Goals") }, "content": this.domNodes.goals.$goals }); if(drawPenalties) statsTabs.push({ "button": { "label": hockeydata["i18n"].translate("Penalties") }, "content": this.domNodes.penalties.$penalties }); if(drawFieldPlayers) statsTabs.push({ "button": { "label": hockeydata["i18n"].translate("Field Players") }, "content": this.domNodes.fieldPlayers.$fieldPlayers }); if(drawGoalKeepers) statsTabs.push({ "button": { "label": hockeydata["i18n"].translate("Goalkeepers") }, "content": this.domNodes.goalKeepers.$goalKeepers }); if(drawGoalKeeperChanges) statsTabs.push({ "button": { "label": hockeydata["i18n"].translate("Goalkeeper Changes") }, "content": this.domNodes.goalKeeperChanges.$goalKeeperChanges }); if(drawPlayByPlay) statsTabs.push({ "button": { "label": hockeydata["i18n"].translate("Play by Play") }, "content": this.domNodes.playByPlay.$playByPlay }); if(drawRosters) statsTabs.push({ "button": { "label": hockeydata["i18n"].translate("Roster") }, "content": this.domNodes.rosters.$rosters }); if(drawPreGameReportLastGames) statsTabs.push({ "button": { "label": hockeydata["i18n"].translate("Last Games") }, "content": this.domNodes.preGameReport.lastGames.$lastGames }); if(drawPreGameReportTeamStatsSeason || drawPreGameReportTeamStatsHead2Head) statsTabs.push({ "button": { "label": hockeydata["i18n"].translate("Team Stats") }, "content": this.domNodes.preGameReport.teamStats.$teamStats }); if(drawPreGameReportStarPlayers) statsTabs.push({ "button": { "label": hockeydata["i18n"].translate("Players") }, "content": this.domNodes.preGameReport.starPlayers.$starPlayers }); this.domNodes.$statsTabs=jQuery("<div/>").addClass("-hd-los-game-full-report-stats-tabs").appendTo(this.$domNode); new hockeydata["util"]["Tabs"](jQuery.extend({}, self.options, { "$domNode": this.domNodes.$statsTabs, "tabs": statsTabs })); } } var scoreDivider=""; if(data.gameData["isShootOut"]) scoreDivider="<span class='-hd-los-game-full-report-shootout'>" + hockeydata["i18n"].translate("SO", "Shootout") + "</span>"; else if(data.gameData["isOvertime"]) scoreDivider="<span class='-hd-los-game-full-report-overtime'>" + hockeydata["i18n"].translate("OT", "Overtime") + "</span>"; if(this.options.showGameState){ if(self.gameStatus===0) self.domNodes.gameInfo.$gameState.html(hockeydata["i18n"].translate("SCHEDULED")); else if(self.gameStatus===1){ 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-full-report-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-full-report-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-full-report-period-bar-label").html(bar["shortName"]).appendTo($bar); if(bar["isActive"]) $bar.addClass("-hd-los-game-full-report-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(self.gameStatus >= 2) self.domNodes.gameInfo.$gameState.html(hockeydata["i18n"].translate("FINAL")); } data.gameData["gameExtendedStatus"] ? self.domNodes.gameInfo.$gameStateExtended.show().html("<span class='-hd-los-game-full-report-game-state-extended-label -hd-los-game-full-report-game-state-extended-label-" + data.gameData["gameExtendedStatus"] + "'>" + hockeydata["los"]["Configuration"].getExtendedStateLabel(data.gameData["gameExtendedStatus"]) + "</span>" + (data.gameData["gameExtendedStatusInfoText"] ? ("<span class='-hd-los-game-full-report-game-state-extended-info-text'>(" + data.gameData["gameExtendedStatusInfoText"] + ")</span>") : "")) : self.domNodes.gameInfo.$gameStateExtended.hide(); self.domNodes.gameInfo.$homeTeamName.html(data.gameData.homeTeamShortname || ""); self.domNodes.gameInfo.$awayTeamName.html(data.gameData.awayTeamShortname || ""); self.domNodes.gameInfo.$scoreHome.html(data.gameData.gameStatus && ("homeTeamScore" in data.gameData) ? data.gameData.homeTeamScore : "-"); self.domNodes.gameInfo.$scoreDivider.html(scoreDivider); self.domNodes.gameInfo.$scoreAway.html(data.gameData.gameStatus && ("awayTeamScore" in data.gameData) ? data.gameData.awayTeamScore : "-"); if(self.options.showYouTubeLink){ self.domNodes.gameInfo.$youTubeLink.empty(); if(data.gameData.youTubeLink){ var $youTubeLink=jQuery("<a/>"); $youTubeLink.attr("href", "http://www.youtube.com/watch?v=" + data.gameData.youTubeLink); $youTubeLink.attr("target", "_blank"); $youTubeLink.attr("title", hockeydata["i18n"].translate("Watch on YouTube")); $youTubeLink.addClass("-hd-youtube-link"); $youTubeLink.appendTo(self.domNodes.gameInfo.$youTubeLink); } } if(hockeydata["util"].isArray(data.gameData.periodStats) && data.gameData.periodStats.length){ self.domNodes.gameInfo.$periodStats.empty(); var $periodStatsHeader=jQuery("<div/>").addClass("-hd-los-game-full-report-period-stats-header").appendTo(self.domNodes.gameInfo.$periodStats); var $periodStatsScore=jQuery("<div/>").addClass("-hd-los-game-full-report-period-stats-score").appendTo(self.domNodes.gameInfo.$periodStats); var $periodStatsShotsOnGoal=jQuery("<div/>").addClass("-hd-los-game-full-report-period-stats-additional").appendTo(self.domNodes.gameInfo.$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); } } self.domNodes.gameInfo.$gameStreams.empty(); if(data.gameData.streams && data.gameData.streams.length){ self.domNodes.gameInfo.$gameStreams.show(); for(i=0; i < data.gameData.streams.length; i++){ var gameStream=hockeydata.util.getGameStreamButton(data.gameData.streams[i]); gameStream && self.domNodes.gameInfo.$gameStreams.append(gameStream); } } for(i=0; i < gameFacts.length; i++) self.domNodes.gameFacts[gameFacts[i].key].html(gameFacts[i].value); if(self.options.timeOnIce && data.homeFieldPlayers && data.awayFieldPlayers){ if(self.gameStatus===1) self.domNodes.timeOnIce.$timeOnIce.show(); else self.domNodes.timeOnIce.$timeOnIce.hide(); if(!self.timeOnIceRowsSet){ self.timeOnIceRowsSet=true; var timeOnIceTableRows=[]; for(i=0; (i < data.homeFieldPlayers.length) || (i < data.awayFieldPlayers.length); i++){ var homeFieldPlayer=(i < data.homeFieldPlayers.length ? data.homeFieldPlayers[i] : null); var awayFieldPlayer=(i < data.awayFieldPlayers.length ? data.awayFieldPlayers[i] : null); timeOnIceTableRows.push({ "homePlayerId": homeFieldPlayer ? homeFieldPlayer.id : null, "homePlayerJerseyNr": homeFieldPlayer ? homeFieldPlayer.playerJerseyNr : null, "homePlayerPosition": homeFieldPlayer ? homeFieldPlayer.position : null, "homePlayerLastname": homeFieldPlayer ? homeFieldPlayer.playerLastname : null, "homePlayerFirstname": homeFieldPlayer ? homeFieldPlayer.playerFirstname : null, "homePlayerIceTime": 0, "homePlayerShifts": 0, "awayPlayerId": awayFieldPlayer ? awayFieldPlayer.id : null, "awayPlayerJerseyNr": awayFieldPlayer ? awayFieldPlayer.playerJerseyNr : null, "awayPlayerPosition": awayFieldPlayer ? awayFieldPlayer.position : null, "awayPlayerLastname": awayFieldPlayer ? awayFieldPlayer.playerLastname : null, "awayPlayerFirstname": awayFieldPlayer ? awayFieldPlayer.playerFirstname : null, "awayPlayerIceTime": 0, "awayPlayerShifts": 0 }); } self.tables.timeOnIce.setRows(self.getRows(timeOnIceTableRows, self.options.columnsTimeOnIce, self.options.columnDefinitionTimeOnIce)); } } if(drawShotChart) self.updateShotChart(); 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-full-report-scores-row-period-change" }); } })); } if(drawTeamStats){ 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-full-report-team-stats-row -hd-los-game-full-report-team-" + rowName }; var homeValue=(rowName in data.homeTeamStats) ? data.homeTeamStats[rowName] : null; var awayValue=(rowName in data.awayTeamStats) ? data.awayTeamStats[rowName] : null; if(("show" in rowDefinition) && jQuery.isFunction(rowDefinition.show) && rowDefinition.show(data)===false) continue; 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, this.options); awayValue=rowDefinition.fn(data.awayTeamStats, this.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); } this.tables.teamStats.setRows(teamStatsTableRows); } if(drawLeaders){ self.tables["leadersPassingHome"].setRows(self.getRows(data.homePassingLeaders, self.options.columnsLeadersPassing, self.options.columnDefinitionLeadersPassing, self.options.playerLink)); self.tables["leadersPassingAway"].setRows(self.getRows(data.awayPassingLeaders, self.options.columnsLeadersPassing, self.options.columnDefinitionLeadersPassing, self.options.playerLink)); self.tables["leadersReceivingHome"].setRows(self.getRows(data.homeReceivingLeaders, self.options.columnsLeadersReceiving, self.options.columnDefinitionLeadersReceiving, self.options.playerLink)); self.tables["leadersReceivingAway"].setRows(self.getRows(data.awayReceivingLeaders, self.options.columnsLeadersReceiving, self.options.columnDefinitionLeadersReceiving, self.options.playerLink)); self.tables["leadersRushingHome"].setRows(self.getRows(data.homeRushingLeaders, self.options.columnsLeadersRushing, self.options.columnDefinitionLeadersRushing, self.options.playerLink)); self.tables["leadersRushingAway"].setRows(self.getRows(data.awayRushingLeaders, self.options.columnsLeadersRushing, self.options.columnDefinitionLeadersRushing, self.options.playerLink)); self.tables["leadersDefenseHome"].setRows(self.getRows(data.homeDefensiveLeaders, self.options.columnsLeadersDefense, self.options.columnDefinitionLeadersDefense, self.options.playerLink)); self.tables["leadersDefenseAway"].setRows(self.getRows(data.awayDefensiveLeaders, self.options.columnsLeadersDefense, self.options.columnDefinitionLeadersDefense, self.options.playerLink)); } if(drawGoals){ var goals=[]; for(i=0; i < data.homeGoals.length; i++){ data.homeGoals[i].teamShortname=data.gameData.homeTeamShortname || ""; goals.push(data.homeGoals[i]); } for(i=0; i < data.awayGoals.length; i++){ data.awayGoals[i].teamShortname=data.gameData.awayTeamShortname || ""; goals.push(data.awayGoals[i]); } 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=[]; for(i=0; i < data.homePenalties.length; i++){ data.homePenalties[i].teamShortname=data.gameData.homeTeamShortname || ""; data.homePenalties[i].isAway=0; penalties.push(data.homePenalties[i]); } for(i=0; i < data.awayPenalties.length; i++){ data.awayPenalties[i].teamShortname=data.gameData.awayTeamShortname || ""; data.awayPenalties[i].isAway=1; penalties.push(data.awayPenalties[i]); } penalties.sort(function(a, b){ var offenderNameA=jQuery.isPlainObject(a["offender"]) ? a["offender"]["playerLastname"] + " " + a["offender"]["playerFirstname"] : "", offenderNameB=jQuery.isPlainObject(b["offender"]) ? b["offender"]["playerLastname"] + " " + b["offender"]["playerFirstname"] : "", offenderCompare=(offenderNameA < offenderNameB ? -1 : (offenderNameA > offenderNameB ? 1 : 0)); return a["gameTime"] - b["gameTime"] || a["isAway"] - b["isAway"] || offenderCompare || a["penaltyLength"] - b["penaltyLength"]; }); self.tables.penalties.setRows(self.getRows(penalties, self.options.columnsPenalties, self.options.columnDefinitionPenalties)); } if(drawFieldPlayers){ self.tables["fieldPlayersHome"].setRows(self.getRows(data.homeFieldPlayers, self.options.columnsFieldPlayers, self.options.columnDefinitionFieldPlayers, self.options.playerLink)); self.tables["fieldPlayersAway"].setRows(self.getRows(data.awayFieldPlayers, self.options.columnsFieldPlayers, self.options.columnDefinitionFieldPlayers, self.options.playerLink)); self.drawLineups(self.domNodes.fieldPlayers.$dataLineupsHome, data.homeFieldPlayers, data.homeGoalKeepers); self.drawLineups(self.domNodes.fieldPlayers.$dataLineupsAway, data.awayFieldPlayers, data.awayGoalKeepers); } if(drawGoalKeepers){ self.tables["goalKeepersHome"].setRows(self.getRows(data.homeGoalKeepers, self.options.columnsGoalKeepers, self.options.columnDefinitionGoalKeepers, self.options.playerLink)); self.tables["goalKeepersAway"].setRows(self.getRows(data.awayGoalKeepers, self.options.columnsGoalKeepers, self.options.columnDefinitionGoalKeepers, self.options.playerLink)); } if(drawGoalKeeperChanges){ var goalKeeperChanges=[]; for(i=0; i < data.homeGoalKeeperChanges.length; i++){ data.homeGoalKeeperChanges[i].teamShortname=data.gameData.homeTeamShortname || ""; goalKeeperChanges.push(data.homeGoalKeeperChanges[i]); } for(i=0; i < data.awayGoalKeeperChanges.length; i++){ data.awayGoalKeeperChanges[i].teamShortname=data.gameData.awayTeamShortname || ""; goalKeeperChanges.push(data.awayGoalKeeperChanges[i]); } goalKeeperChanges.sort(function(a, b){ return a["gametime"] - b["gametime"]; }); self.tables.goalKeeperChanges.setRows(self.getRows(goalKeeperChanges, self.options.columnsGoalKeeperChanges, self.options.columnDefinitionGoalKeeperChanges)); } 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-full-report-play-by-play-row-period-change" }); } }, "-hd-los-game-play-by-play-col-")); } if(drawRosters){ self.tables["rosterHome"].setRows(self.getRows(data.homeRoster, self.options.columnsRoster, self.options.columnDefinitionRoster, self.options.playerLink)); self.tables["rosterAway"].setRows(self.getRows(data.awayRoster, self.options.columnsRoster, self.options.columnDefinitionRoster, self.options.playerLink)); } if(drawPreGameReportLastGames && this.options.statsCompareRowDefinitionPreGameReportLastGames){ this.renderLastGames({ $domNode: this.domNodes.preGameReport.lastGames.$roadToHome, games: data.homeLastGames.lastGames, "reverse": true }); this.renderLastGames({ $domNode: this.domNodes.preGameReport.lastGames.$roadToAway, games: data.awayLastGames.lastGames }); this.createStatsCompare({ "$domNode": this.domNodes.preGameReport.lastGames.$gameCompare, "definition": this.options.statsCompareRowDefinitionPreGameReportLastGames, "homeData": data.homeLastGames, "awayData": data.awayLastGames, "titleLabel": hockeydata["i18n"].translate("Last 5 Games") }); } if(drawPreGameReportTeamStatsSeason && this.options.statsCompareRowDefinitionPreGameReportTeamStatsSeason){ this.createStatsCompare({ "$domNode": this.domNodes.preGameReport.teamStats.$season, "definition": this.options.statsCompareRowDefinitionPreGameReportTeamStatsSeason, "homeData": data.homeTeamStatsSeason, "awayData": data.awayTeamStatsSeason, "titleLabel": hockeydata["i18n"].translate("Season") }); } if(drawPreGameReportTeamStatsHead2Head && this.options.statsCompareRowDefinitionPreGameReportTeamStatsHead2Head){ this.createStatsCompare({ "$domNode": this.domNodes.preGameReport.teamStats.head2head.$statsComparison, "definition": this.options.statsCompareRowDefinitionPreGameReportTeamStatsHead2Head, "homeData": data.homeTeamStatsHead2Head, "awayData": data.awayTeamStatsHead2Head, "titleLabel": hockeydata["i18n"].translate("Head 2 Head") }); this.tables.preGameReportTeamStatsHead2HeadGames.setRows(self.getRows(data.previouslyPlayedHead2HeadGames, self.options.columnsPreGameReportTeamStatsHead2HeadGames, self.options.columnDefinitionPreGameReportTeamStatsHead2HeadGames)); } if(drawPreGameReportStarPlayers){ if(this.options.playerCompareRowDefinitionPreGameReportTopscorers){ this.createPlayerCompare({ "$domNode": this.domNodes.preGameReport.teamStats.$playerCompare, "homeData": data.homeStarPlayers.topscorers, "awayData": data.awayStarPlayers.topscorers, "titleLabel": hockeydata["i18n"].translate("Topscorers"), "valuesConfiguration": this.options.playerCompareRowDefinitionPreGameReportTopscorers, }); } if(this.options.playerCompareRowDefinitionPreGameReportGameWinners){ this.createPlayerCompare({ "$domNode": this.domNodes.preGameReport.teamStats.$playerCompare, "homeData": data.homeStarPlayers.gameWinningGuys, "awayData": data.awayStarPlayers.gameWinningGuys, "titleLabel": hockeydata["i18n"].translate("Game Winners"), "valuesConfiguration": this.options.playerCompareRowDefinitionPreGameReportGameWinners, }); } if(this.options.playerCompareRowDefinitionPreGameReportPowerplay){ this.createPlayerCompare({ "$domNode": this.domNodes.preGameReport.teamStats.$playerCompare, "homeData": data.homeStarPlayers.powerplayGuys, "awayData": data.awayStarPlayers.powerplayGuys, "titleLabel": hockeydata["i18n"].translate("Powerplay"), "valuesConfiguration": this.options.playerCompareRowDefinitionPreGameReportPowerplay, }); } if(this.options.playerCompareRowDefinitionPreGameReportBadBoys){ this.createPlayerCompare({ "$domNode": this.domNodes.preGameReport.teamStats.$playerCompare, "homeData": data.homeStarPlayers.badBoys, "awayData": data.awayStarPlayers.badBoys, "titleLabel": hockeydata["i18n"].translate("Penalty Box"), "valuesConfiguration": this.options.playerCompareRowDefinitionPreGameReportBadBoys, }); } if(this.options.playerCompareRowDefinitionPreGameReportGoalkeepers){ this.createPlayerCompare({ "$domNode": this.domNodes.preGameReport.teamStats.$playerCompare, "homeData": data.homeStarPlayers.goalkeepers, "awayData": data.awayStarPlayers.goalkeepers, "titleLabel": hockeydata["i18n"].translate("Goalkeepers"), "valuesConfiguration": this.options.playerCompareRowDefinitionPreGameReportGoalkeepers, }); } } }; this.drawLineups=function($domNode, fieldPlayers, goalKeepers){ $domNode.empty(); var lineupsObj={}; var lineupsArr=[]; var positionIds={ "LF": 1, "C": 2, "RF": 3, "LD": 4, "RD": 5, "G": 6 }; var player, line, lineName, i; for(i=0; i < fieldPlayers.length; i++){ player=fieldPlayers[i]; line=player["lineupLine"]; lineName=hockeydata["i18n"].translate("Line") + " " + line; if(line){ if(!(lineName in lineupsObj)) lineupsObj[lineName]=[]; lineupsObj[lineName].push(player); } } for(i=0; i < goalKeepers.length; i++){ var goalKeeper=goalKeepers[i]; lineName=hockeydata["i18n"].translate("Goalkeepers"); if(!(lineName in lineupsObj)) lineupsObj[lineName]=[]; lineupsObj[lineName].push(goalKeeper); } for(lineName in lineupsObj) if(lineupsObj.hasOwnProperty(lineName)) lineupsArr.push({ "lineName": lineName, "players": lineupsObj[lineName] }); lineupsArr.sort(function(a, b){ if(a.lineName===hockeydata["i18n"].translate("Goalkeepers")) return 1; if(b.lineName===hockeydata["i18n"].translate("Goalkeepers")) return -1; return (a.lineName < b.lineName ? -1 : 1); }); for(i=0; i < lineupsArr.length; i++){ line=lineupsArr[i]; lineName=line.lineName; var players=line.players; var $line=jQuery("<div/>").addClass("-hd-los-game-full-report-lineup").appendTo($domNode); var $headline=jQuery("<div/>").addClass("-hd-los-game-full-report-lineup-headline").appendTo($line); var $players=jQuery("<div/>").addClass("-hd-los-game-full-report-lineup-players").appendTo($line); $headline.html(lineName); players.sort(function(a, b){ return ((a.position in positionIds) ? positionIds[a.position] : 0) - ((b.position in positionIds) ? positionIds[b.position] : 0); }); for(var j=0; j < players.length; j++){ player=players[j]; var uri=hockeydata["util"]["UriComposer"].parseUri(self.options.playerLink, [ player.id, self.options.divisionId ]); var $player=jQuery("<div/>").addClass("-hd-los-game-full-report-lineup-player").appendTo($players); var $playerName=jQuery("<div/>").addClass("-hd-los-game-full-report-lineup-player-name").append(player.playerLastname + " " + player.playerFirstname); jQuery("<div/>").addClass("-hd-los-game-full-report-lineup-player-jersey-no").append(player.playerJerseyNr).appendTo($player); $playerName.appendTo($player); jQuery("<div/>").addClass("-hd-los-game-full-report-lineup-player-position").append(player.position).appendTo($player); if(uri) $player.click(hockeydata["util"]["LinkComposer"].getLinkClickFunction(uri)).addClass("-hd-clickable"); if(self.options.showPlayerNationInLineups && player.nation) $playerName.append(" (" + player.nation + ")"); if(self.options.showPlayerNationFlagInLineups && player.nation) $playerName.append(" ").append(hockeydata["util"]["ImageLoader"].load(hockeydata["util"]["UriComposer"].getNationFlagUri({ "nation": player.nation }))); } } }; this.getRows=function(dataRows, columns, columnDefinitions, rowLink, beforeColumns, cellClassPrefix){ var tableRows=[]; for(var i=0; i < dataRows.length; i++){ var dataRow=dataRows[i]; var uri=(jQuery.isFunction(rowLink) ? rowLink(dataRow) : hockeydata["util"]["UriComposer"].parseUri(rowLink, [ dataRow.id, self.options.divisionId ])); var tableRow={ "cols": [] }; var j; 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.loadTimeOnIce=function(){ var err=function(){ self.$domNode.find(".-hd-los-game-full-report-time-on-ice-player-is-on-ice").removeClass("-hd-los-game-full-report-time-on-ice-player-is-on-ice"); }; new hockeydata["util"]["Request"]({ "complete": function(){ if(self.gameStatus===1) self.timerTimeOnIce=setTimeout(self.loadTimeOnIce, self.timerIntervalTimeOnIce); }, "data": { "apiKey": self.options.apiKey, "gameId": self.options.gameId }, "error": err, "success": function(e){ if(e["statusId"] > 0 && e.data) self.updateTimeOnIce(e.data); else err(); }, "url": self.options.dataUrlTimeOnIce }); }; this.updateTimeOnIce=function(timeOnIceData){ timeOnIceData=timeOnIceData.split("|"); self.updateTimeOnIceGameTime(timeOnIceData[0]); self.updateTimeOnIceTeam(timeOnIceData[1], "home"); self.updateTimeOnIceTeam(timeOnIceData[2], "away"); self.updateTimeOnIceHighlights("home"); self.updateTimeOnIceHighlights("away"); }; this.updateTimeOnIceGameTime=function(gameTimeData){ if(gameTimeData){ gameTimeData=gameTimeData.split(","); self.domNodes.timeOnIce.$gameTime.html(" | " + gameTimeData[0] + " (" + gameTimeData[1] + ")"); } }; this.updateTimeOnIceTeam=function(teamData, homeOrAway){ if(teamData){ var players=teamData.split(";"); for(var i=0; i < players.length; i++) self.updateTimeOnIcePlayer(players[i], homeOrAway); } }; this.updateTimeOnIcePlayer=function(playerData, homeOrAway){ if(playerData){ playerData=playerData.split(","); var playerId=Number(playerData[0]); var playerIsOnIce=Number(playerData[1]); var playerIceTime=Number(playerData[2]); var playerShifts=Number(playerData[3]); var $playerName=self.$domNode.find("#-hd-los-game-full-report-time-on-ice-player-name-" + playerId); var $playerJerseyNr=self.$domNode.find("#-hd-los-game-full-report-time-on-ice-player-jersey-nr-" + playerId); var $playerPosition=self.$domNode.find("#-hd-los-game-full-report-time-on-ice-player-position-" + playerId); var $playerIceTime=self.$domNode.find("#-hd-los-game-full-report-time-on-ice-player-ice-time-" + playerId); var $playerShifts=self.$domNode.find("#-hd-los-game-full-report-time-on-ice-player-shifts-" + playerId); $playerIceTime.html(hockeydata["util"].formatDuration(playerIceTime)); $playerShifts.html(playerShifts); self.playersOnIce[homeOrAway][playerId]=playerIsOnIce; if(playerIsOnIce){ $playerName.addClass("-hd-los-game-full-report-time-on-ice-player-is-on-ice"); $playerJerseyNr.addClass("-hd-los-game-full-report-time-on-ice-player-is-on-ice"); $playerPosition.addClass("-hd-los-game-full-report-time-on-ice-player-is-on-ice"); $playerIceTime.addClass("-hd-los-game-full-report-time-on-ice-player-is-on-ice"); $playerShifts.addClass("-hd-los-game-full-report-time-on-ice-player-is-on-ice"); } else { $playerName.removeClass("-hd-los-game-full-report-time-on-ice-player-is-on-ice"); $playerJerseyNr.removeClass("-hd-los-game-full-report-time-on-ice-player-is-on-ice"); $playerPosition.removeClass("-hd-los-game-full-report-time-on-ice-player-is-on-ice"); $playerIceTime.removeClass("-hd-los-game-full-report-time-on-ice-player-is-on-ice"); $playerShifts.removeClass("-hd-los-game-full-report-time-on-ice-player-is-on-ice"); } } }; this.updateTimeOnIceHighlights=function(homeOrAway){ self.domNodes.timeOnIce.highlights["$" + homeOrAway].find(".-hd-los-game-full-report-time-on-ice-highlights-player").each(function(){ if(!self.playersOnIce[homeOrAway][Number(jQuery(this).attr("data-id"))]) jQuery(this).remove(); }); for(var playerId in self.playersOnIce[homeOrAway]) if(self.playersOnIce[homeOrAway].hasOwnProperty(playerId)) if(self.playersOnIce[homeOrAway][playerId] && !self.domNodes.timeOnIce.highlights["$" + homeOrAway].find("#-hd-los-game-full-report-time-on-ice-highlights-player-" + playerId).size()) self.addTimeOnIceHighlightPlayer(playerId, homeOrAway); }; this.addTimeOnIceHighlightPlayer=function(playerId, homeOrAway){ var player=self.players[playerId]; if(player){ var playerPortraitImage=hockeydata["util"]["ImageLoader"].load(hockeydata["util"]["UriComposer"].getPlayerPortraitUri({ "sport": self.options.sport, "league": self.options.league, "divisionId": (self.options._divisionId || self.options.divisionId), "playerId": playerId }), { "onerror": function(){ this.src=hockeydata["util"]["UriComposer"].getGhostPlayerPortraitUri({ "sport": self.options.sport }); } }); var $playerContainer=jQuery("<div/>").addClass("-hd-los-game-full-report-time-on-ice-highlights-player").attr("id", "-hd-los-game-full-report-time-on-ice-highlights-player-" + playerId).attr("data-id", playerId); var $playerPortrait=jQuery("<div/>").addClass("-hd-los-game-full-report-time-on-ice-highlights-player-portrait").appendTo($playerContainer); var $playerName=jQuery("<div/>").addClass("-hd-los-game-full-report-time-on-ice-highlights-player-name").appendTo($playerContainer); var $playerStats=jQuery("<div/>").addClass("-hd-los-game-full-report-time-on-ice-highlights-player-stats").appendTo($playerContainer); $playerContainer.appendTo(self.domNodes.timeOnIce.highlights["$" + homeOrAway]); $playerPortrait.append(playerPortraitImage); $playerName.html(player.playerLastname); $playerStats.html(hockeydata["util"].sprintf("%s %s | %s %s | %s %s", (player.goals || 0), hockeydata["i18n"].translate("G", "Goals"), (player.assists || 0), hockeydata["i18n"].translate("A", "Assists"), (player.shotsOnGoal || 0), hockeydata["i18n"].translate("SoG", "Shots on Goal"))); } }; this.createStatsCompare=function(options){ var rows=[]; for(var i=0; i < options.definition.length; i++){ var rowDefinition=options.definition[i]; var valueHome=(rowDefinition.valueKey in options.homeData) ? Number(options.homeData[rowDefinition.valueKey]) : 0; var valueAway=(rowDefinition.valueKey in options.awayData) ? Number(options.awayData[rowDefinition.valueKey]) : 0; var displayHome=("displayKey" in rowDefinition) && (rowDefinition.displayKey in options.homeData) ? options.homeData[rowDefinition.displayKey] : valueHome; var displayAway=("displayKey" in rowDefinition) && (rowDefinition.displayKey in options.awayData) ? options.awayData[rowDefinition.displayKey] : valueAway; rows.push({ "label": rowDefinition.label, "title": rowDefinition.title, "value1": valueHome, "value2": valueAway, "displayValue1": displayHome, "displayValue2": displayAway }); } new hockeydata.util.StatsCompare(jQuery.extend({}, self.options, { "$domNode": options.$domNode, "rows": rows, "titleLabel": options.titleLabel, "title1": hockeydata["util"]["ImageLoader"].load(self.logoUrl.home), "title2": hockeydata["util"]["ImageLoader"].load(self.logoUrl.away), "color1": self.gameData.homeTeamColor, "color2": self.gameData.awayTeamColor })); }; this.createPlayerCompare=function(options){ var rows=[]; var $domNode=jQuery("<div/>").appendTo(this.domNodes.preGameReport.starPlayers.$playerCompare); for(var i=0; i < 5; i++){ rows.push({ "player1": options.homeData[i], "player2": options.awayData[i] }); } new hockeydata.util.PlayerCompare(jQuery.extend({}, self.options, { "$domNode": $domNode, "divisionId": (self.options._divisionId || self.options.divisionId), "league": self.options.league, "rows": rows, "sport": self.options.sport, "titleLabel": options.titleLabel, "title1": hockeydata["util"]["ImageLoader"].load(self.logoUrl.home), "title2": hockeydata["util"]["ImageLoader"].load(self.logoUrl.away), "valuesConfiguration": options.valuesConfiguration })); }; this.renderLastGames=function(options){ if(!options.games) return; if(options.reverse) options.games=options.games.toReversed(); for(var i=0; i < options.games.length; i++){ var game=options.games[i]; var age=game.age; var ageUnit="days"; var ageStr=""; var $game=jQuery("<div/>").addClass("-hd-los-game-full-report-pre-game-report-last-games-road-to-game -hd-los-game-full-report-pre-game-report-last-games-road-to-game-" + game.result); if(age > 27){ age=Math.round(age / 28); ageUnit="months"; } else if(age > 13){ age=Math.round(age / 7); ageUnit="weeks"; } if(ageUnit==="months") ageStr=hockeydata.util.sprintf(hockeydata.i18n.translate("%sm ago"), age); else if(ageUnit==="weeks") ageStr=hockeydata.util.sprintf(hockeydata.i18n.translate("%sw ago"), age); else ageStr=hockeydata.util.sprintf(hockeydata.i18n.translate("%sd ago"), age); jQuery("<div/>").addClass("-hd-los-game-full-report-pre-game-report-last-games-road-to-game-result").append(game.result).appendTo($game); jQuery("<div/>").addClass("-hd-los-game-full-report-pre-game-report-last-games-road-to-game-age").append(ageStr).appendTo($game); jQuery("<div/>").addClass("-hd-los-game-full-report-pre-game-report-last-games-road-to-game-arrow").appendTo($game); options.$domNode.append($game); } }; this.initialize(); } hockeydata.extend(FullReport, hockeydata["los"]["Game"], "FullReport");})());/* served by: los-apiserver-prod *//* 0.090296030044556; not cached */