Function BringFile
	Lparameters cFilePath,lcprogram,tcLocalFile
	*!*	modificare	ROARESTAURANT	v 1.0.0
	LOCAL lnTransferTotal
	lnTransferTotal = -1
	*!*	modificare	ROARESTAURANT	v 1.0.0	^
	If !Empty(tcLocalFile)
		lcLocalFile=tcLocalFile
	Else
		If At("_",lcprogram)#0
			lccurrentUR=Substr(lcprogram,At("_",lcprogram)+1)
			*	MESSAGEBOX(lccurrentUR)
		Else
			lccurrentUR=lcprogram
		Endif
		mypath=GetIniPath()
		mypath=Substr(mypath,1,Rat("\",mypath,1))

		Try
			Md mypath+lccurrentUR+"\"
		Catch To loex
		Endtry
		lcLocalFile=Alltrim(GetCurrentTempPath(lcprogram))
	Endif
	*	Do Form waitwindow Name frmwait
	polog.Log("Fisierul care trebuie descarcat este "+cFilePath,Program())
	If (Occurs('/', cFilePath)>0)
		*WAIT WINDOW AT 10,10 NOWAIT "Se downloadeaza fisierul..."
		polog.Log([Createobject("wwCodeUpdate")],Program())

		loUpdate=Createobject("wwCodeUpdate")
		*!*			loUpdate.cExeFile = lcprogram+".exe"

		If Isnull(loUpdate.oHTTP)
			loIP = loUpdate.CreateHTTPClient()
		Else
			loIP = loUpdate.oHTTP
		Endif

		loIP.lShowDialog = .T.

		loUrl = loIP.InternetCrackUrl(cFilePath)

		If Isnull(loUrl)
			Return .F.
		Endif

		myinihandler=Createobject("iniaccess")
		loIP.nhttpport=Val(loUrl.cPort)
		If loIP.HTTPConnect(loUrl.cServer,myinihandler.getUsername(),myinihandler.getPassword(),;
				IIF(Lower(loUrl.cProtocol)="https",.T.,.F.)) # 0
			loUpdate.SetError(loIP.cErrorMsg)
			Release myinihandler
			polog.Log([loIP.HTTPConnect(] + loUrl.cServer + [)#0],Program())
			Return .F.
		Else
			Release myinihandler

			lcTFile = lcLocalFile
			lcData = ""
			lnSize = 0
			polog.Log([loIP.HTTPGetEx(] + Trim(loUrl.cPath) + [)],Program())			
			If(loIP.HTTPGetEx( Trim(loUrl.cPath),@lcData,@lnSize,,lcTFile)=0)

				polog.Log([lnSize=] + alltrim(transform(m.lnSize)),Program())			
				TransferHandlerResult=lnSize
			else
				polog.Log([loIp.cerrormsg=] + alltrim(transf(loIp.nerror)) + ' ' + alltrim(transform(nvl(loIp.cerrormsg,''))),Program())			
				TransferHandlerResult=0
			endif
			polog.Log([lnSize=] + alltrim(transform(m.lnSize)),Program())						
			polog.Log([loIP.nContentSize=] + alltrim(transform(loIP.nContentSize)),Program())			
			If lnSize#loIP.nContentSize
				TransferHandlerResult=0
			Endif


		Endif



		*		TransferHandlerResult= DownLoadURL(cFilePath,cLocalFile,"FeedBack",1000,.T.)
		polog.Log("TransferHandlerResult = "+Alltrim(Transform(TransferHandlerResult)),Program())
	Else
		*WAIT WINDOW NOWAIT "Se copiaza fisierul..."
		*!*			If Left(cFilePath,1)="\"
		*!*				cFilePath=Right(cFilePath,Len(cFilePath)-1)
		*!*			Endif
		*!*			cFilePath=lcNetworkPath+cFilePath
		If(PathFileExists(cFilePath)=1)
			scomp=Set('comp')
			Set Compatible On
			nsize=Fsize(cFilePath)
			Set Compatible &scomp
			loProgressForm = Createobject("wwProgressForm")
			loProgressForm.SetCaption("Se descarcă actualizarea...")
			*!*				loProgressForm.ShowCancelButton()
			loProgressForm.Show()
			*!*				IF loProgressForm.lCancelled
			loProgressForm.SetDescription("S-au primit de la "+Justpath(cFilePath)+":" +Chr(13)+;
				"0 din "+Ltrim(Transform(nsize,"999,999,999"))+ " bytes")
			*!*			THIS.oProgressForm.SetDescription("Received from " + THIS.cServer + ":" +CHR(13) +;
			*!*					LTRIM( TRANSFORM(lnbytes,"999,999,999") ) + " of " +;
			*!*					LTRIM(TRANSFORM(THIS.nContentSize,"999,999,999"))+ " bytes")
			*!*			THIS.oProgressForm.SetProgress(lnbytes/THIS.nContentSize * 100)
			loProgressForm.SetProgress(0)
			loProgressForm.SetDescription("S-au primit de la "+Justpath(cFilePath)+":" +Chr(13)+;
				LTRIM(Transform(nsize*0.05,"999,999,999"))+" din "+Ltrim(Transform(nsize,"999,999,999"))+ " bytes")
			loProgressForm.SetProgress(5)
			TransferHandlerResult= CopyFile(cFilePath, lcLocalFile, .F.)
			loProgressForm.SetDescription("S-au primit de la "+Justpath(cFilePath)+":" +Chr(13)+;
				LTRIM(Transform(nsize,"999,999,999"))+" din "+Ltrim(Transform(nsize,"999,999,999"))+ " bytes")
			loProgressForm.SetProgress(100)
			loProgressForm = .F.
		Else
			*MESSAGEBOX("Update-ul nu a fost gasit la locatia XML-ului")
			polog.Log("A incercat cu CopyFile si nu a mers = ",Program())
			TransferHandlerResult=0
		Endif

	Endif
	*	frmwait.Release()
	*WAIT CLEAR
	If (TransferHandlerResult!=0 And TransferHandlerResult!=-1)
*!*	modificare	ROARESTAURANT	v 1.0.0
*!*			If gTransferTotal!=-1
		IF lnTransferTotal != -1
			If TransferHandlerResult=gTransferTotal
				lnTransferTotal = -1
*!*					gTransferTotal=-1
				Return .T.
			Else
				lnTransferTotal = -1
*!*					gTransferTotal=-1
				polog.Log("TransferHandlerresult != TransferTotal ",Program())
				Return .F.
			Endif
		Endif
*!*	modificare	ROARESTAURANT	v 1.0.0	^

		Return .T.
	Else
		If TransferHandlerResult=0
			polog.Log("TransferHandlerresult = 0",Program())
		Endif
		If TransferHandlerResult=-1
			polog.Log("TransferHandlerresult = -1",Program())
		Endif


		Return .F.
	Endif
Endfunc

Function StripXmlFile
	Lparameters cXmlString
	Return Strextract(Alltrim(cXmlString),"(",")",1)
Endfunc


Function FeedBack
	*  if this function returned with .f., downloading would terminate
	*  it is called after each 100 byte downloaded. (You can alter this value!)
	Lparameters tiAll, tiCount
	gTransferTotal=tiAll
	frmwait.label1.Caption = "Descărcare " + Alltrim(Str(tiCount/1000)) + " kb din " + Alltrim(Str(tiAll/1000)) + " kb"
	procent = (tiCount*100)/tiAll
	frmwait._progressbar1.Update(procent)

	If !gcmdCancelDownload
		Return .T.
	Else
		gcmdCancelDownload= .F.
		Return .F.
	Endif
Endfunc

Function CheckProcess
	Lparameters ProgramCheck

	ProgramtoCheck=Addbs(gcDirMare) + ProgramCheck + "\"+ProgramCheck + ".exe"
	ProgramProba=  Addbs(gcDirMare) + ProgramCheck + "\" + ProgramCheck + "Proba.exe"

	Local loex As Exception
	err=.F.
	If File("&ProgramtoCheck")
		Copy File &ProgramtoCheck To &ProgramProba
	Else
		Return .F.
	Endif


	Try
		Delete File &ProgramtoCheck
	Catch To loex
		If loex.ErrorNo=1705
			err= .T.
		Endif
	Endtry

	If err=.F.
		Copy File &ProgramProba To &ProgramtoCheck
		Delete File &ProgramProba
	Endif



	Return err
Endfunc
