/*Game Center (Version 0.1.0)*/
var gcSettings = {
	simulate:			false,
	simulate_no:		0,
	sport:				'soccer',
	infoLogo:			true,
	visualLineup: 		true,
	listLineup: 		true,
	commentary: 		true,
	commentaryFilter: 	false,
	timeline:			true,
	updateInterval:		5000,
	visualTriggers:		true,
	includeLivetipsOdds: ((typeof(PAGE_livetipsOdds) != 'undefined') ? PAGE_livetipsOdds : 0)
}
var livetips_init = true;
var gc_translate = {};


var current_cnt = 1;

function workers(){return typeof(window.Worker)==='function';}

function gameCenter_incident_buildTypes(incident, data){
	incident.elp = (incident.elp)?'+'+incident.elp:'';
	if(gbl_live_types[incident.eitfk]){
		incident.type = gbl_live_types[incident.eitfk].type
		incident.sub_type = (gbl_live_types[incident.eitfk].comment) ? gbl_live_types[incident.eitfk].comment : 'no_sub';
	
		if(isNumeric(incident.type.substr(0,1))){
			incident.type = 't_'+incident.type;
		}
	}else{
		incident.type = 'unknown';
		incident.sub_type = 'no_sub';
	}
	incident.data = {};
	for(var d in incident.d){
		if(incident.d[d].v){
			incident.data[d] = '<span class="val">'+incident.d[d].v+'</span>';
		}else if(incident.d[d].pfk){
			incident.data[d] = gameCenter_getName(incident.d[d].pfk, data);
		}else{
			incident.data[d] = '<span class="undefined">-</span>';
		}
	}
	incident.team = (incident.data.team) ? incident.data.team : '';
	
	incident.team_nr = 0;
	
	incident.p1 = (object_test(incident,'d.player1.pfk'))?incident.d.player1.pfk:'';
	incident.p2 = (object_test(incident,'d.player2.pfk'))?incident.d.player2.pfk:'';
	
	incident.text = gbl_live_vars['LIVESTATS_TEXT_'+incident.eitfk];
	
	incident.text = jTemplate({data:incident.data, text: (incident.text)?incident.text:'Unknown eitfk:'+incident.eitfk});
	
	return incident;
}

function gameCenter_trigger(incident, team){
	jTimeout('gameCenter_trigger_timer');

	if(incident === false){	
		$('#gameCenter_trigger_wrapper').fadeOut('normal');
		$('#gameCenter_trigger_icon').fadeOut('normal');
		this.triggered = false;
		return false;
	}else if(typeof(incident) == 'string'){
		var class_name = 'goal';
		var text = '<span class="'+((team==1)?'scorer':'')+'">'+$('#gameCenter_info_team1').html()
		+'</span>&nbsp;&nbsp;&nbsp;'+$('#gameCenter_info_result').text()+'&nbsp;&nbsp;&nbsp;'
		+'<span class="'+((team==2)?'scorer':'')+'">'+$('#gameCenter_info_team2').text()+'</span>';
		var title = $('#GAMECENTER_INCIDENT_goal').html();
		
		if($('#gameCenter_sound').hasClass('active')){
			play_sound('/snd/default/goal.mp3');
		}
		var team = '';
	}else{
		if(this.triggered){return false;}
		if(!incident.type){gameCenter_incident_buildTypes(incident, gcRaw);}
		
		var type = incident.type;
		if(type === 'card'){
			if(incident.sub_type == 'y2'){type = type + '_yellow_2nd';}
			else if(incident.sub_type == 'r'){type = type + '_red';}
			else{type = type + '_yellow';}
			if($('#gameCenter_sound').hasClass('active')){
				play_sound('/snd/default/card.mp3');
			}
		}else if(type === 'goal'){
			return false;
		}
		
		var team = incident.team;
		
		var class_name = type;
		var title = $('#GAMECENTER_INCIDENT_'+type).html();
		if(!title){title = type;}
		var text = '<span class="elapsed">'+incident.el + ((incident.elp) ? '+'+incident.elp : '') + '\'</span>&nbsp;' + incident.text;
		
	}
	
	$('#gameCenter_trigger_wrapper').removeClass().addClass(class_name);
	$('#gameCenter_trigger_icon').removeClass().addClass(class_name);
	$('#gameCenter_trigger_title').html(title);
	$('#gameCenter_trigger_team').html(team);
	$('#gameCenter_trigger_text').html(text);
	
	this.triggered = true;
	
	
	$('#gameCenter_trigger_icon').css('left',280).show('pulsate', {}, 200, function(){
		
		$('#gameCenter_trigger_icon').animate({'left': 10}, 300);
		$('#gameCenter_trigger_wrapper').fadeIn(300);
		jTimeout('gameCenter_trigger_timer', 10000, function(){
			gameCenter_trigger(false);
		});
	});
}


function auto_load_match(){
	var eventFK = 0;
	
	if($('tr.livestats,tr.light').length){
		if($('tr.livestats.inprogress,tr.light.inprogress').length){
			eventFK = $('tr.livestats.inprogress,tr.light.inprogress').filter(':first').attr('id').replace('e_','');
		}else if($('tr.livestats.notstarted,tr.light.notstarted').length){
			eventFK = $('tr.livestats.notstarted,tr.light.notstarted').filter(':first').attr('id').replace('e_','');
		}else{
			eventFK = $('tr.livestats,tr.light').filter(':first').attr('id').replace('e_','');
		}
	}else{
		if($('tr.event_row.inprogress').length){
			eventFK = $('tr.event_row.inprogress').filter(':first').attr('id').replace('e_','');
		}else if($('tr.event_row.notstarted').length){
			eventFK = $('tr.event_row.notstarted').filter(':first').attr('id').replace('e_','');
		}else if($('tr.event_row').length){
			eventFK = $('tr.event_row').filter(':first').attr('id').replace('e_','');
		}
	}
	if(eventFK){
		load_event(eventFK);
	}
}


$("document").ready(function(){
	if(typeof(eventFK) != 'undefined' && parseInt(eventFK)){
		load_event(eventFK);
	}else{
		auto_load_match();
	}
});


/*init var*/
var gcInit = true;
/*Raw Data*/
var gcRaw = false;
/*XmlHttpRequest Object*/
var gcRequest = null;
var gcRequest2 = null;
/*Timer Object*/
var gcTimer = null;
var gcTimer2 = null;
/*Timeline Width*/
var gcTimeWidth = 750;
/*Var to use to calc incident positions on timeline*/
var gcIncidentsCalc = {};

