var importScript = function (uri, callback) {

   var s = document.createElement('SCRIPT');
       s.setAttribute('type', 'text/javascript');
       s.setAttribute('src', uri);
       
   if (callback) {
      if (document.all && !window.opera) {
         s.onreadystatechange = function () {if (this.readyState == 'loaded' || this.readyState == 'complete') { callback(); }};
      } else {
         s.onload = callback;
      }
   }
   
   document.getElementsByTagName('HEAD')[0].appendChild(s);
   
   return s;
};

Date.prototype.toASCTime = function ()
{
   var t = this.toGMTString();
   var p = t.replace(/\,/g, '').split(/\s+/);

   return p[0] + ' ' + p[2] + ' ' + p[1].replace(/^0/, ' ') + ' ' + p[4] + ' ' + p[3];
};

function profile2email (str)
{
   var match = str.match(/([\w\-]+)\.([\w]+)(\.yuku\.com)?|$/i);
   var name = match[1].replace(/-/g, ' ');
   var address = match[1] + '@' + match[2] + '.yuku.com';

   return {name: name, email: address};
};

var saveMessages = function ()
{
   if ($('ol#messages').length < 1)
      return alert('You must be on an a message list page to export');
   
   var root, xml;
   
   if ($('#messages_inbox').length)
      root = 'inbox';
   else if ($('#messages_sent').length)
      root = 'sent';
   else if ($('#messages_draft').length)
      root = 'drafts';
   
   if (!root)
      return alert('You must be on an a message list page to export');
   
   mbx = '';
   
   $('ol#messages > li').each(function (i) {
      var msg = '';
      
      var id = $('input.star', this).attr('value');
      var star = $('input.star', this).attr('src').indexOf('star_on') != -1;
      
      var from = $.trim($('span.sender a:eq(0)', this).attr('href'));
      var to = $.trim($('span.receiver a:eq(0)', this).attr('href')) || $.trim($('span.receiver', this).text().replace(/to\:\s+/gi, ''));
      
      var subject = $.trim($('span.subjectinfo a:eq(0)', this).text());
      
      var date = $.trim($('div.date', this).text().replace(/([0-9]+)\.([0-9]+)\.([0-9]+)/, '$1/$2/20$3').replace(/(A|P)M/, ''));
      
      var body = $.trim($('div.message-text', this).html());
      
      // parse some stuff
      if (date.indexOf('/') == -1)
      {
         var time = date.split(/\:/);
         var date = new Date();
         
         date.setHours(time[0]);
         date.setMinutes(time[1]);
      }
      else
      {
         date = new Date(date);
         date.setHours(12);
         date.setSeconds(3600 - i);
      }
         
      from = profile2email(from);
      to = profile2email(to);
      
      msg += "From " + from.email + " " + date.toASCTime() + "\n";
      msg += "X-Mozilla-Status: 000" + (star ? 5 : 1) + "\n";
      msg += "X-Mozilla-Status2: 00000000\n";
      msg += "Content-Disposition: inline\n";
      msg += "Content-Transfer-Encoding: binary\n";
      msg += "Content-Type:  text/html; charset=\"UTF-8\"\n";
      msg += "MIME-Version:  1.0\n";
      msg += "Date: " + date.toGMTString() + "\n";
      msg += "From: " + from.name + " <" + from.email + ">\n";
      msg += "To: " + to.email + " (" + to.name + ")\n";
      msg += "Subject: " + subject + "\n";
      msg += "Message-Id: <" + id + "@yuku.com>\n";
      msg += "\n";
      msg += "<html>\n<head>\n<title>" + subject + "</title>\n</head>\n";
      msg += "<body>\n";
      msg += body;
      msg += "\n</body>\n</html>\n\n\n";
      
      mbx += msg;
   });
   
   if (document.implementation && document.implementation.createDocument)
         window.open('data:text/plain;charset=utf-8,' + escape(mbx), 'mbx', 'height=600,width=800,menubar=yes,scrollbars=yes,resizable=yes');
   else {
      alert('Unable to open document as new window. Copy and paste this to new file...');
      document.write('<pre>' + xml.replace(/\</g, '&lt;').replace(/\>/g, '&gt;') + '</pre>');
   }
};

importScript('http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js', saveMessages);
