var idEmail=0;
var cuenta="";
var fecha;
var mailtimer;
var relojtimer;
var lastEmail=0;

$(document).ready(function(){
	$('#preloader').hide();
	checkSession();
	
	$('#form1').submit(function() {
		if($('#txt_account').val()!="")
			createAccount($('#txt_account').val());
		else
			showError(1);
		return false;
	});
	$('#btn_aleatoria').click(function() {
		createAccount('');
	});
});

function checkSession(){
	$('#preloader').show();
	$.getJSON(
		'js/ajax.php?action=checkSession',
		function(data){
			$('#preloader').hide();
			if(data.error==0)
				loadAccount(data.account, data.idEmail, data.fecha, data.offset);
		}
	);
}

function createAccount(account){
	$('#preloader').show();
	$.getJSON(
		'js/ajax.php?action=addAccount&account='+account,
		function(data){
			$('#preloader').hide();
			if(data.error!=0)
				showError(data.error);
			else
				loadAccount(data.account, data.idEmail, data.fecha, data.offset);
		}
	);
}

function setFecha(f, offset){
	fecha=new Date();
	
	var str=new String(f);
	var temp=str.split(" ");
	var dia=temp[0].split("-");
	var hora=temp[1].split(":");
	
	//calculo la diferencia horaria sobre horas GMT
	var miFecha = new Date(dia[0], dia[1]-1, dia[2], hora[0], hora[1], hora[2]).getTime();
	miFecha=miFecha-(offset * 1000); //en gmt
	
	var ahora=new Date().getTime();
	var of=new Date().getTimezoneOffset() * 60;
	ahora=ahora + (of * 1000);

	//escojo la fecha y le vuelvo a sumar el desfase horario
	//tengo que escoger por si la del servidor y la del cliente no estan sincronizadas
	if(miFecha<=ahora)
		fecha.setTime(miFecha-(of*1000));
	else
		fecha.setTime(ahora-(of*1000));
}
function updateWatch(){
	var maxtime=60*60;
	miFecha = fecha.getTime()/1000;
	ahora=new Date().getTime()/1000;
	
	var dif=maxtime-(Math.floor(ahora-miFecha));
	if(dif<0){
		dif=0;
	}
	var minutos=Math.floor(dif/60);
	var segundos=dif-(minutos * 60);
	
	if(minutos<10)
		minutos="0"+minutos;
	if(segundos<10)
		segundos="0"+segundos;

	$('#reloj').html(minutos+":"+segundos);
	if(dif>0)
		relojtimer=setTimeout("updateWatch()",1000);
}
function updateTime(){
	$('#preloader').show();
	$.getJSON(
		'js/ajax.php?action=updateTime',
		function(data){
			$('#preloader').hide();
			setFecha(data.fecha);
			updateWatch(); 
		}
	);
}

function deleteEmail(id){
	$('#preloader').show();
	$.getJSON(
		'js/ajax.php?action=deleteEmail&id='+id,
		function(data){
			$('#preloader').hide();
		}
	);
	$('#postEmail'+id).remove();
}

function loadAccount(account, id, fech, offset){
	idEmail=id;
	setFecha(fech, offset);
	cuenta=account;
	
	var s=new String(account);
	var p=s.indexOf("@");
	var nomacc=s.substr(0,p);

    htm='<h2 class="title"><a href="javascript:void(0)">Buzón '+account+' ';
    htm+='<img id="d_clip_button" class="my_clip_button iconostats" src="images/page_copy.gif" alt="Copiar" title="Copiar al portapapeles" />';
    htm+='<span id="reloj">59:59</span></a></h2>';
    htm+='<p class="byline"><img src="images/ajax-loader.gif" id="preloader" class="preloader" style="margin-bottom:7px;margin-right:10px;vertical-align: middle;"/><a href="rss.php?cuenta='+nomacc+'"><img src="images/rss.png" alt="rss" title="Ver RSS"  style="border:0;"/></a></p>';
    htm+='<div class="entry">';
    htm+='<p>Esperando correos.<br/>Se actualizarán automáticamente cada 30 segundos, simplemente debes mantenerte a la espera.</p>';
    htm+='<p>Recuerda que la cuenta es <strong>válida durante una hora</strong>, después de ese tiempo se eliminará automáticamente.<br/>¿Se acaba el tiempo y aún no has recibido tu correo? <a href="javascript:void(0)" id="restartTime">Reinicia el contador de tiempo</a></p>';
	$('#contenido1').html(htm);
	$('#contenido2').remove();
	
	$('#restartTime').click(function(){
		updateTime();
	});
	ZeroClipboard.setMoviePath( "http://usaytira.me/images/ZeroClipboard.swf");
	clip = new ZeroClipboard.Client();
	clip.setHandCursor( true );
	clip.setText(account);
	clip.glue("d_clip_button");
	updateWatch();
	$('#preloader').hide();
	fetchmail();
	$.scrollTo(0);
}
function showHide(id){
	$('#email'+id).toggle("slow");
}
function fetchmail(){
	$('#preloader').show();
	$.getJSON(
			'js/ajax.php?action=fetchMail&lastId='+lastEmail,
			function(data){
				$('#preloader').hide();
				if(data==4){
					str='<h2 class="title"><a href="javascript:void(0)">Tu cuenta ha caducado y todos los mensajes han sido eliminados.</a></h2><p>&nbsp;</p>';
					$('#banner1').before(str);
				}else{
					if(data.length>0){
						var l=data.length;
						var i=0;
						var str="";
						for(i=0; i<l; i++){
							m=data[i];
							str='<div class="post" id="postEmail'+m.id+'">';
							str+='<h2 class="title"><a href="javascript:void(0)" id="showemail'+m.id+'">'+m.subject+'</a></h2>';
							str+='<p class="byline"><a href="javascript:void(0)" id="deleteemail'+m.id+'"><img src="images/delete.png" alt="delete" title="Eliminar email"  style="border:0;"/></a></p>';
							str+='<div class="entry email" id="email'+m.id+'">';
							str+='<p class="email">';
							str+='<strong>De:</strong> '+m.de+'<br/>';
							str+='<strong>Para:</strong> '+m.para+'<br/>';
							str+='<strong>Fecha:</strong> '+m.fecha+'<br/>';
							str+=m.body+'</p>';
							str+='</div>';
							str+='</div>';
							
							lastEmail=m.id;
							//$('#content').append(str);
							$('#banner2').before(str);
							
							$('#showemail'+m.id).click(function() {
								var s=$(this).attr("id");
								s=s.replace("showemail", "");
								showHide(s);
							});
							$('#deleteemail'+m.id).click(function() {
								var s=$(this).attr("id");
								s=s.replace("deleteemail", "");
								deleteEmail(s);
							});
							$.scrollTo('#showemail'+m.id);
						}
					}
					mailtimer=setTimeout("fetchmail()",30000);
				}
			}
		);
}

function showError(msg){
	alert(errores[msg]);
}

var errores=new Array();
errores[1]="Introduce el nombre de la cuenta";
errores[2]="La cuenta indicada ya existe para otro usuario, escoge otra";
errores[3]="Su IP ha sido bloqueada por abuso, no puede crear cuentas.";
errores[4]="Su cuenta ha caducado";
errores[5]="La cuenta indicada tiene un formato no válido";
