var domains = [];
var lastid = 0;
var activeemail = '';
var timer;
$( document ).ready(function() {
$.ajaxSetup({ cache: false });
var email = window.location.hash.substr(1);
if(validateEmail(email))
loadAccount(email)
$.get("api.php?a=getdoms",function(data){
domains = data;
},"json")
});
function loadMail(email,id)
{
$.get("api.php?a=load&email="+email+"&id="+id,function(data){
//
if(data.status=="ok")
{
renderEmail(email,id,data.data)
}
},"json")
}
function renderEmail(email,id,data)
{
clearInterval(timer);
var btns = ''
for(att in data.parsed.attachments)
{
var filename=data.parsed.attachments[att].substr(14)
btns+=''+filename+' '
}
$("#main").html('
'+data.parsed.htmlbody+'':'')+' \
'+(btns!==''?'
Attachments '+btns:'')+'\
')
}
function loadAccount(email)
{
if(validateEmail(email))
{
activeemail = email;
lastid = 0;
changeHash(email)
$("#main").html('
'+email+' \
Refresh\
\
\
\
# \
Date \
From \
Subject \
\
\
\
\
\
')
timer = setInterval(updateEmailTable, 5000); //check for new mail every 5 seconds
updateEmailTable(); //and check now
}
else
{
changeHash("")
}
}
function updateEmailTable()
{
var email = activeemail;
var index = 1;
console.log("Checking mail for "+email)
$.get("api.php?a=list&email="+email+"&lastid="+lastid,function(data){
if(data.status=="ok")
{
if(Object.keys(data.emails).length>0)
for(em in data.emails)
{
if($("#nomailyet").length != 0)
$("#nomailyet").remove();
if(em>lastid) lastid = em;
var date = new Date(parseInt(em))
var datestring = date.getDate()+"."+date.getMonth()+"."+date.getFullYear()+" "+date.getHours()+":"+date.getMinutes();
var ed = data.emails[em]
$("#emailtable").append('\
\
'+(index++)+' \
'+datestring+' \
'+ed.from.toHtmlEntities()+' \
'+ed.subject.toHtmlEntities()+' \
');
}
else if(lastid==0 && $("#nomailyet").length == 0){
$("#emailtable").append('\
\
No emails received on this address (yet..) \
');
}
}
},"json")
}
function accessAccount()
{
var email = $("#email").val()
if(email)
loadAccount(email)
else alert("Enter an email you want to access")
}
function generateAccount()
{
var email = makeName()+'@'+domains[Math.floor(Math.random()*domains.length)];
loadAccount(email)
}
function changeHash(val)
{
if(history.pushState) {
history.pushState(null, null, '#'+val);
}
else {
location.hash = '#'+val;
}
}
function validateEmail(email) {
var re = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
return re.test(String(email).toLowerCase());
}
/**
* Convert a string to HTML entities
*/
String.prototype.toHtmlEntities = function() {
return this.replace(/./gm, function(s) {
return "" + s.charCodeAt(0) + ";";
});
};
/**
* Create string from HTML entities
*/
String.fromHtmlEntities = function(string) {
return (string+"").replace(/\d+;/gm,function(s) {
return String.fromCharCode(s.match(/\d+/gm)[0]);
})
};