function gameCenter_reset(){
	livetips_init = true;
	
	/*Clear Lineup*/
	$('#gameCenter_lineup_list_wrapper').find('ul.player_list').html('');
	
	/*Trigger*/
	$('#gameCenter_trigger_icon').hide();
	$('#gameCenter_trigger_wrapper').hide();
	jTimeout('gameCenter_trigger_timer');
	
	$('#gameCenter_buttons img.active').trigger('click');
	
	jTimeout('gameCenter_trigger_timer');
	$('#gameCenter_trigger_wrapper').hide();
	
	gameCenter_doTimeline(false);
	gcIncidentsCalc = {};
	gcInit = true;
	gcRaw = false;
	$('#gameCenter').addClass('nomatch').removeClass('loading');
	$('#gameCenter_status').html('&nbsp;');
	$('#gameCenter_statustext').html('&nbsp;');
	$('#gameCenter_elapsed').html('&nbsp;');
}
function gameCenter_stop(){
	clearTimeout(gcTimer);
	clearTimeout(gcTimer2);
	clearTimeout(gameCenter_countDownTimer);
}

function load_event(eid, simulate){
	if(simulate){
		$('#SIMULATE').show();
		gcSettings.simulate = true;
		gcSettings.simulate_no = 0;
	}else{
		$('#SIMULATE').hide();
		gcSettings.simulate = false;
	}
	
	$('#gameCenter').data('eventFK', eid);
	
	gameCenter_stop();
	gameCenter_reset();
	
	if($('#gameCenter_wrapper').is(':hidden')){
		$('#gameCenter_wrapper').slideDown('fast');
	}
	
	$('#gameCenter').addClass('loading');
	/*if($('#gameCenter').is(':visible')){
		
	}*/
	if(gcSettings.simulate){
		var url = '/sandbox/save_post/t_'+eid+'.json?_=rand_' + randomID();
	}else{
		var url = ((typeof(gbl_gateway) !== 'undefined')?gbl_gateway:'') + '/data/lstrans/'+eid+'?gamecenter=true&_=rand_' + randomID();
	}
	$.getJSON(url, function(data){
		gc_translate = data;
		gameCenter_start(eid);
	});
	
}
function get_trans_action(data){
	
}
function gameCenter_start(eid){
	//if(isNumeric(eid)){
		gcInit = true;
		eventFK = eid;	
	//}
	gameCenter_get();
	if(gcSettings.sport === 'soccer'){
		gameCenter_get2();
	}
}

/*Send Http Request*/
function gameCenter_get_success(data){
	if(data && data.e && data.e.efk){
		current_cnt = parseInt(data.cnt || 1, 10);
		
		if(gcRaw===false){gcRaw = data; gcInit = true; $('#gc_hideonload').show();}
		gameCenter_processData(data);
		if(typeof(after_gc_load)==='function'){
			after_gc_load();
		}
	}else{
		
	}
}
function gameCenter_get_complete(data){
	$('#gameCenter').removeClass('nomatch loading');
	if(gcRaw && gcRaw.e && gcRaw.e.efk){
		var status = (gcRaw)?gcRaw.e.st:'';
		if(!gcSettings.simulate){
			var interval = gcSettings.updateInterval;
			if(status==='finished'){
				var min = Math.abs(gcRaw.e.sd.toDate().diff(new Date(), 'm'));
				if(min>10){interval = 5000*60;}
			}else if(status==='notstarted'){
				var min = Math.abs(gcRaw.e.sd.toDate().diff(new Date(), 'm'));
				if(min>5){interval = 5000*60;}
			}
			gcTimer = setTimeout(gameCenter_get, interval);
		}
	}
}

function leadZero(int){
	switch(int.toString().length){
		case 1: return '000'+int; break;
		case 2: return '00'+int; break;
		case 3: return '0'+int; break;
		case 4: return int; break;
	}
}

function gameCenter_get(){
	if(!eventFK || eventFK == '0'){return false;}
	if(gcSettings.simulate){
		var url = '/sandbox/save_post/e_'+eventFK+'_'+leadZero(gcSettings.simulate_no)+'.json?_=' + Math.random().toString().replace('.','');
	}else{
		var url = ((typeof(gbl_gateway) !== 'undefined')?gbl_gateway:'') + '/data/livestats/'+eventFK+'?gamecenter=true&cnt='+current_cnt+'&_=' + Math.random().toString().replace('.','');
	}
	gcSettings.simulate_no = gcSettings.simulate_no + 1;
	$.ajax({
		'url': url,
		'dataType':'json',
		'success': gameCenter_get_success,
		'complete': gameCenter_get_complete
	});
}
function gameCenter_get2_success(data){
	gameCenter_liveTips(data, livetips_init);
}
function gameCenter_get2_complete(){
	var status = (gcRaw)?gcRaw.e.st:'';
	if(status !== 'finished'){
		if($('#gameCenter_liveTips_wrapper').is(':visible')){
			gcTimer2 = setTimeout(gameCenter_get2, ((status==='inprogress')?gcSettings.updateInterval:1000*60*5));
		}
	}
}

function gameCenter_get2(){
	clearTimeout(gcTimer2);
	if(typeof(window.oddsProviders)==='undefined'){window.oddsProviders = '';}
	if($('#btn_gameCenter_liveTips_wrapper').is(':hidden')){return true;}
	var url2 = ((typeof(gbl_gateway) !== 'undefined')?gbl_gateway:'') + '/snippet/livetips?&https='+isHTTPS()+'&eventFK='+eventFK+'&type=&theme=livestats&apikey=s&includeLivetipsOdds='+gcSettings.includeLivetipsOdds+'&includeOwnOdds=1&type=&odds_display_type=' + (readCookie('odds_style') || 'decimal');
	$.ajax({
		'url': url2,
		'success': gameCenter_get2_success,
		'complete': gameCenter_get2_complete
	});
}

/*Check if data is valid and run update*/
function gameCenter_tryData(){
	
	/*Check if request is complete*/
	if(gcRequest.readyState==4 || gcRequest.readyState=='complete'){
		
		
		
		try{var tmp_data = $.parseJSON(gcRequest.responseText);
		}catch(e){var tmp_data = false;}
		
		if(gcRequest.status != 200){
			if(gcRequest.status == 0){
				//try_warning('XMLHttpRequest status is not 200 (status='+gcRequest.status+') - Aborted request! No restart!');
			}else{
				//try_warning('XMLHttpRequest status is not 200 (status='+gcRequest.status+') - restarting update');
				gcTimer = setTimeout(gameCenter_get, gcSettings.updateInterval);
			}
		}else if(tmp_data===false || tmp_data===null || tmp_data==={}){
			//try_warning('Not JSON! - restarting update');
			gcTimer = setTimeout(gameCenter_get, gcSettings.updateInterval);
		}else{
			if(gcRaw===false){
				gcRaw = tmp_data;
				gcInit = true;
			}
			
			try{
				gameCenter_processData(tmp_data);
			}catch(e){
				gcInit = true;
			}
			gcTimer = setTimeout(gameCenter_get, gcSettings.updateInterval);
		}
		//$('#gameCenter').removeClass('nomatch loading')
	}
}

