$(function(){
UI.elements = {
menu: $('nav > .menu'),
main: $('main'),
header: $('header'),
connection: {
status: $('#connection'),
user_and_host: $('#user_and_host'),
msg: $('#message')
}
};
UI.buildMenu();
UI.stored.getOpts();
//get stored login data
try {
if ('mistLogin' in sessionStorage) {
var stored = JSON.parse(sessionStorage['mistLogin']);
mist.user.name = stored.name;
mist.user.password = stored.password;
mist.user.host = stored.host;
}
}
catch (e) {}
//check if username and host have been stored in the url
if (location.hash) {
var hash = decodeURIComponent(location.hash).substring(1).split('@');
var user = hash[0].split('&');
mist.user.name = user[0];
if (user[1]) { mist.user.host = user[1]; }
}
//check if we are logged in
mist.send(function(d){
//we're logged in
$(window).trigger('hashchange');
},{},{timeout: 5, hide: true});
var lastpos = 0;
$('body > div.filler').on('scroll',function(){
var pos = $(this).scrollLeft();
if (pos != lastpos) {
UI.elements.header.css('margin-right',-1*pos+'px');
}
lastpos = pos;
});
});
$(window).on('hashchange', function(e) {
var loc = decodeURIComponent(location.hash).substring(1).split('@');
if (!loc[1]) { loc[1] = ''; }
var tab = loc[1].split('&');
if (tab[0] == '') { tab[0] = 'Overview'; }
UI.showTab(tab[0],tab[1]);
});
var MistVideoObject = {};
var otherhost = {
host: false,
https: false
};
var UI = {
debug: false,
elements: {},
stored: {
getOpts: function(){
var stored = localStorage['stored'];
if (stored) {
stored = JSON.parse(stored);
}
$.extend(true,this.vars,stored);
return this.vars;
},
saveOpt: function(name,val){
this.vars[name] = val;
localStorage['stored'] = JSON.stringify(this.vars);
return this.vars;
},
vars: {
helpme: true
}
},
interval: {
clear: function(){
if (typeof this.opts == 'undefined') {
return;
}
clearInterval(this.opts.id);
delete this.opts;
},
set: function(callback,delay){
if (this.opts) {
log('[interval]','Set called on interval, but an interval is already active.');
}
this.opts = {
delay: delay,
callback: callback
};
this.opts.id = setInterval(callback,delay);
}
},
returnTab: ['Overview'],
countrylist: {'AF':'Afghanistan','AX':'Åland Islands','AL':'Albania','DZ':'Algeria','AS':'American Samoa','AD':'Andorra',
'AO':'Angola','AI':'Anguilla','AQ':'Antarctica','AG':'Antigua and Barbuda','AR':'Argentina','AM':'Armenia','AW':'Aruba',
'AU':'Australia','AT':'Austria','AZ':'Azerbaijan','BS':'Bahamas','BH':'Bahrain','BD':'Bangladesh','BB':'Barbados',
'BY':'Belarus','BE':'Belgium','BZ':'Belize','BJ':'Benin','BM':'Bermuda','BT':'Bhutan','BO':'Bolivia, Plurinational State of',
'BQ':'Bonaire, Sint Eustatius and Saba','BA':'Bosnia and Herzegovina','BW':'Botswana','BV':'Bouvet Island','BR':'Brazil',
'IO':'British Indian Ocean Territory','BN':'Brunei Darussalam','BG':'Bulgaria','BF':'Burkina Faso','BI':'Burundi','KH':'Cambodia',
'CM':'Cameroon','CA':'Canada','CV':'Cape Verde','KY':'Cayman Islands','CF':'Central African Republic','TD':'Chad','CL':'Chile',
'CN':'China','CX':'Christmas Island','CC':'Cocos (Keeling) Islands','CO':'Colombia','KM':'Comoros','CG':'Congo',
'CD':'Congo, the Democratic Republic of the','CK':'Cook Islands','CR':'Costa Rica','CI':'Côte d\'Ivoire','HR':'Croatia',
'CU':'Cuba','CW':'Curaçao','CY':'Cyprus','CZ':'Czech Republic','DK':'Denmark','DJ':'Djibouti','DM':'Dominica',
'DO':'Dominican Republic','EC':'Ecuador','EG':'Egypt','SV':'El Salvador','GQ':'Equatorial Guinea','ER':'Eritrea','EE':'Estonia',
'ET':'Ethiopia','FK':'Falkland Islands (Malvinas)','FO':'Faroe Islands','FJ':'Fiji','FI':'Finland','FR':'France','GF':'French Guiana',
'PF':'French Polynesia','TF':'French Southern Territories','GA':'Gabon','GM':'Gambia','GE':'Georgia','DE':'Germany','GH':'Ghana',
'GI':'Gibraltar','GR':'Greece','GL':'Greenland','GD':'Grenada','GP':'Guadeloupe','GU':'Guam','GT':'Guatemala','GG':'Guernsey',
'GN':'Guinea','GW':'Guinea-Bissau','GY':'Guyana','HT':'Haiti','HM':'Heard Island and McDonald Islands',
'VA':'Holy See (Vatican City State)','HN':'Honduras','HK':'Hong Kong','HU':'Hungary','IS':'Iceland','IN':'India','ID':'Indonesia',
'IR':'Iran, Islamic Republic of','IQ':'Iraq','IE':'Ireland','IM':'Isle of Man','IL':'Israel','IT':'Italy','JM':'Jamaica',
'JP':'Japan','JE':'Jersey','JO':'Jordan','KZ':'Kazakhstan','KE':'Kenya','KI':'Kiribati',
'KP':'Korea, Democratic People\'s Republic of','KR':'Korea, Republic of','KW':'Kuwait','KG':'Kyrgyzstan',
'LA':'Lao People\'s Democratic Republic','LV':'Latvia','LB':'Lebanon','LS':'Lesotho','LR':'Liberia','LY':'Libya',
'LI':'Liechtenstein','LT':'Lithuania','LU':'Luxembourg','MO':'Macao','MK':'Macedonia, the former Yugoslav Republic of',
'MG':'Madagascar','MW':'Malawi','MY':'Malaysia','MV':'Maldives','ML':'Mali','MT':'Malta','MH':'Marshall Islands',
'MQ':'Martinique','MR':'Mauritania','MU':'Mauritius','YT':'Mayotte','MX':'Mexico','FM':'Micronesia, Federated States of',
'MD':'Moldova, Republic of','MC':'Monaco','MN':'Mongolia','ME':'Montenegro','MS':'Montserrat','MA':'Morocco','MZ':'Mozambique',
'MM':'Myanmar','NA':'Namibia','NR':'Nauru','NP':'Nepal','NL':'Netherlands','NC':'New Caledonia','NZ':'New Zealand','NI':'Nicaragua',
'NE':'Niger','NG':'Nigeria','NU':'Niue','NF':'Norfolk Island','MP':'Northern Mariana Islands','NO':'Norway','OM':'Oman',
'PK':'Pakistan','PW':'Palau','PS':'Palestine, State of','PA':'Panama','PG':'Papua New Guinea','PY':'Paraguay','PE':'Peru',
'PH':'Philippines','PN':'Pitcairn','PL':'Poland','PT':'Portugal','PR':'Puerto Rico','QA':'Qatar','RE':'Réunion',
'RO':'Romania','RU':'Russian Federation','RW':'Rwanda','BL':'Saint Barthélemy','SH':'Saint Helena, Ascension and Tristan da Cunha',
'KN':'Saint Kitts and Nevis','LC':'Saint Lucia','MF':'Saint Martin (French part)','PM':'Saint Pierre and Miquelon',
'VC':'Saint Vincent and the Grenadines','WS':'Samoa','SM':'San Marino','ST':'Sao Tome and Principe','SA':'Saudi Arabia',
'SN':'Senegal','RS':'Serbia','SC':'Seychelles','SL':'Sierra Leone','SG':'Singapore','SX':'Sint Maarten (Dutch part)','SK':'Slovakia',
'SI':'Slovenia','SB':'Solomon Islands','SO':'Somalia','ZA':'South Africa','GS':'South Georgia and the South Sandwich Islands',
'SS':'South Sudan','ES':'Spain','LK':'Sri Lanka','SD':'Sudan','SR':'Suriname','SJ':'Svalbard and Jan Mayen','SZ':'Swaziland',
'SE':'Sweden','CH':'Switzerland','SY':'Syrian Arab Republic','TW':'Taiwan, Province of China','TJ':'Tajikistan',
'TZ':'Tanzania, United Republic of','TH':'Thailand','TL':'Timor-Leste','TG':'Togo','TK':'Tokelau','TO':'Tonga',
'TT':'Trinidad and Tobago','TN':'Tunisia','TR':'Turkey','TM':'Turkmenistan','TC':'Turks and Caicos Islands','TV':'Tuvalu',
'UG':'Uganda','UA':'Ukraine','AE':'United Arab Emirates','GB':'United Kingdom','US':'United States',
'UM':'United States Minor Outlying Islands','UY':'Uruguay','UZ':'Uzbekistan','VU':'Vanuatu','VE':'Venezuela, Bolivarian Republic of',
'VN':'Viet Nam','VG':'Virgin Islands, British','VI':'Virgin Islands, U.S.','WF':'Wallis and Futuna','EH':'Western Sahara','YE':'Yemen',
'ZM':'Zambia','ZW':'Zimbabwe'
},
tooltip: {
show: function (pos,contents){
$tooltip = this.element;
if (!$.contains(document.body,$tooltip[0])) {
$('body').append($tooltip);
}
$tooltip.html(contents);
clearTimeout(this.hiding);
delete this.hiding;
var mh = $(document).height() - $tooltip.outerHeight();
var mw = $(document).width() - $tooltip.outerWidth();
$tooltip.css('left',Math.min(pos.pageX+10,mw-10));
$tooltip.css('top',Math.min(pos.pageY+25,mh-10));
$tooltip.show().addClass('show');
},
hide: function() {
$tooltip = this.element;
$tooltip.removeClass('show');
this.hiding = setTimeout(function(){
$tooltip.hide();
},500);
},
element: $('
').attr('id','tooltip')
},
humanMime: function (type) {
var human = false;
switch (type) {
case 'html5/application/vnd.apple.mpegurl':
human = 'HLS (TS)';
break;
case "html5/application/vnd.apple.mpegurl;version=7":
human = "HLS (CMAF)";
break;
case 'html5/video/webm':
human = 'WebM';
break;
case 'html5/video/mp4':
human = 'MP4';
break;
case 'dash/video/mp4':
human = 'DASH';
break;
case 'flash/11':
human = 'HDS';
break;
case 'flash/10':
human = 'RTMP';
break;
case 'flash/7':
human = 'Progressive';
break;
case 'html5/audio/mp3':
human = 'MP3';
break;
case 'html5/audio/wav':
human = 'WAV';
break;
case 'html5/video/mp2t':
case 'html5/video/mpeg':
human = 'TS';
break;
case "html5/application/vnd.ms-sstr+xml":
case 'html5/application/vnd.ms-ss':
human = 'Smooth Streaming';
break;
case 'html5/text/vtt':
human = 'VTT Subtitles';
break;
case 'html5/text/plain':
human = 'SRT Subtitles';
break;
case 'html5/text/javascript':
human = 'JSON Subtitles';
break;
case 'rtsp':
human = 'RTSP';
break;
case 'webrtc':
human = "WebRTC";
break;
}
return human;
},
popup: {
element: null,
show: function(content) {
this.element = $('