//+------------------------------------------------------------------+
//|                                                  LocalTime.mq4   |
//|                                   Copyright © 2010, Robert Hill. |
//|                                                                  |
//| Plaqce local time on chart in ant corner                         |     
//+------------------------------------------------------------------+
#property  copyright "Copyright © 2010, Robert Hill"
#property  link      "None"

//---- indicator settings

#property  indicator_chart_window
#property  indicator_buffers 1

#property indicator_color1 Blue
#property indicator_width2 1

extern string C = "---Corner Position---";
extern string c0 = " 0 = Upper left";
extern string c1 = " 1 = Upper right";
extern string c2 = " 2 = Lower left";
extern string c3 = " 3 = Lower right";
extern int myCorner = 0;
extern int CommentY = 25;
extern int CommentTxtSize = 12;
extern color CommentColor = White;

extern string Object_ID = "LT_";
//---- buffers
double LineBuffer[];   

//---- variables

int Comment2Y;

string CommentStr, Comment2Str;
string CommentLabel, Comment2Label;


//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
   
//---- drawing settings
   SetIndexBuffer(0,LineBuffer);

   SetIndexStyle  (0,DRAW_LINE,STYLE_SOLID,2);
   SetIndexEmptyValue(1,EMPTY_VALUE);

// Text labels

       DeleteBadLabels();
       DeleteExistingLabels();
       SetupLabels();

//---- initialization done
   return(0);
  }

int deinit()   //added by Big Be
{
      ClearLabels();
      DeleteExistingLabels();
  return(0);}

int start()
{
     
      if (Comment2Y < 10)
      {
        SetupLabels();
        ClearLabels();
        DeleteExistingLabels();
        SetupLabels();// Make sure label settings are OK
      }
      else
      {
       ClearLabels();
      }
   
    Comment2Str = "Broker: " + TimeToStr(TimeCurrent(), TIME_DATE|TIME_SECONDS);
    CommentStr = "  Local: " + TimeToStr(TimeLocal(), TIME_DATE|TIME_SECONDS);

    if (myCorner > 1)
    {
       OutputComment2ToChart(CommentStr, CommentColor);
       OutputCommentToChart(Comment2Str, CommentColor);
    }
    else
    {
       OutputCommentToChart(CommentStr, CommentColor);
       OutputComment2ToChart(Comment2Str, CommentColor);
    }
      
    
      return(0);
  }

void ClearLabels()
{
   string mComment = " ";
   
   OutputCommentToChart( mComment, CommentColor);
   OutputComment2ToChart(mComment, CommentColor);
}

void DeleteBadLabels()
{
   int objLabels = ObjectsTotal(OBJ_LABEL);
   string objName;
   
   if (objLabels > 0)
   {
      for (int i = objLabels; i >= 0;i--)
      {
         objName = ObjectName(i);
         if (StringFind(objName,Object_ID, 0) >= 0)
         {
// Found 2 Play object, now check for wrong Symbol

           if (StringFind(objName,Symbol(), 0) < 0)
           {
             ObjectDelete(objName);
           }
         } 
      }
   }
}

void DeleteExistingLabels()
{
   int objLabels = ObjectsTotal(OBJ_LABEL);
   string objName;
   
   if (objLabels > 0)
   {
      for (int i = objLabels; i >= 0;i--)
      {
         objName = ObjectName(i);
         if (StringFind(objName,Object_ID, 0) >= 0)
         {
// Found 2 Play object, now check for Symbol

           if (StringFind(objName,Symbol(), 0) >= 0)
           {
             ObjectDelete(objName);
           }
         }  
      }
   }
}

void SetupLabels()
{
     Comment2Y = CommentY + CommentTxtSize + 4;
	  CommentLabel = Object_ID + Symbol() + "_Comment1";
	  Comment2Label = Object_ID + Symbol() + "_Comment2";
}


void OutputLabelToChart(string LabelName, int LabelY, int LabelTxtSize, int X_Offset, string LabelFont, color LabelColor, string LabelStr)
{

  	if(ObjectFind(LabelName) != 0)
   {
   ObjectCreate(LabelName, OBJ_LABEL, 0, 0, 0);
	ObjectSet(LabelName, OBJPROP_CORNER, myCorner);
	ObjectSet(LabelName, OBJPROP_XDISTANCE, X_Offset);
	ObjectSet(LabelName, OBJPROP_YDISTANCE, LabelY);
	}
	ObjectSetText(LabelName, LabelStr, LabelTxtSize, LabelFont, LabelColor);
}

void OutputComment2ToChart(string mComment, color mColor)
{
   OutputLabelToChart(Comment2Label, Comment2Y, CommentTxtSize, 10, "Arial", mColor, mComment);
}

void OutputCommentToChart(string mComment, color mColor )
{
   OutputLabelToChart(CommentLabel, CommentY, CommentTxtSize, 10, "Arial", mColor, mComment);
}