/*Process Raw Data*/
function gameCenter_processData(data){
	/*Do Live Tips*/
	//gameCenter_getLiveTips(data, gcInit);
	
	/*Do player lineup and list if hash has changed or on init*/
	if(gcSettings.sport === 'soccer'){
		if(data.e.ep_1.l.lh != gcRaw.e.ep_1.l.lh || data.e.ep_2.l.lh != gcRaw.e.ep_2.l.lh || gcInit){
			gameCenter_processData_players(data);
		}
		
		
		
	}
	/*Update Game Info and buttons if e hash has changed or on init*/
	if(data.e.h != gcRaw.e.h || gcInit){
		gameCenter_info(data);
		gameCenter_updateButtons(data);
	}
	
	/*Check if score has changed*/
	if(data.e.st === 'inprogress' && !gcInit){
		if(parseInt(data.e.ep_1.r.runningscore) > parseInt(gcRaw.e.ep_1.r.runningscore)){
			gameCenter_trigger('goal',1);
		}else if(parseInt(data.e.ep_2.r.runningscore) > parseInt(gcRaw.e.ep_2.r.runningscore)){
			gameCenter_trigger('goal',2);
		}
		
	}
	
	if(data.e.p.lst !== 'livestats' && data.e.p.lst !== 'light'){
		$('#btn_gameCenter_stats_wrapper, #gc_button_stats').addClass('disabled');
	}else if(data.e.st === 'notstarted'){
		$('#btn_gameCenter_stats_wrapper, #gc_button_stats').addClass('disabled');
	}else{
		$('#btn_gameCenter_stats_wrapper, #gc_button_stats').removeClass('disabled');
		if(data.ts.h != gcRaw.ts.h || gcInit){
			gameCenter_stats(data);
		}
	}
	
	
	
	if(!data.e.p.lst || data.e.p.lst === 'none'){
		if(data.e.ep_1.ih + data.e.ep_2.ih !== gcRaw.l.h || gcInit){
			
		}
		gameCenter_notLive_new(data);
		data.l.h = data.e.ep_1.ih+data.e.ep_2.ih;
	}
	
	/*if game is not livestats or light generate "false" commentary based on incidents*/
	if(data.e.p.lst != 'livestats' && data.e.st !== 'notstarted'){
		$('#btn_stats, #gc_button_stats').addClass('disabled');
		
		gameCenter_doTimeline(gameCenter_elapsed(data));
		
	}
	//if(!data.e.p.lst && data.e.st !== 'notstarted'){
	//	if(data.e.h != gcRaw.e.h || gcInit){
	//		gameCenter_notlive(data);
	//		gameCenter_processData_commentary(data, true, data.ls);
	//	}
	//}else{
		if(gcInit){
			gameCenter_processData_commentary(data, true, data.ls);
		}else{
			if(data.l.h != gcRaw.l.h){
				var new_incidents = [];
				var mod_incidents = [];
				var del_incidents = [];
				
				for(var i in data.ls){
					if(data.l[data.ls[i]].del){
						del_incidents.push(data.ls[i]);
					}else if(!gcRaw.l[data.ls[i]]){
						new_incidents.push(data.ls[i]);
					}else if(gcRaw.l[data.ls[i]].h != data.l[data.ls[i]].h){
						mod_incidents.push(data.ls[i]);
					}
				}
				for(var i in gcRaw.ls){
					if(!data.l[gcRaw.ls[i]]){
						del_incidents.push(gcRaw.ls[i]);
					}
				}
				gameCenter_processData_commentary(data, false, new_incidents, mod_incidents, del_incidents);
			}
		}	
	//}
	
	$('#gameCenter').removeClass().addClass(data.e.st);
	if(gcInit && data.e.st === 'notstarted'){gameCenter_matchCountdown(data);}
	if( data.e.st !== 'inprogress'){
		$('#gameCenter_status').html(st_labels_sd['status_desc_'+data.e.stfk]); $('#gameCenter_elapsed').html('');
	}else{
		$('#gameCenter_elapsed').html(gameCenter_elapsed(gcRaw)+'\'');
	}
	$('#gameCenter_statustext').html(st_labels_sd['status_desc_'+data.e.stfk]);
	$.doTimeout(5000, function(){gcInit = false;});
	gcRaw = data;
}

/*Countdown timer to match start*/
var gameCenter_countDownTimer = null;
function gameCenter_matchCountdown(data){
	if(object_test(data,'e.sd')){
		this.toDate = new Date(data.e.sd.replace(/\-/g,'/'));
	}
	
	var secs = (this.toDate - get_server_time())/1000;
	
	if(secs<0){
		$('#gameCenter_countDown').fadeOut('fast');
		clearTimeout(gameCenter_countDownTimer);
		return true;
	}
	
	var days = 0;/*Math.floor(secs/60/60/24); secs = secs - (days*24*60*60);*/
	var hrs = Math.floor(secs/60/60); secs = secs - (hrs*60*60);
	var mins = Math.floor(secs/60); secs = secs - (mins*60);
	secs = parseInt(secs);
	
	//if(days<10){days='0'+days;}
	
	if(days<1 && hrs<1 && mins<1 && secs<1){
		$('#gameCenter_countDown').fadeOut('fast');
		clearTimeout(gameCenter_countDownTimer);
	}else{
		if(hrs<10){hrs='0'+hrs;}
		if(mins<10){mins='0'+mins;}
		if(secs<10){secs='0'+secs;}
		$('#gameCenter_countDown span:first').html(hrs+':'+mins+':'+secs+'');
		gameCenter_countDownTimer = setTimeout(gameCenter_matchCountdown, 1000);
	}
}


