//+-----------------------------------+
//|                    Local Time.mq4 |
//|                    FXProphets.biz |
//+-----------------------------------+

#property indicator_separate_window
#property indicator_minimum -1
#property indicator_maximum 1
extern int    NumBars     = 500;
extern int    Offset_LCL  = 5;
extern string Font_Type   = "Arial Black";
extern int    Font_Size   = 7;
extern color  Color_LCL   = Silver;
extern string Text1       = "Local";

int curr_hr, prev_hr, wintot;
int times[9][24];


int init() {

  for(int j=0; j<=23; j++) {
   
    times[8][j] = j + Offset_LCL;
  }
  for(int i=0; i<=8; i++) {
    for(j=0; j<=23; j++) {
      if (times[i][j] < 0)   times[i][j] += 24;
      if (times[i][j] > 24)  times[i][j] -= 24;
      if (i<8)  {
        if (times[i][j] < 0)   times[i][j] = 0;
        if (times[i][j] > 0)  times[i][j] = 0;
       } 
      if (times[i][j] > 24)  times[i][j] -= 24;
  } }    

  del_obj();

  return(0);
}
int deinit()  {
  del_obj();
  return(0);
}
int start()  {
  curr_hr = Hour();
  if (curr_hr != prev_hr)  {
    del_obj();
    process_times();
  }  
  prev_hr = curr_hr;
  return(0);
}
void process_times()  {
  wintot = WindowsTotal();
  for (int j=NumBars; j>=0; j--)  {
    string tim = TimeToStr(Time[j],TIME_DATE|TIME_SECONDS);
    if (StringSubstr(tim,13,6) == ":00:00")  {
      int hr = StrToInteger(StringSubstr(tim,11,2));
      for (int i=0; i<=8; i++)  {
        if (times[i][hr] > 0)  {
          string objname = "tmzn-" + j + "-" + i;
          string tmptxt  = times[i][hr];
          color  clr     = Black;
          switch(i) {
           
            case 8 : clr = Color_LCL; break;
          }
          ObjectCreate(objname,OBJ_TEXT,wintot-1,Time[j],9-i);
          ObjectSetText(objname,tmptxt,Font_Size,Font_Type,clr);
  } } } }
  for (i=0; i<=8; i++)  {
    objname = "tmzn-x-" + i;
    clr     = Black;
    switch(i) {
      
      case 8 : clr = Color_LCL; tmptxt = Text1; break;
    }
    ObjectCreate(objname,OBJ_TEXT,wintot-1,Time[0]+300*Period(),9-i);
    ObjectSetText(objname,tmptxt,Font_Size,Font_Type,clr);
  }  
  return(0);
} 
void del_obj()   {
  for(int i=ObjectsTotal()-1; i>=0; i--)  {
    string objname = ObjectName(i);
    if (ObjectType(objname) == OBJ_TEXT && StringSubstr(objname,0,4) == "tmzn")   ObjectDelete(objname);
  }  
  return(0);
}