importPackage(com.ebasetech.xi.api);
importPackage(com.ebasetech.xi.services);

importPackage(java.lang);
importPackage(javax.mail);
importPackage(javax.mail.internet);
importPackage(javax.mail.search);
importPackage(org.jsoup);


var share = '/poc';
   
// set up properties object
var session = Session.getDefaultInstance(properties);
var store = session.getStore("imaps");
//try {
   // try to connect to the mailbox and open for READ and WRITE
//   log('40#connect(' + imapsHost + ',' + imapsPort + ',' + user + share + ',' + password + ')');

   store.connect(imapsHost, imapsPort, user + sharedFolder, password);
   
   // get the receiving and processed folders
   var received = store.getFolder(receivedFolder);
	 var processed	= store.getFolder(processedFolder);
	 received.open(Folder.READ_WRITE);
   
   // get the list of inbox messages
		var messages = received.getMessages();
   // process the array of messages 
   for (var i = 0; i < messages.length; i++) 
   {
   	log("### processing emain #" + i);
			var message = messages[i];
			// hand control to workflow
			var json = processEmail(message);
			log("### email json ###");
			log(JSON.stringify(json, null, 5));
			var parameters = {
				emailJsonObj:json
			};
			log("### calling workflow");
			var jobId;
			var jobId = system.workflow.openJob('processRequestD', parameters)
			log("### jobId: " + jobId);

      // move the message to the processed folder and
      // then delete it form the receiving folder
				var msgArray = [];
				msgArray.push(message);
				received.copyMessages(msgArray, processed);
      	message.setFlag(Flags.Flag.DELETED, true);
   }  
     
//}
//catch (e) {
//   log(e);
//}
//finally{
   if(received){received.close(true);}
//   if(processed){processed.close(true);}
   if(store){store.close();}
//}