function gameCenter_matchCountdown_new(data){
	
	if(data && data.e && data.e.sd){
		this.toDate = data.e.sd.toDate();
	}
	var diff = this.toDate.diff(get_server_time(), 'standard');
	
	if(diff[0]<1 && diff[1]<1 && diff[2]<1 && diff[3]<1){
		$('#gameCenter_countDown').fadeOut('fast');
		clearTimeout(gameCenter_countDownTimer);
	}else{
		$('#gameCenter_countDown span:first').html(diff.join(':'));
		gameCenter_countDownTimer = setTimeout(gameCenter_matchCountdown, 900);
	}
}

/*Update Team info and match info*/
function gameCenter_info(data){
	
	var tmp_timezone = parseInt(readCookie('custom_timezone'), 10) || 0;
	
	if(tmp_timezone){
		tmp_timezone;
		var datestring = new Date(data.e.sd.replace(/\-/igm,'/'));
		datestring.setHours(datestring.getHours()+tmp_timezone);
		datestring = $.PHPDate('d-m-Y H:i', datestring);
	}else{
		var datestring = $.PHPDate('d-m-Y H:i', new Date(data.e.sd.replace(/\-/igm,'/')));
	}
	datestring = '<span class="tz_field" data-date="'+data.e.sd+'" data-format="short_datetime">'+datestring+'</span>';
	
	if(data.e && data.e.p && data.e.p.ln){
		$('#gameCenter_leagueName').html(data.e.p.ln);
		$('#gameCenter_league').html('<b>' + data.e.p.ln + '</b> - ' + datestring);
	}else{
		var country_name = (gc_translate && gc_translate.tscn)?gc_translate.tscn+': ':'';
		var league_name = (gc_translate && gc_translate.tsn)?gc_translate.tsn:data.e.tsn;
		$('#gameCenter_leagueName').html( country_name+league_name );
		$('#gameCenter_league').html('<b>' + country_name+league_name + '</b> - ' + datestring);
	}
	if(gcSettings.sport === 'tennis'){
		$('#gameCenter_leagueName').append(' - ' + data.e.p.tpnme);
	}
	
	
	$('#gameCenter_stadium span').html( (data.e.p.v)?''+data.e.p.v:'' );
	
	
	
	$('#lineup_teamname_1').html(gameCenter_getName(data.e.ep_1.pfk, data));
	$('#lineup_teamname_2').html(gameCenter_getName(data.e.ep_2.pfk, data));
	$('#gameCenter_info_team1, #stats_gameCenter_info_team1').html(gameCenter_getName(data.e.ep_1.pfk, data));
	$('#gameCenter_info_team2, #stats_gameCenter_info_team2').html(gameCenter_getName(data.e.ep_2.pfk, data));
	$('#gameCenter_info_result').html(data.e.ep_1.r.runningscore + '&nbsp;-&nbsp;' + data.e.ep_2.r.runningscore);
	$('#gameCenter_info_result_team_1').html(data.e.ep_1.r.runningscore);
	$('#gameCenter_info_result_team_2').html(data.e.ep_2.r.runningscore);
	switch(gcSettings.sport){
		case 'tennis':
			var sets = ['set1','set2','set3','set4','set5'];
			var extra = ['tiebreak1','tiebreak2','tiebreak3','tiebreak4','tiebreak5']
			var extra_wrap = '<em>[EXTRA]</em>';
			break;
		case 'basketball':
			if(data.e.p.tts==='periods'){
				$('#gameCenter_wrapper').removeClass('periods').addClass('periods');
				var sets = ['period1','period2'];
			}else{
				$('#gameCenter_wrapper').removeClass('periods');
				var sets = ['quarter1','quarter2','quarter3','quarter4','extratime'];
			}
			break;
	}
	
	if(typeof(sets) !== 'undefined'){
		for(var i in sets){
			var varname = sets[i];
			$('#gameCenter_info_var'+(parseInt(i)+1)+'_team_1').html( ((typeof(data.e.ep_1.r[varname])!=='undefined')?data.e.ep_1.r[varname]:'-') + ((typeof(extra) !== 'undefined' && extra[i] && typeof(data.e.ep_1.r[extra[i]])!=='undefined')? extra_wrap.replace('[EXTRA]',data.e.ep_1.r[extra[i]]):''));
			$('#gameCenter_info_var'+(parseInt(i)+1)+'_team_2').html( ((typeof(data.e.ep_2.r[varname])!=='undefined')?data.e.ep_2.r[varname]:'-') + ((typeof(extra) !== 'undefined' && extra[i] && typeof(data.e.ep_2.r[extra[i]])!=='undefined')? extra_wrap.replace('[EXTRA]',data.e.ep_2.r[extra[i]]):''));
			
		}
	}
	
	//document.getElementById('gameCenter_info_logo1').src = (data.p[data.e.ep_1.pfk].p.nt=='yes') ? '/ximg/default/logo/teamlogo/'+data.e.ep_1.pfk : '/ximg/default/logo/teamlogo/'+data.e.ep_1.pfk;
	//document.getElementById('gameCenter_info_logo2').src = (data.p[data.e.ep_2.pfk].p.nt=='yes') ? '/ximg/default/logo/teamlogo/'+data.e.ep_2.pfk : '/ximg/default/logo/teamlogo/'+data.e.ep_2.pfk;
	if(gcSettings.infoLogo){
		$('#gameCenter_info_logo1').attr('src','/ximg/default/logo/teamlogo/'+data.e.ep_1.pfk).removeClass().addClass('logo_' + data.e.ep_1.pfk);
		$('#gameCenter_info_logo2').attr('src','/ximg/default/logo/teamlogo/'+data.e.ep_2.pfk).removeClass().addClass('logo_' + data.e.ep_2.pfk);
		
		$('#stats_gameCenter_info_logo1').attr('src','/ximg/default/logo/teamlogo/'+data.e.ep_1.pfk).removeClass().addClass('logo_' + data.e.ep_1.pfk);
		$('#stats_gameCenter_info_logo2').attr('src','/ximg/default/logo/teamlogo/'+data.e.ep_2.pfk).removeClass().addClass('logo_' + data.e.ep_2.pfk);
		
		$('#lineup_gameCenter_info_logo1').attr('src','/ximg/default/logo/teamlogo/'+data.e.ep_1.pfk).removeClass().addClass('logo_' + data.e.ep_1.pfk);
		$('#lineup_gameCenter_info_logo2').attr('src','/ximg/default/logo/teamlogo/'+data.e.ep_2.pfk).removeClass().addClass('logo_' + data.e.ep_2.pfk);
	}
	
	if(object_test(data,'e.ep_1.p.formation') && object_test(data,'e.ep_2.p.formation')){
		$('#gameCenter_formation_team_1').html(data.e.ep_1.p.formation);
		$('#gameCenter_formation_team_2').html(data.e.ep_2.p.formation);
	}else{
		$('#gameCenter_formation_team_1').html('');
		$('#gameCenter_formation_team_2').html('');
	}
	if(object_test(data,'e.p.lconf')){
		if(data.e.p.lconf == 'yes'){
			$('#gameCenter_lineup_notconfirmed_1').hide();
			$('#gameCenter_lineup_notconfirmed_2').hide();
		}else{
			$('#gameCenter_lineup_notconfirmed_1').show();
			$('#gameCenter_lineup_notconfirmed_2').show();
		}
	}else{
		$('#gameCenter_lineup_notconfirmed_1').show();
		$('#gameCenter_lineup_notconfirmed_2').show();
	}
	
}


