/*
dispose.js
Copyright 2007 by Mark Percival - SquarePush, LLC
*/
if (window.XMLHttpRequest){ // try to create XMLHttpRequest
	XMLReq = new XMLHttpRequest();
    XMLMail = new XMLHttpRequest();
    }
if (window.ActiveXObject) {	// if ActiveXObject use the Microsoft.XMLHTTP
	XMLReq = new ActiveXObject("Microsoft.XMLHTTP");
    XMLMail = new ActiveXObject("Microsoft.XMLHTTP");
    }
	
window.onload=kickStart; // Setup the onload event

var genEmail = '';
var checkMailURL = 'checkemail.php?email=';
var checkMailLimit = 	250; //at 7 seconds this should be close to 30 minutes of checking
var getMailURL = 'email.php?id=';
var recievedMail = new Array;
var emailidArray = new Array;
var position = 0;
var emailCount = 0;
var interval;
var domain = 'dispose.it';
var XMLerror = 0;

    
function kickStart() {
    setEmail();
    startAutoCheck(true);
}

function setEmail(){
    var regex = new RegExp(/([a-zA-Z0-9]+)$/);
    var match = regex.exec(location.href);
    if(!match){
        genEmail = randomEmail(4);
    }
    else genEmail = match[1].substr(0,15);
    checkMailURL += genEmail;
    setHTML('emailaddress', genEmail +'@'+ domain + "<div class='custom'><a href='javascript:customemail()'>Personalizza Indirizzo</a></div>");
    copy(genEmail+"@"+domain);
}

function startAutoCheck(toggle) {
    if(toggle) {
        throbber(true,'Controllo Email');
        checkMail();
        interval = setInterval("checkMail()", 7000);
    }
    else clearInterval(interval);
}

function checkMail(){
    request(checkMailURL + '&c=' + Math.random(), checkMailProc);
	checkMailLimit--;
	if (checkMailLimit<=0){
		throbber(false, "<a href='javascript:startAutoCheck(true);'>Controllo Posta</a>");
		clearInterval(interval);
	}
}

function checkMailProc(){
    if (XMLReq.readyState==4 && XMLReq.status == 200) {
        if(XMLReq.responseText) emailidArray = XMLReq.responseText.split(",");
        if (emailidArray.length > emailCount) { 
            getMail(emailidArray[emailidArray.length - 1]);
            position = emailidArray.length;
            if(emailidArray.length>1) multiMail();
            }
        emailCount = emailidArray.length;
        //if(error=1){ throbber(true,'Checking Mail'); error=0; }//reset throbber after error
    }
    else if (XMLReq.readyState==4 && XMLReq.status != 200) throbber(true,'Error connecting, retrying...');
}

function multiMail() {
    var navoutput='';
    if ((emailidArray.length >= position)&&(position!=1)) navoutput = "<a href='javascript:prevMail();'>Prec</a> ";
    else navoutput += "Prev ";
    navoutput += position +' of '+ emailidArray.length;
    if (emailidArray.length > position)navoutput += " <a href='javascript:nextMail();'>Prossimo</a>";
    else navoutput += " Next";
    setHTML('emailnav', navoutput);
}

function prevMail(){
    getMail(emailidArray[position-2]);
    position--;
    multiMail();
}

function nextMail(){
    getMail(emailidArray[position]);
    position++;
    multiMail();
}

function getMail(emailid){
    requestMail('email.php?id='+emailid+'&email='+genEmail, getMailProc);
}

function getMailProc(){
    if (XMLMail.readyState==4) {
        XMLMail.responseText
        setHTML('content',XMLMail.responseText);
        startAutoCheck(false);
        throbber(false, "<a href='javascript:startAutoCheck(true);'>Controlla Arrivo Email</a>");
        autolink('content');
        document.title = "Dispose.it - Nuovo Messaggio Email";
    }
}

