//Name   get_time_from_submit_to_sign_off
//Description   Used to calculate the time elapsed or time until signed off
//Type   Task / Custom Field Value

String elapsedTime = "";

if (task.getSubmitdate().getTime().getTime()!=task.getParent().getSubmitdate().getTime().getTime()){
long timeInSeconds = ((new java.util.Date()).getTime() - task.getSubmitdate().getTime().getTime())/1000;

Collection messages = task.getMessages();
Collections.reverse(messages);

for(Iterator it = messages.iterator(); it.hasNext();) {

com.trackstudio.secured.SecuredMessageBean smb = (com.trackstudio.secured.SecuredMessageBean)it.next();

  if (smb.getMstatus().getName().equals("Signed off on Live")) {
     java.util.Calendar msgDate = smb.getTime();
     timeInSeconds = (msgDate.getTime().getTime()- task.getSubmitdate().getTime().getTime())/1000;
     break;
  }
 }

   long days, hours, minutes, seconds;
   days = timeInSeconds / 3600 / 24;
   timeInSeconds = timeInSeconds - (days * 3600 * 24);
   hours = timeInSeconds / 3600;
   timeInSeconds = timeInSeconds - (hours * 3600);
   minutes = timeInSeconds / 60;
   timeInSeconds = timeInSeconds - (minutes * 60);
   seconds = timeInSeconds;

   String paddedValue = days + "";
   while (paddedValue.length() < 3)
   {
   paddedValue = "0" + paddedValue ;
   }

   elapsedTime = paddedValue + "d "; //+ hours + "hr " + minutes + "mins";
   // + seconds + " second(s)";

   paddedValue = hours + "";
   while (paddedValue.length() < 2)
   {
   paddedValue = "0" + paddedValue ;
   }

   elapsedTime = elapsedTime + paddedValue + "hr ";

   paddedValue = minutes + "";
   while (paddedValue.length() < 2)
   {
   paddedValue = "0" + paddedValue ;
   }

   elapsedTime = elapsedTime + paddedValue + "mins";


} else {
   elapsedTime = "000d 00hr 00mins";

}
return elapsedTime;