function gameCenter_notLive_new(data){
	
	data=(data)?data:gcRaw;
	
	
	
	data.ls = [];
	data.l = {'h':''};
	
	var array = [];
	var array2 = [];
	
	for(var i in data.e.ep_1.i){
		data.e.ep_1.i[i].team = 1;
		array.push(data.e.ep_1.i[i]);
	}
	for(var i in data.e.ep_2.i){
		data.e.ep_2.i[i].team = 2;
		array2.push(data.e.ep_2.i[i]);
	}
	array = array.concat(array2);
	
	/*sort array by elapsed*/
	array.sort(function(a,b){return parseInt(a.el) - parseInt(b.el);});
	var tmp = {};
	
	
	//try{console.info(gcRaw)}catch(e){}
	
	for(var i in array){
		var incident = array[i];
		
		//if(!gcRaw.l[incident.id]){
			
			switch(incident.ic){
				case 'goal':tmp.eitfk = 71; break;
				case 'card':tmp.eitfk = 70; break;
				case 'subst':tmp.eitfk = 15; break;
				case 'subst_in':tmp.eitfk = 15; break;
				default: tmp.eitfk = 0; break;}
			switch(incident.ifk){
				case '14':tmp.eitfk = 70; break;
				case '15':tmp.eitfk = 26; break;
				case '16':tmp.eitfk = 270; break;}
			
			tmp.el = incident.el;
			tmp.h = incident.id;
			tmp.id = incident.id;
			
			if(incident.ifk==20){
				tmp.d = {};
				tmp.d.player1 = {'pfk':incident.ref_pfk, 'v': incident.pn};
				tmp.d.team = {'pfk': data.e['ep_'+incident.team].pfk};
			}else if(incident.ifk==32){
				if(!tmp.d){tmp.d = {};}
				tmp.d.player2 = {'pfk':(incident.ref_pfk || 0), 'v': (incident.pn || '')};
				data.l[incident.id] = tmp;
				data.ls.push(incident.id);
				tmp = {};
			}else{
				tmp.d = {};
				tmp.d.player1 = {'pfk':incident.ref_pfk, 'v': incident.pn};
				tmp.d.team = {'pfk': data.e['ep_'+incident.team].pfk};
				data.l[incident.id] = tmp;
				data.ls.push(incident.id);
				tmp = {};
			}
		//}
	}
	data.l.h = 'ARR_LENGTH_'+array.length;
	return data;
}


/*Fake commentary from incidents for games that are not livestats or light*/
function gameCenter_notlive(data){
	for(var t=1; t<=2; t++){
		var tmp = {};
		for(var i in data.e['ep_'+t].i){
			var incident = data.e['ep_'+t].i[i];
			
			var randomID = Math.random().toString().replace('.','');
			
			tmp.id = randomID;
			switch(incident.ic){
				case 'goal':tmp.eitfk = 71; break;
				case 'card':tmp.eitfk = 70; break;
				case 'subst':tmp.eitfk = 15; break;
				case 'subst_in':tmp.eitfk = 15; break;
				default: tmp.eitfk = 0; break;
			}
			switch(incident.ifk){
				case '14':tmp.eitfk = 70; break;
				case '15':tmp.eitfk = 26; break;
				case '16':tmp.eitfk = 270; break;
			}
			
			tmp.el = incident.el;
			
			if(incident.ifk==20){
				tmp.d = {};
				tmp.d.player1 = {'pfk':incident.ref_pfk, 'v': incident.pn};
				tmp.d.team = {'pfk': data.e['ep_'+t].pfk};
			}else if(incident.ifk==32){
				tmp.d.player2 = {'pfk':incident.ref_pfk, 'v': incident.pn};
				data.l[randomID] = tmp;
				data.ls.push(randomID);
				tmp = {};
			}else{
				tmp.d = {};
				tmp.d.player1 = {'pfk':incident.ref_pfk, 'v': incident.pn};
				tmp.d.team = {'pfk': data.e['ep_'+t].pfk};
				data.l[randomID] = tmp;
				data.ls.push(randomID);
				tmp = {};
			}
			
			
		}
	}
	
	data.ls.sort(function(a,b){
		return data.l[a].el - data.l[b].el;
	});
}



function gameCenter_stats(data){
	var types = ['bap','coa','cor','cro','fou','gok','ofs','rec','sbl','sof','son','yec'];
	
	var team1 = data.e.ep_1.pfk;
	var team2 = data.e.ep_2.pfk;
	
	for(var i in types){
		var type = types[i];
		var val1 = parseInt((data.ts && data.ts[team1] && data.ts[team1][type]) ? data.ts[team1][type] : 0);
		var val2 = parseInt((data.ts && data.ts[team2] && data.ts[team2][type]) ? data.ts[team2][type] : 0);
		
		var percent1 = (((parseInt(val1/(val1+val2)*100)>97)?97:parseInt(val1/(val1+val2)*100)) || 0) + '%';
		var percent2 = (((parseInt(val2/(val1+val2)*100)>97)?97:parseInt(val2/(val1+val2)*100)) || 0) + '%';
		
		$('#team_1_val_' + type).html(val1);
		$('#team_2_val_' + type).html(val2);
		
		$('#gameCenter_stats_' + type)
		.find('.team_1_val').html(val1).end()
		.find('.team_2_val').html(val2).end()
		.find('.team_1 div, div.stats_bar div').css('width',percent1).end()
		.find('.team_2 div').css('width',percent2).end();
	}
}