function request(url, callfunc) {
	if (XMLReq.readyState < 1 || XMLReq.readyState > 3) {
        XMLReq.open("GET", url, true);
    	// Set the onreadystatechange function
    	XMLReq.onreadystatechange = callfunc;
    	// Send
    	XMLReq.send(null); 
    }
}

function requestMail(url, callfunc) {
	XMLMail.open("GET", url, true);
	// Set the onreadystatechange function
	XMLMail.onreadystatechange = callfunc;
	// Send
	XMLMail.send(null); 
}


function setHTML(div, data)
{
	document.getElementById(div).innerHTML = data;
}

function throbber(toggle, msg) {
    if(toggle) setHTML('status',msg+" <img src='assets/throbber.gif' title='Throbber' />");
    if(toggle) document.title = "Dispose.it";
    else setHTML('status',msg);
}

function randomEmail(length)
{
   var email = "";

        /**
         * List of vowels and vowel sounds
         */
         var v = new Array('a', 'e', 'i', 'o', 'u', 'io', 'ia', 'ai' );

        /**
         * List of consonants and consonant sounds
         */
       var c = new Array('b', 'c', 'd', 'g', 'l', 'm',
                   'n', 'p', 'r', 's', 't', 'u', 'v',
                   'tr', 'cr', 'fr', 'dr', 'pr', 'st', 'sl', 'cl');
 
         for (x=0;x<length;x++) 
         {
        	  i = Math.floor(Math.random()*7);
        	  j = Math.floor(Math.random()*20);
            email +=  c[j] + v[i];
        }

        return email;

  /*chars = "abcdefghijkmnopqrstuvwxyz123456789";
  chars = "abcdefgilmnoprstuvz1234567890";
  var email = "";
  for(x=0;x<length;x++)
  {
    i = Math.floor(Math.random()*27);
    email += chars.charAt(i);
  }
  return email;
  */
}

function autolink(div) 
{   
    var hlink = /\s(ht|f)tp:\/\/([^ \,\:\!\)\(\"\'\<\>\f\n\r\t\v])+/g;
    document.getElementById(div).innerHTML = 
        document.getElementById(div).innerHTML.replace(hlink, function ($0){
            var s = $0
            if((s.charAt(s.length-1)=='.')||(s.charAt(s.length-1)==','))
                s = s.substring(0,s.length-1);
            return(s.link(s));
            }
         );
}


function customemail (submit) {
    if(submit) document.customemail.submit();
    else {setHTML('emailaddress',"\
        <form name='customemail' action='' method='get'><input name='email' class='email' type='text' size='8' onKeyPress='return letternumber(event)' />@" + domain
        +"<div class='custom'><a href='javascript:customemail(true)'>Invia</a></form>");
        document.customemail.email.select(); //in case its non-IE and no flash, you can still ctrl-c
        }

}

function letternumber(e)
{
var key;
var keychar;

if (window.event)
   key = window.event.keyCode;
else if (e)
   key = e.which;
else
   return true;
keychar = String.fromCharCode(key);
keychar = keychar.toLowerCase();

// control keys
if ((key==null) || (key==0) || (key==8) || 
    (key==9) || (key==13) || (key==27) )
   return true;

// alphas and numbers
else if ((("abcdefghijklmnopqrstuvwxyz0123456789").indexOf(keychar) > -1))
   return true;
else
   return false;
}

// Place the email address into flash
function copy(text2copy) {
   if (window.clipboardData) {
    window.clipboardData.setData("Text",text2copy);
  } else {
    var flashcopier = 'flashcopier';
    if(!document.getElementById(flashcopier)) {
      var divholder = document.createElement('div');
      divholder.id = flashcopier;
      document.body.appendChild(divholder);
    }
    document.getElementById(flashcopier).innerHTML = '';
    var divinfo = '<embed src="assets/_clipboard.swf" FlashVars="clipboard='+escape(text2copy)+'" width="0" height="0" type="application/x-shockwave-flash"></embed>';
    document.getElementById(flashcopier).innerHTML = divinfo;
  }
}

