// epochconverter.com - misja.com

function EpochToHuman(){
	var inputtext = (document.ef.TimeStamp.value*1);
	var epoch=inputtext;
	var outputtext = "";
	var extraInfo = 0;
	if(inputtext > 1000000000000){
		outputtext += "<b>Assuming that this timestamp is in milliseconds:</b><br/>";	
		epoch=Math.round(inputtext/1000);
	}else{
		if(inputtext > 10000000000)extraInfo=1;
		inputtext=(inputtext*1000);
	}
	var datum = new Date(inputtext);
	var localeString = datum.toLocaleString();
	var localeStringEnd = localeString.search(/GMT/i);
	if(localeStringEnd>0){ localeString=localeString.substring(0,localeStringEnd); }
	outputtext += "<b>GMT</b>: "+datum.toGMTString()+"<br/><b>Your time zone</b>: <span title=\""+datum.toLocaleString()+"\">"+localeString+"</span> <a title=\"convert to other time zones\" href=\"http://www.epochconverter.com/epoch/timezones.php?epoch="+epoch+"\">"+localTimezone(datum)+"</a>";
	if(extraInfo)outputtext += "<br/>This conversion uses your timestamp in seconds. Remove the last 3 digits if you are trying to convert milliseconds.";
	outputtext += "<hr class=\"lefthr\">";
	document.getElementById('result1').innerHTML = outputtext;
}
	
function HumanToEpoch(){
    	var datum = new Date(Date.UTC(document.hf.yyyy.value,document.hf.mm.value-1,document.hf.dd.value,document.hf.hh.value,document.hf.mn.value,document.hf.ss.value));
    	document.getElementById('result2').innerHTML = "<b>Epoch timestamp</b>: "+(datum.getTime()/1000.0)+"<br>Human time:  "+datum.toGMTString();
}

function HumanToEpochTZ(){
	var tz = $('#hf select[name=tz]').val();
	var datum;
	if(tz==2){ // local time
		datum = new Date(document.hf.yyyy.value,document.hf.mm.value-1,document.hf.dd.value,document.hf.hh.value,document.hf.mn.value,document.hf.ss.value);
	}else{
		datum = new Date(Date.UTC(document.hf.yyyy.value,document.hf.mm.value-1,document.hf.dd.value,document.hf.hh.value,document.hf.mn.value,document.hf.ss.value));
	}
    	var resulttext = "<b>Epoch timestamp</b>: "+(datum.getTime()/1000.0);
	if(tz==2){
		resulttext += "<br/>Human time (your time zone): "+datum.toLocaleString();
		resulttext += "<br/>Human time (GMT):  "+datum.toGMTString();
	}else{
		resulttext += "<br/>Human time (GMT):  "+datum.toGMTString();
		resulttext += "<br/>Human time (your time zone): "+datum.toLocaleString();
	}
	document.getElementById('result2').innerHTML=resulttext;
}

function HumanToEpoch2(){
   	var datum = new Date(document.fs.DateTime.value);
   	document.getElementById('result3').innerHTML = "<b>Epoch timestamp</b>: "+(datum.getTime()/1000.0);
}
	
function TimeCounter(){
	var t = parseInt(document.tc.DateTime.value);
	var days = parseInt(t/86400);
	t = t-(days*86400);
	var hours = parseInt(t/3600);
	t = t-(hours*3600);
	var minutes = parseInt(t/60);
	t = t-(minutes*60);
	var content = "";
	if(days)content+=days+" days";
	if(hours||days){ if(content)content+=", "; content+=hours+" hours"; }
	if(content)content+=", "; content+=minutes+" minutes and "+t+" seconds.";
	document.getElementById('result4').innerHTML = content;
}

var clockActive=1;
var timerID=0;
function now(){
	var today = new Date();
	document.getElementById('now').innerHTML = Math.round(today.getTime()/1000.0);
	if(clockActive){timerID = setTimeout("now()", 1000);}
}
function startClock() { clockActive=1; now(); }
function stopClock() { clockActive=0; clearTimeout(timerID); }