/*Do Commentary (incidents*/
function gameCenter_processData_commentary(data, redo_all, new_incidents, mod_incidents, del_incidents){
	mod_incidents=(mod_incidents)?mod_incidents:[];
	del_incidents=(del_incidents)?del_incidents:[];
	
	
	if(new_incidents.length > 0){
		$('#btn_gameCenter_commentary_wrapper, #btn_commentary, #gc_button_comments').removeClass('disabled');
	}else{
		$('#btn_gameCenter_commentary_wrapper, #btn_commentary, #gc_button_comments').addClass('disabled');
	}
	
	//try_info(new_incidents.length + ' new, '+mod_incidents.length+' mod and '+del_incidents.length+' del');
	//try_time('commentary');
	
	var last_el = 0;
	gcIncidentsCalc=(redo_all)?{}:gcIncidentsCalc;
	var tmp = [];
	var tmp2 = [];
	var redo_timeline_incidents = false;
	
	/*Remove deleted commentary/incidents*/
	for(var i in del_incidents){
		$('#commentary_' + del_incidents[i]).appendTo('#delete_dom');
		$('#incident_' + del_incidents[i]).appendTo('#delete_dom');
		$('#incident_lineup_' + del_incidents[i]).appendTo('#delete_dom');
	}
	$('#delete_dom').html('');
	
	/*Loop through new commentary/incidents*/
	for(var i in new_incidents){
		if(isNumeric(i)){
			
			var old_incident = gcRaw.l[new_incidents[i]];
			var incident = data.l[new_incidents[i]];
			var last_incident;
			
			if(incident.del){continue;}
			
			
			last_el = incident.el;
			
			/*Fill incident with types and whatnot that does not come from server*/
			incident = gameCenter_incident_buildTypes(incident, data);
			
			tmp.push(jTemplate({dom:'_commentary_item', data:incident, sec_data:data}));
			
			if(incident.type === 'goal' || incident.type === 'subst' || incident.type === 'card'){
				if(incident.el > 120){
					/*Penalty Shootout*/
				}else{
					var incident_html = jTemplate({dom:'_incident', data:incident});
					tmp2.push(incident_html);	
					gcIncidentsCalc[incident.id] = incident.el;
					redo_timeline_incidents = true;
					
					if(gcSettings.visualLineup){
						if(incident.p1 && document.getElementById('player_lineup_' + incident.p1)){
							if(!$('#player_lineup_'+incident.p1).find('#incident_' + incident.id).length){
								incident_html = incident_html.replace('id="incident_', 'id="incident_lineup_');
								$('#player_lineup_'+incident.p1).find('.player_'+incident.type).append(incident_html);
							}
						}
					}
				}
				if(gcSettings.visualTriggers && !gcInit){
					if(incident.type != 'goal'){
						gameCenter_trigger(incident);
					}
				}
			}
			
			gcRaw.l[new_incidents[i]] = data.l[new_incidents[i]];
		}
	}
	if(redo_all){
		$('#gameCenter_commentary').html(tmp.reverse().join(''));
		$('#gameCenter_incidents').html(tmp2.join(''));
		
	}else{
		$('#gameCenter_commentary').html(tmp.reverse().join('') + $('#gameCenter_commentary').html());
		if(redo_timeline_incidents){
			$('#gameCenter_incidents').html(tmp2.join(''));
		}
		for(var i in new_incidents){
			gameCenter_highlight($('#commentary_' + new_incidents[i]));
		}
	}

	
	gcRaw.ls = data.ls;
	
	//try_time_end('commentary');
	
	if(typeof(last_el) != 'undefined' && data.e.p.lst == 'livestats' && new_incidents.length > 0){
		redo_timeline_incidents = gameCenter_doTimeline(last_el);
	}
	
	if(redo_timeline_incidents){
		for(var id in gcIncidentsCalc){
			$('#incident_'+id).css('left', gameCenter_calcPos(gcIncidentsCalc[id],el_max,14));
		}
	}
	
}


function gameCenter_processData_players(data){
	//try_time('players');
	
	/*Test Data*/
	if(!object_test(data, 'e.ep_1.l') ||  !object_test(data, 'e.ep_2.l')){
		//try_warning('Lineup/players data not found');
		return false;
	}
	
	var grps = ['',1,1,1,1,5,9,7,8,9,10,13,13,13];
	var tmp_vis = [];
	
	for(var t=1; t<=2; t++){
		var tmp = {};
		
		if(!data.e['ep_'+t].p){data.e['ep_'+t].p = {};}
		var kit = '/ximg/default/kit/' + data.e['ep_'+t].p.kit + '/' + data.e['ep_'+t].pfk;
		
		for(var p in data.e['ep_'+t].l){
			if(isNumeric(p)){
				var player = data.e['ep_'+t].l[p];
				if(!tmp[grps[player.ltfk]]){tmp[grps[player.ltfk]] = [];}
				if(player.ltfk==10){player.sn = 'C';}
				
				
				if(object_test(data,'p.'+player.ref_pfk+'.p.p')){
					try{
						player.short_pos = gameCenter_labels['player_pos_'+data.p[player.ref_pfk].p.p];
					}catch(e){
						player.short_pos = data.p[player.ref_pfk].p.p.substr(0,2);
					}
				}
				
				//player.pos = '';
				if(player.pos != 0 && gcSettings.visualLineup){
					var pos = gameCenter_doPos(player.pos, t);
					player.pos_x = pos[0];
					player.pos_y = pos[1];
					player.side = (t==1)?'left':'right';
					player.what = 'style';
					player.kit = kit;
					tmp_vis.push(jTemplate({dom:'_player_lineup', data:player, sec_data:data}));
				}
				
				if( player.ltfk == 13 && player.epos >= 1 && player.epos <= 11  ){
				
					if (! tmp[grps[2]]) { tmp[grps[2]] = [];}
					tmp[grps[2]].push(jTemplate({dom:'_player_lineup_list', data:player, sec_data:data}));
				}
				else if( player.ltfk == 13 && player.epos >= 12 && player.epos <= 40  ){
				
					tmp[grps[5]].push(jTemplate({dom:'_player_lineup_list', data:player, sec_data:data}));
				}
				else{
				
					tmp[grps[player.ltfk]].push(jTemplate({dom:'_player_lineup_list', data:player, sec_data:data}));
				}
			}
		}
		
		for(var i in tmp){
			$('#gameCenter_lineup_'+t+'_grp_'+grps[i]).html(tmp[i].join(''));
		}
		
	}
	if(gcSettings.visualLineup){
		document.getElementById('gameCenter_lineup_visual').innerHTML = tmp_vis.join('');
	}
	$('#gameCenter_lineup_1').children().show();
	$('#gameCenter_lineup_2').children().show();
	$('.player_list:empty').parent().hide();
	
	//try_time_end('players');
}

