IDE 1.0 problem with DS1307 lib

I try to convert DS1307 lib for IDE 1.0
Now no errors, I can setup time, but RTC dont start.
please help find error.
See attached files.

DS1307.h

#ifndef DS1307_h
#define DS1307_h
#include "Arduino.h"
#include "Wire.h"

#define DS1307_CTRL_ID B1101000
#define DS1307_SEC 0
#define DS1307_MIN 1
#define DS1307_HR 2
#define DS1307_DOW 3
#define DS1307_DATE 4
#define DS1307_MTH 5
#define DS1307_YR 6
#define DS1307_BASE_YR 2000

 // Define register bit masks
#define DS1307_CLOCKHALT B10000000
#define DS1307_LO_BCD  B00001111
#define DS1307_HI_BCD  B11110000
#define DS1307_HI_SEC  B01110000
#define DS1307_HI_MIN  B01110000
#define DS1307_HI_HR   B00110000
#define DS1307_LO_DOW  B00000111
#define DS1307_HI_DATE B00110000
#define DS1307_HI_MTH  B00110000
#define DS1307_HI_YR   B11110000

class DS1307

{

public:

     DS1307();

void get_RTC(int *rtc,boolean refresh);
int get_RTC(int c,boolean refresh);
void set_RTC(int c, int v);
void stop_RTC(void);
void start_RTC(void);



private:
byte rtc_bcd[7];

void read_RTC(void);
void save_RTC(void);

};

#endif

DS1307.cpp

#include "Arduino.h"
#include "DS1307.h"
#include "Wire.h"

DS1307::DS1307()

{
Wire.begin();
}


//-------PRIVATE
void DS1307::read_RTC(void)       //DS1307::read(void)
{ 
  // reset the resgiter pointer to zero
  Wire.beginTransmission(DS1307_CTRL_ID);  // use the Wire lib to connect to tho rtc
    Wire.write(0,DEC);                      // reset the resgiter pointer to zero
  Wire.endTransmission();

  // request the 7 bytes of data    (secs, min, hr, dow, date. mth, yr)
  Wire.requestFrom(DS1307_CTRL_ID, 7);
  for(int i=0; i<7; i++)
  {
    // store data in raw bcd format
    rtc_bcd[i]=Wire.read();
  }
}
//----------------
// update the data on the IC from the bcd formatted data in the buffer


void DS1307::save_RTC(void) //DS1307::save(void)
{
  Wire.beginTransmission(DS1307_CTRL_ID);
  Wire.write(0,DEC); // reset register pointer
  for(int i=0; i<7; i++)
  {
    Wire.write(rtc_bcd[i]);
  }
  Wire.endTransmission();
}


//------------PUBLIC-----------------------------------------------------------
void DS1307::get_RTC(int *rtc,boolean refresh)   // DS1307::get(int *rtc,boolean refresh) Aquire data from buffer and convert to int, refresh buffer if required
{
  if(refresh) read_RTC();
  for(int i=0;i<7;i++)  // cycle through each component, create array of data
  {
	rtc[i]=get_RTC(i, 0);
  }
}
//-------------------
int DS1307::get_RTC(int c,boolean refresh)
{
  if(refresh) read_RTC();
  int v=-1;

  switch(c)
  {
  case DS1307_SEC:
    v=(10*((rtc_bcd[DS1307_SEC] & DS1307_HI_SEC)>>4))+(rtc_bcd[DS1307_SEC] & DS1307_LO_BCD);
	break;
  case DS1307_MIN:
    v=(10*((rtc_bcd[DS1307_MIN] & DS1307_HI_MIN)>>4))+(rtc_bcd[DS1307_MIN] & DS1307_LO_BCD);
	break;
  case DS1307_HR:
    v=(10*((rtc_bcd[DS1307_HR] & DS1307_HI_HR)>>4))+(rtc_bcd[DS1307_HR] & DS1307_LO_BCD);
	break;
  case DS1307_DOW:
    v=rtc_bcd[DS1307_DOW] & DS1307_LO_DOW;
	break;
  case DS1307_DATE:
    v=(10*((rtc_bcd[DS1307_DATE] & DS1307_HI_DATE)>>4))+(rtc_bcd[DS1307_DATE] & DS1307_LO_BCD);
	break;
  case DS1307_MTH:
    v=(10*((rtc_bcd[DS1307_MTH] & DS1307_HI_MTH)>>4))+(rtc_bcd[DS1307_MTH] & DS1307_LO_BCD);
	break;
  case DS1307_YR:
    v=(10*((rtc_bcd[DS1307_YR] & DS1307_HI_YR)>>4))+(rtc_bcd[DS1307_YR] & DS1307_LO_BCD)+DS1307_BASE_YR;
	break;
  } // end switch

return v;
}
//-----------------------------

void DS1307::set_RTC(int c, int v)  //DS1307::set(int c, int v) Update buffer, then update the chip
{
  switch(c)
  {
  case DS1307_SEC:
    if(v<60 && v>-1)
    {
	//preserve existing clock state (running/stopped)
	int state=rtc_bcd[DS1307_SEC] & DS1307_CLOCKHALT;
	rtc_bcd[DS1307_SEC]=state | ((v / 10)<<4) + (v % 10);
    }
    break;
  case DS1307_MIN:
    if(v<60 && v>-1)
    {
	rtc_bcd[DS1307_MIN]=((v / 10)<<4) + (v % 10);
    }
    break;
  case DS1307_HR:
  // TODO : AM/PM  12HR/24HR
    if(v<24 && v>-1)
    {
	rtc_bcd[DS1307_HR]=((v / 10)<<4) + (v % 10);
    }
    break;
  case DS1307_DOW:
    if(v<8 && v>-1)
    {
	rtc_bcd[DS1307_DOW]=v;
    }
    break;
  case DS1307_DATE:
    if(v<31 && v>-1)
    {
	rtc_bcd[DS1307_DATE]=((v / 10)<<4) + (v % 10);
    }
    break;
  case DS1307_MTH:
    if(v<13 && v>-1)
    {
	rtc_bcd[DS1307_MTH]=((v / 10)<<4) + (v % 10);
    }
    break;
  case DS1307_YR:
    if(v<13 && v>-1)
    {
	rtc_bcd[DS1307_YR]=((v / 10)<<4) + (v % 10);
    }
    break;
  } // end switch
  save_RTC();
}
void DS1307::stop_RTC(void)         //DS1307::stop(void)
{
	// set the ClockHalt bit high to stop the rtc
	// this bit is part of the seconds byte
    rtc_bcd[DS1307_SEC]=rtc_bcd[DS1307_SEC] | DS1307_CLOCKHALT;
    save_RTC();



}
//---------------------
void DS1307::start_RTC(void)    //DS1307::start(void)
{
	// unset the ClockHalt bit to start the rtc
	// TODO : preserve existing seconds
    rtc_bcd[DS1307_SEC]=0;
	save_RTC();

}