var currentBeginEnd = "month";
function updateBe(a){
	if(a!=currentBeginEnd){
		if(a=="day"){document.br.mm.disabled=0;document.br.dd.disabled=0;}
		if(a=="month"){document.br.mm.disabled=0;document.br.dd.disabled=1;}
		if(a=="year"){document.br.mm.disabled=1;document.br.dd.disabled=1;}
		currentBeginEnd = a;
		beginEnd();
	}
}
function beginEnd(){
	var tz = $('#br select[name=tz]').val();
	var outputText="<table cellpadding=2 border=0><tr><td></td><td><b>Epoch</b></td><td>&nbsp;&nbsp;<b>Human date</b></td></tr><tr><td>Start of "+currentBeginEnd+":&nbsp;</td><td>";
	var mon=0;var day=1;var yr=document.br.yyyy.value;
	if(currentBeginEnd!="year"){ mon = document.br.mm.value-1; }
	if(currentBeginEnd=="day"){ day = document.br.dd.value; }
   	var startDate;
	if(tz==2){ startDate = new Date(yr,mon,day,0,0,0); }else{ startDate = new Date(Date.UTC(yr,mon,day,0,0,0)); }
    	if(currentBeginEnd=="year")yr++;
    	if(currentBeginEnd=="month")mon++;
    	if(currentBeginEnd=="day")day++;
	var endDate;
	if(tz==2){ endDate = new Date(yr,mon,day,0,0,-1); }else{ endDate = new Date(Date.UTC(yr,mon,day,0,0,-1)); }
   	outputText += (startDate.getTime()/1000.0)+"</td><td>&nbsp;&nbsp;";
	if(tz==2){ outputText+= startDate.toLocaleString(); }else{ outputText+= startDate.toGMTString(); }
	outputText += "</td></tr>";
   	outputText += "<tr><td>End of "+currentBeginEnd+":&nbsp;</td><td>";
    	outputText += (endDate.getTime()/1000.0)+"</td><td>&nbsp;&nbsp;";
	if(tz==2){ outputText+= endDate.toLocaleString(); }else{ outputText+= endDate.toGMTString(); }
	outputText += "</td></tr>";
	document.getElementById('resultbe').innerHTML = outputText;    	
}

function addbookmark(){ 
	if(document.all)window.external.AddFavorite(bookmarkurl, bookmarktitle);
}

function localTimezone(d){
	if(!d){ d = new Date(); } 
	var gmtHours = -d.getTimezoneOffset()/60; var xc=""; if(gmtHours>-1)xc="+";
	return "GMT" +xc+gmtHours;
}

function homepageStart(){
	now();
	var today = new Date();
	$('#ef input:text[name=TimeStamp]').val(Math.round(today.getTime()/1000.0));
	if(preferredtz==2){
		$('select[name=mm],input:text[name=mm]').val(today.getMonth() + 1);
		$('input:text[name=yyyy]').val(today.getFullYear());
		$('input:text[name=dd]').val(today.getDate());
		$('input:text[name=hh]').val(today.getHours());
		$('input:text[name=mn]').val(today.getMinutes());		
	}else{
		$('select[name=mm],input:text[name=mm]').val(today.getUTCMonth() + 1);
		$('input:text[name=yyyy]').val(today.getUTCFullYear());
		$('input:text[name=dd]').val(today.getUTCDate());
		$('input:text[name=hh]').val(today.getUTCHours());
		$('input:text[name=mn]').val(today.getUTCMinutes());		
	}
	
	$('input:text[name=ss]').val(today.getUTCSeconds());
	$('#fs input:text[name=DateTime]').val(today.toGMTString());
	
	$(document).keypress(function(e){
		if (!$(e.target).is('input#rcinput')) {
			if (!(e.ctrlKey || e.altKey || e.metaKey)){
				if (String.fromCharCode(e.which).match(/[a-zA-Z]/))e.preventDefault();
				switch(e.which){
					case 101: case 69: kp('ecinput'); jumpTo('top'); break; // "e"
					case 99: case 67: emptyFields(); break; // "c"
					case 104: case 72: kp('hcinput'); jumpTo('top'); break; // "h" 
					case 114: case 82: kp('rcinput'); jumpTo('fs'); break; // "r" 
					case 115: case 83: kp('scinput'); jumpTo('tchead'); break; // "s" 
					case 121: case 89: $('input:radio[name=cw]:nth(0)').attr('checked',true); updateBe('year'); jumpTo('brhead'); kp('ycinput'); break; // "y"
					case 109: case 77: $('input:radio[name=cw]:nth(1)').attr('checked',true); updateBe('month'); jumpTo('brhead'); 
						if(dateformat=="3"){ kp('ycinput'); }else{ kp('mcinput'); } break; // "m"
					case 100: case 68: $('input:radio[name=cw]:nth(2)').attr('checked',true); updateBe('day'); jumpTo('brhead'); 
						if(dateformat=="2"){ kp('dcinput'); }else if(dateformat=="3"){ kp('ycinput'); }else{ kp('mcinput'); } 
						break; // "d"
				}
			}			
		}
	});
}

function timezoneStart(){
	$(document).keypress(function(e){
		if (!(e.ctrlKey || e.altKey || e.metaKey)){
			if (String.fromCharCode(e.which).match(/[a-zA-Z]/))e.preventDefault();
			switch(e.which){
				case 101: case 69: kp('ecinput'); jumpTo('top'); break; // "e"
			}			
		}			
	});
}

function jumpTo(toid){
	var new_position = $('#'+toid).offset();
	window.scrollTo(new_position.left,new_position.top);
}

function emptyFields(){
	$('input:text').val("");
}

function kp(id){ $('#'+id).focus(); $('#'+id).select(); }