function gameCenter_elapsed(data){
	if(data.e.st === 'inprogress'){
		var diff = false;
		
		if(typeof(livescore_data) !== 'undefined'){
			
			if(object_test(livescore_data, data.e.efk+'.el')){
				diff = parseInt(livescore_data[data.e.efk].el);
			}
		}
		if(!diff){
			var server_date = Date.parse(get_server_time());
			
			if(data.e.stlbl === 'secondHalf'){
				var start_date = Date.parse(data.e.p.g2hs.replace(/\-/g, '/'));
				diff = parseInt((server_date - start_date)/1000/60+45);
				if(diff>90){diff=90;}
			}else{
				var plus = 0;
				var start_date = Date.parse(data.e.p.gs.replace(/\-/g, '/'));
				diff = parseInt((server_date - start_date)/1000/60);
				if(diff>45){diff=45;}
			}
			
			if(diff<1){diff=1;}
		}
		return diff;
		
		
	}else if(data.e.st === 'finished'){
		if(data.e.stlbl === 'finishedAET'){
			return 120;
		}else if(data.e.stlbl === 'finishedAP'){
			return 120;
		}else{
			return 90;
		}
	}else{
		return 0;
	}
}

function gameCenter_doTimeline(el){
	
	if(el===false){
		this.el_max=0;
		return false;
	}
	$('#gameCenter_status').html(el+'\'');
	if(gcRaw.e.st === 'inprogress'){
		
		$('#e_'+$('#gameCenter').data('eventFK')).find('.status').html(el + '\'');
	}
	
	el=(el>120)?120:el;
	var el_max = 45;
	if(!this.el_max){this.el_max=0;}
	
	if(el>45){el_max=90;}
	if(el>90){el_max=120;}
	
	
	
	$('#gameCenter_timeline_front').css('width', gameCenter_calcPos(el,el_max,0));
	$('#gameCenter_timeline_pulse').css('left', gameCenter_calcPos(el,el_max,0));
	
	if(el_max != this.el_max){
		this.el_max = el_max;
		gameCenter_doTimelineBoxes(this.el_max);
		
		if(el_max==90){
			var tmp = '<div class="gameCenter_timeline_seperator"></div>';
			$('#gameCenter_timeline_wrapper').find('.gameCenter_timeline_seperator').remove();
			$('#gameCenter_timeline_wrapper').append(  $(tmp).css('left','50%' ));
		}else if(el_max==120){
			var tmp = '<div class="gameCenter_timeline_seperator"></div>';
			$('#gameCenter_timeline_wrapper').find('.gameCenter_timeline_seperator').remove();
			$('#gameCenter_timeline_wrapper').append(  $(tmp).css('left', gameCenter_calcPos(45,el_max,0) ));
			$('#gameCenter_timeline_wrapper').append(  $(tmp).css('left', gameCenter_calcPos(90,el_max,0) ));
		}
		return false;
	}else{
		return true;
	}
}

function gameCenter_doTimelineBoxes(el_max){
	//try_time('time boxes');
	var el_inc = (el_max>45)?10:5;
	var tmp = [];
	for(var el=0; el<=el_max; el=el+el_inc){
		//var pos = (Math.round(el/el_max*100*10)/10) - (Math.round(25/gcTimeWidth*100*10)/10);
		tmp.push('<li style="left:'+gameCenter_calcPos(el,el_max,35)+'" xstyle="left:'+gameCenter_calcPos(el,el_max,35)+'">'+el+'</li>');
	}
	//try_info('do timeline boxes: '+el_max);
	$('#gameCenter_timeline_blocks').html(tmp.join(''));
	
	for(var id in gcIncidentsCalc){
		$('#incident_'+id).css('left', gameCenter_calcPos(gcIncidentsCalc[id],el_max,14));
	}
	
	//try_time_end('time boxes');
}


function gameCenter_calcPos(el, el_max, el_width){
	return (Math.round(el/el_max*100*10)/10) - (Math.round((el_width/2)/gcTimeWidth*100*10)/10) + '%';
}


function gameCenter_getLastName(fk, data){
	if(object_test(data,'p.'+fk+'.n')){
		return '<span class="'+data.p[fk].t+'" pfk="'+fk+'">' + data.p[fk].n.split(' ')[data.p[fk].n.split(' ').length-1] + '</span>';
	}else{
		return '<span class="undefined">-</span>';
	}
}
function gameCenter_getName(fk, data){
	if(gc_translate && gc_translate.p && gc_translate.p[fk]){
		return gc_translate.p[fk];
	}
	if(object_test(data,'p.'+fk+'.n')){
		return '<span class="'+data.p[fk].t+'" pfk="'+fk+'">'+data.p[fk].n+'</span>';
	}else{
		return '<span class="undefined">-</span>';
	}
}

function gameCenter_getGbl(gbl_var, key, default_val){
	if(!gbl_var){return (default_val)?default_val:'UNKNOWN';}
	if(!gbl_var[key]){return (default_val)?default_val:'UNKNOWN';}
	return gbl_var[key];
};

var simulate_match_nr = -1;
function simulate_match(){
	simulate_match_nr++;
	if(!gcRaw){
		gameCenter_get(simulate_match_nr);
	}else{
		gameCenter_get(simulate_match_nr);
		//gameCenter_processData(gcRaw, true);
	}
	gcTimer = setTimeout(simulate_match, 500);
}

function try_timeline(){
	if(!this.el){this.el=0;}
	gameCenter_doTimeline(this.el);
	this.el++;
	if(this.el<121){
		setTimeout(try_timeline, 120);
	}else{
		//try_info('stop at '+this.el);
	}
}


function gameCenter_tryLiveTips(){
	/*Check if request is complete*/
	if(gcRequest2.readyState==4 || gcRequest2.readyState=='complete'){
		var tmp_data = gcRequest2.responseText;
		if(gcRequest2.status != 200){
		}else if(tmp_data===false || tmp_data===null || tmp_data===''){
			$('#btn_gameCenter_liveTips_wrapper, #gc_button_livetips').addClass('disabled');
		}else{
			var tmp = function(){gameCenter_liveTips(tmp_data, gcInit);}
			tmp();
		}
	}	
}

function gameCenter_liveTips(data, init){
	
		if(data != ''){
			$('#btn_gameCenter_liveTips_wrapper, #gc_button_livetips').removeClass('disabled');
		}else{
			$('#btn_gameCenter_liveTips_wrapper, #gc_button_livetips').addClass('disabled');
		}
		
		if(init){
			//try_time('LiveTips');
			$('#gameCenter_liveTips').html(data);
			//try_time_end('LiveTips');
		}else{
			
			
			var livetips = $(data);
			var old_livetips = $('#gameCenter_liveTips').find('li');
			
			if( old_livetips.length != livetips.length ){
				//try_time('LiveTips');
				
				livetips = $.makeArray(livetips).reverse();
				
				var popup = '';
				
				for(var x=old_livetips.length; x<= livetips.length-1; x=x+1){
	
					$('#gameCenter_liveTips').prepend(livetips[x]);
					
					if( $(livetips[x]).hasClass('has_trigger') ){
						gameCenter_highlight($(livetips[x]));
						if(!$('#btn_gameCenter_liveTips_wrapper').hasClass('active')){
							popup += $(livetips[x]).html();
						}
					}
				}
				
				if(popup){
					gameCenter_highlight($('#btn_gameCenter_liveTips_wrapper'));
					jTooltip(document.getElementById('btn_gameCenter_liveTips_wrapper'), '<div class="livetips_popup" id="livetips_popup">' + popup + '</div>', 'top', 'livetips');
					$.doTimeout('new_livetips', 10000, function(){
						jTooltip(false, 'livetips');
					})
				}
				//try_time_end('LiveTips');
			}
		}
		
		
	//});
}

function gameCenter_updateButtons(data){
	if(data.e.ep_1.l.length<11 && data.e.ep_2.l.length<11){
		$('#btn_gameCenter_lineup_list_wrapper, #btn_lineup, #gc_button_lineup').addClass('disabled');
	}else{
		$('#btn_gameCenter_lineup_list_wrapper, #btn_lineup, #gc_button_lineup').removeClass('disabled');
		
		if(!array_filter(gcRaw.e.ep_1.l,'ltfk','1,2,3,4').length && !array_filter(gcRaw.e.ep_2.l,'ltfk','1,2,3,4').length){
			$('#btn_gameCenter_lineup_visual_wrapper, #gc_button_lineup').addClass('disabled');
		}else{
			$('#btn_gameCenter_lineup_visual_wrapper, #gc_button_lineup').removeClass('disabled');
		}
	}
	
}

function gameCenter_highlight(jqDom, interval){
	interval = (interval)?interval:10000;
	jqDom.addClass('highlight');
	$.doTimeout(interval, function(){
		jqDom.removeClass('highlight');
	});
}


function gameCenter_doPos(pos, team){
	pos = pos.toString();
	
	var posX = (pos.length===3) ? pos.substr(0,2) : pos.substr(0,1);
	var posY = (pos.length===3) ? pos.substr(2,1) : pos.substr(1,1);
	
	if(team===1&&posX>1){
		posY = Math.abs(posY-10)
	}
	
	posX = (posX-1)*10;
	posY = (posY-1)*12.5;
	
	
	
	if(posX===0 && posY===0){posY=50;}
	
	if(!this.boxSize){this.boxSize=[115,120];}
	if(!this.boxPadding){this.boxPadding=15;}
	if(!this.playerSize){this.playerSize=[16,16];}
	
	var playerX = (boxSize[0]-boxPadding*2)/100*posX-(playerSize[0]/2)+boxPadding;
	var playerY = (boxSize[1]-boxPadding*2)/100*posY-(playerSize[1]/2)+boxPadding;
	
	return [playerX, playerY];
}

/*Initialize Game Center*/
function gameCenter_init(){
	$('#gameCenter_wrapper').removeClass().addClass(gcSettings.sport);
	if(gcSettings.commentaryFilter){
		$('#gameCenter_commentary')
		.delegate('span.athlete', 'click', function(e){
			$('#gameCenter_commentary').find('li').hide().end()
			.find('.p1'+$(this).attr('pfk')+', .p2'+$(this).attr('pfk')+'').show();
			$('#gameCenter_removeFilter').css('visibility','visible').find('span').html('Filtering events by: ' + $(this).html());
		});
		$('#gameCenter_removeFilter').find('a').click(function(){
			$('#gameCenter_removeFilter').css('visibility','hidden');
			$('#gameCenter_commentary').find('li').show();
		});
	}
}

/*String To Date*/
String.prototype.toDate = function(){
	var string = this.toString();
	var date_types = [
		{'pattern': new RegExp("(\\d{4})-(\\d{2})-(\\d{2}) (\\d{2}):(\\d{2}):(\\d{2})")},
		{'pattern': new RegExp("(\\d{4})-(\\d{2})-(\\d{2}) (\\d{2}):(\\d{2})")},
		{'pattern': new RegExp("(\\d{4})-(\\d{2})-(\\d{2})")}
	];
	var date = false;
	var i;
	for(i in date_types){
		if(date_types.hasOwnProperty(i)){
			date = string.match(date_types[i].pattern);
			if(date){date.shift(); break;}
		}
	}
	if(date){
		return new Date(date[0], date[1]-1, date[2], date[3]||0, date[4]||0, date[5]||0);
	}else{
		return new Date();
	}
};

/*Date Diff*/
Date.prototype.diff = function(date, kind){
	switch(kind){
		case 'd':
			return parseInt(((this-date) / 1000 / 60 / 60 / 24), 10);
		case 'h':
			return parseInt(((this-date) / 1000 / 60 / 60), 10);
		case 'm':
			return parseInt(((this-date) / 1000 / 60), 10);
		case 's':
			return parseInt(((this-date) / 1000), 10);
		case 'standard':
			var hours = ((this-date) / 1000 / 60 / 60);
			var minutes = (hours-Math.floor(hours))*60;
			var seconds = (minutes-Math.floor(minutes))*60;
			return [hours,minutes,seconds].map(Math.floor);
			break;
		case 'all':
			var days = ((this-date) / 1000 / 60 / 60 / 24);
			var hours = (days-Math.floor(days))*24;
			var minutes = (hours-Math.floor(hours))*60;
			var seconds = (minutes-Math.floor(minutes))*60;
			var milliseconds = (seconds-Math.floor(seconds))*1000;
			return [days,hours,minutes,seconds,milliseconds].map(Math.floor);
			break;
		default: /*Default 'd' (days)*/
			return parseInt(((this-date) / 1000 / 60 / 60 / 24), 10);
	}
};

/*Add Leading Zero (String)*/
String.prototype.leadZero = function(count){
	count=count||2;
	var string = this.toString();
	count = count - string.length;
	var i;
	for(i=1; i<=count; i=i+1){string='0'+string;}
	return string;
};

/*Add Leading Zero (Number)*/
Number.prototype.leadZero = function(count){return this.toString().leadZero(count);};
function leadZero(val){return val.leadZero(2);}
